PromQL 是 Prometheus 的核心功能之一,用于从时间序列数据中提取指标。以下是关键概念和使用示例:

基础语法

  • 指标名称:如 http_requests_total
  • 标签选择器{job="api_server", instance="127.0.0.1"}
  • 运算符=, !=, >, <, >=, <=, ==, in, not in
  • 聚合函数avg(), max(), min(), sum(), count()

💡 提示:使用 describe 查看所有可用指标,instant_query 获取实时数据。

常用查询示例

  1. 获取当前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

  2. 计算HTTP请求成功率
    sum(rate(http_requests_total{status="200"}[5m])) / sum(rate(http_requests_total{job="my_app"}[5m]))

  3. 告警规则模板

    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%"
    

学习资源

Prometheus_Query