PromQL (Prometheus Query Language) is a functional, domain-specific language for querying time-series data stored in Prometheus. Unlike SQL, which operates on tabular rows, PromQL operates on sets of time series identified by metric names and label matchers. It returns either instant vectors — one value per series at one timestamp — or range vectors — a sequence of values per series over a time window. Every Grafana panel, every alerting rule, and every recording rule is written in PromQL. Mastering it is the difference between reading a generic template dashboard and building dashboards that answer the precise questions your system requires.
Analogy🏏Cricket
🏏 Think of it like cricket: During India's 2023 World Cup final against Australia, the team management tracked three distinct data streams simultaneously to understand match performance. The scoreboard showed run rate, current score, and required run rate — aggregated numbers updated every over, equivalent to metrics. The commentary and match notes recorded each delivery's outcome — Rohit Sharma edged a yorker from Hazlewood at the 12th over, first ball — equivalent to logs. The ball-tracking DRS system traced the exact path of each delivery from Bumrah's hand through the air to the stumps, showing the full journey of that dismissal — equivalent to traces. Just as the scoreboard alone cannot explain why the run rate collapsed (you need the logs to see specific wicket events and traces to follow the pressure chain from bowler to batter to fielder), metrics alone cannot explain why your API latency spiked — you need logs for individual request events and traces to follow the request across services. The insight is that each pillar answers a different question: metrics give magnitude, logs give events, and traces give causality — and you need all three to diagnose a complex failure.