PromQL 是 Prometheus 的核心功能之一,用于从时间序列数据中提取指标。以下是关键概念和使用示例:
基础语法
- 指标名称:如
http_requests_total
- 标签选择器:
{job="api_server", instance="127.0.0.1"}
- 运算符:
=, !=, >, <, >=, <=, ==, in, not in
- 聚合函数:
avg(), max(), min(), sum(), count()
💡 提示:使用 describe
查看所有可用指标,instant_query
获取实时数据。
常用查询示例
获取当前CPU使用率
100() - (node_cpu_seconds_total{mode="idle"} - node_cpu_seconds_total{mode="idle"}[5m]) / (node_cpu_seconds_total{mode="idle"} - node_cpu_seconds_total{mode="idle"}[5m]) * 100
计算HTTP请求成功率
sum(rate(http_requests_total{status="200"}[5m])) / sum(rate(http_requests_total{job="my_app"}[5m]))
告警规则模板
groups: - name: 服务器监控 rules: - alert: 高CPU负载 expr: (100() - avg by (instance) (node_cpu_seconds_total{mode="idle"})) > 80 for: 5m labels: severity: warning annotations: summary: "{{$labels.instance}} CPU负载过高" description: "当前CPU使用率已超过80%"