Dashboard Queries
Overview
Datadog Query Language (DQL) lets you write custom queries to:
- Filter metrics by tags
- Aggregate data over time
- Compare baseline vs load test
- Alert on anomalies
- Build custom dashboards
Query Basics
Basic Syntax
Example Queries
1. Average Response Time by Endpoint
Result:
2. Error Rate Over Time
Result:
3. P95 Latency by Service
Result:
4. Database Query Latency Distribution
Result:
5. Request Count During Load Test
Result shows total requests produced by test
Common Dashboard Queries for Load Tests
System-Level Metrics
# CPU Usage
avg:system.cpu.user{env:staging}
# Memory Usage
avg:system.mem.pct_usable{env:staging}
# Disk I/O
avg:system.io.reads{env:staging}
avg:system.io.writes{env:staging}
Application-Level Metrics
# Request Rate
sum:trace.requests{env:staging}
# Error Rate
sum:trace.errors{env:staging} / sum:trace.requests{env:staging}
# Response Time
p50:trace.http.request.duration{env:staging}
p95:trace.http.request.duration{env:staging}
p99:trace.http.request.duration{env:staging}
Database Metrics
# Query Rate
sum:trace.sql.queries{env:staging}
# Slow Queries
sum:trace.sql.queries{env:staging, duration:>1000ms}
# Connection Pool Usage
avg:db.pool.usage{env:staging}
Filtering Techniques
By Environment
By Test Name
By Service
By Endpoint
Combined Filters
Comparison Queries
Compare Baseline vs Load Test
# During load test
avg:trace.http.request.duration{test:Lab1} # = 250ms
# Baseline (no load)
avg:trace.http.request.duration{env:staging, test:baseline} # = 150ms
# Difference = 100ms (67% increase)
Detect Regressions
Building Custom Dashboards
Step 1: Create Dashboard
Step 2: Add Widgets
Widget Type: Timeseries
Metric: p95:trace.http.request.duration{env:staging}
Title: "API P95 Latency During Load Test"
Step 3: Add Multiple Queries
Widget: "System Health"
├─ CPU: avg:system.cpu.user{env:staging}
├─ Memory: avg:system.mem.pct_usable{env:staging}
├─ Disk I/O: sum:system.io{env:staging}
└─ Network: avg:system.net.bytes{env:staging}
Step 4: Tag Dashboard
Troubleshooting Queries
Query Returns No Data
❌ metric_name{env:staging}
✅ Check if metric exists: avg:metric_name
✅ Check tags: metric_name{env:*}
Query Returns Wrong Data
❌ Wrong filter: metric_name{test:Lab1}
✅ Verify exact tag value: metric_name{test_name:Lab1_BasicHttp}
Query Syntax Error
Key Takeaways
- Queries filter and aggregate metrics
- Tags enable precise filtering
- Baselines enable comparison
- Dashboards consolidate multiple queries
- Regular expressions enable pattern matching
Navigation
← Previous: Traces, Operations & Spans
→ Next: Load Test Analysis
↑ Up: Documentation Index