PromQL (Prometheus Query Language) is a query language for querying and analyzing time series data in Prometheus.

Why Learn PromQL?#

Use CaseDescription
DashboardsVisualize data in Grafana panels
AlertingWrite condition-based automatic alert rules
AnalysisAnalyze root causes with ad-hoc queries
Recording RulesOptimize performance by pre-computing complex queries

Learning Path#

Fundamentals (1 hour)#

  1. Basic Syntax - Selectors, label matching, time ranges
  2. Aggregation Operators - sum, avg, count, topk, by/without

Practical Application (2 hours)#

  1. rate and increase - Core concepts for Counter metrics
  2. histogram_quantile - Calculate P50/P95/P99 percentiles

Advanced (1 hour)#

  1. Recording Rules - Pre-compute complex queries
  2. Alerting Rules - Write alert rules

Quick Reference#

Commonly Used Functions#

FunctionPurposeExample
rate()Per-second rate of Counterrate(http_requests_total[5m])
increase()Total increase of Counterincrease(http_requests_total[1h])
sum()Sumsum(rate(http_requests_total[5m]))
avg()Averageavg(node_cpu_seconds_total)
histogram_quantile()Percentilehistogram_quantile(0.99, rate(...[5m]))

Common Patterns#

# Error rate
sum(rate(http_requests_total{status=~"5.."}[5m]))
/ sum(rate(http_requests_total[5m]))

# P99 response time
histogram_quantile(0.99,
  sum(rate(http_request_duration_seconds_bucket[5m])) by (le)
)

# CPU usage
100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

Learning Path#

graph LR
    A["Basic Syntax"] --> B["Aggregation Operators"]
    B --> C["rate/increase"]
    C --> D["histogram_quantile"]
    D --> E["Recording Rules"]
    E --> F["Alerting Rules"]

    style A fill:#e3f2fd
    style F fill:#c8e6c9