A complete guide to using GraphQL datasets and Custom Dashboards for tunnel health, traffic volume, and DDoS mitigation monitoring
Cloudflare Dashboard
Analytics → Custom Dashboards → Create Dashboard
Manually define each line/bar/segment
Automatically create series from a dimension
magicTransitTunnelHealthChecksAdaptiveGroups
Monitor tunnel health check results across all Cloudflare data centers. Track tunnel availability, degradation, and failures.
avg.tunnelState
tunnelName — Tunnel identifieredgeColoName — Cloudflare colodatetime — Time bucket{
viewer {
accounts(filter: {accountTag: $accountTag}) {
magicTransitTunnelHealthChecksAdaptiveGroups(
filter: {
datetime_geq: "2026-05-14T12:00:00Z",
datetime_leq: "2026-05-14T13:00:00Z"
}
) {
dimensions { tunnelName edgeColoName datetime }
avg { tunnelState }
}
}
}
}
tunnelState
magicTransitTunnelTrafficAdaptiveGroups
Monitor tunnel bandwidth and traffic volume. Track ingress and egress traffic patterns over time.
avg.bitRateFiveMinutes + datetimeFiveMinutesavg.bitRateHour + datetimeHour
tunnelName, directiondatetimeFiveMinutes, datetimeHouredgePopName (optional){
viewer {
accounts(filter: {accountTag: $accountTag}) {
magicTransitTunnelTrafficAdaptiveGroups(
filter: {
datetimeFiveMinutes_geq: "2026-05-14T12:00:00Z",
datetimeFiveMinutes_leq: "2026-05-14T13:00:00Z"
}
) {
dimensions { tunnelName direction datetimeFiveMinutes }
avg { bitRateFiveMinutes }
}
}
}
}
Analytics → Custom Dashboards → Create Dashboard
Click Add Chart button
The Network Health page uses complex OR filters to capture bi-directional tunnel traffic:
"OR": [
{"ingressTunnelName_in": ["tunnel1", ...]},
{"egressTunnelName_in": ["tunnel1", ...]},
{"egressTunnelID_in": ["id1", ...]},
{"ingressTunnelID_in": ["id1", ...]}
]
Why? Captures traffic where tunnels appear as EITHER source OR destination.
direction dimension filterNetwork Health page queries TWO datasets simultaneously (health + traffic). In Custom Dashboards:
All filtered to same tunnel names and time range
avg.tunnelState metricbitRateFiveMinutes → datetimeFiveMinutesbitRateHour → datetimeHour