Monad Pipeline Mastery
Monad is an ETL (Extract-Transform-Load) pipeline platform that sits between log sources and SIEMs. Master transforms, routing logic, and cost optimization to reduce Sentinel ingestion by 50-70%.
Why This Matters
Management is betting on Monad for QRadar → Sentinel migration. Your role:
-
Design transform logic for ISE, FTD, ASA log routing
-
Reduce Sentinel costs via intelligent filtering
-
Maintain compliance with S3 archival
-
Enable MITRE ATT&CK tagging for threat hunting
Quick Reference
Environment Setup
# Load credentials (adjust path for your setup)
dsource d000 lab/app
# Verify
echo "Org: $MONAD_ORG_ID"
monad_summary
Essential Commands
# List pipelines
monad_pipelines | jq '.pipelines[] | {name, enabled}'
# List available transform types
monad_transform_types | jq '.[].type_id'
# View pipeline with transforms
monad_pipeline_v2 <pipeline-id> | jq '.nodes'
# Check syslog endpoint
echo "${PIPELINE_ID}.l4.monad.com:6514"
Curriculum
| Module | Description | Priority |
|---|---|---|
Pipeline structure, nodes, edges, data flow |
Core |
|
All 12 transform types with use cases |
Core |
|
Complex routing with jq expressions |
Critical |
|
UI-based transforms using GJSON queries |
Core |
|
CHLA-specific log routing for Sentinel/S3 |
Critical |
|
Practical exercises with synthetic logs |
Practice |
Architecture Overview
┌─────────────┐
│ Log Source │
│ (ISE, FTD) │
└──────┬──────┘
│ Syslog/API
▼
┌──────────────────────────────────────────────────────────┐
│ MONAD PIPELINE │
│ ┌─────────┐ ┌────────────┐ ┌─────────────────┐ │
│ │ INPUT │───▶│ TRANSFORMS │───▶│ OUTPUT │ │
│ │ Syslog │ │ jq/drop/ │ │ Sentinel or S3 │ │
│ │ HTTP │ │ rename │ │ │ │
│ └─────────┘ └────────────┘ └─────────────────┘ │
└──────────────────────────────────────────────────────────┘
│
┌────────────┴────────────┐
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Sentinel │ │ S3 │
│ (Critical) │ │ (Archive) │
└─────────────┘ └─────────────┘
Decision Matrix: What Goes Where
| Log Type | Examples | Destination | MITRE |
|---|---|---|---|
Auth Failures |
ISE RADIUS reject, VPN auth fail |
Sentinel |
T1078 |
Policy Violations |
ISE posture fail, FTD deny |
Sentinel |
T1190 |
Admin Actions |
TACACS commands, config changes |
Sentinel |
T1059 |
Threat Events |
FTD intrusion, malware detect |
Sentinel |
T1071 |
Successful Auth |
ISE pass, VPN connect |
S3 Archive |
- |
Health Checks |
Keepalives, heartbeats |
S3 Archive |
- |
Flow Logs |
FTD allow, permit |
S3 Archive |
- |
Transform Types Quick Reference
| Type | Use Case | Example |
|---|---|---|
|
Filter out low-value logs |
Drop where severity="info" |
|
Tag logs for routing |
Add destination="sentinel" |
|
Normalize field names |
src_ip → source.ip |
|
Complex routing logic |
MITRE ATT&CK tagging |
|
Timestamp normalization |
epoch → ISO8601 |
|
Flatten nested JSON |
Normalize deep structures |
Daily Workflow
1. Check Pipeline Health
monad_summary
monad_logs_pipelines | jq '.logs | length'
2. View Transform Logic
monad_pipeline_v2 <id> | jq '.nodes[] | select(.component_type=="transform")'
3. Test with Synthetic Logs
# Send test syslog message
./examples/monad/testing/synthetic-logs.sh <pipeline-id> 1
4. Monitor Output
# Check if logs are flowing
monad_logs_pipeline <id> | jq '.logs[-5:]'
Related Skills
-
Regex Mastery - For log parsing
-
jq Reference - For transforms
-
jq Data Engineering - Advanced patterns