阿里云Prometheus监控中常用的PromQL示例

更新时间:

概述

阿里云Prometheus监控创建报警规则时,需要设置告警表达式,本文列举了部分阿里云Prometheus监控中常用的PromQL。

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

Prometheus监控中常用的PromQL示例如下:

  • 每个Pod的CPU使用率,常用于告警。
    100 * (sum(rate(container_cpu_usage_seconds_total[1m])) by (pod_name) / sum(label_replace(kube_pod_container_resource_limits_cpu_cores, "pod_name", "$1", "pod", "(.*)")) by (pod_name))
  • 每个Pod的内存使用率,常用于告警。
    100 * (sum(container_memory_working_set_bytes) by (pod_name) / sum(label_replace(kube_pod_container_resource_limits_memory_bytes, "pod_name", "$1", "pod", "(.*)")) by (pod_name))
  • CPU使用率,计算方法为内存使用量/Limit值。报警条件建议设置为3分钟平均值大于等于90报警。
    max by(pod_name) (rate(container_cpu_usage_seconds_total{namespace="dev"}[1m])) / max by(pod_name) (container_spec_cpu_quota{namespace="dev"} / 100000) * 100
  • 内存使用率,计算方法为内存使用量/Limit值。报警条件建议设置为3分钟平均值大于等于90报警。
    max by(pod_name)(container_memory_rss{namespace="dev"})  / max by(pod_name) (container_spec_memory_limit_bytes{namespace="dev"}) * 100 != +inf
  • 容器入带宽(单位KB)。
    sum by (pod_name)(irate(container_network_receive_bytes_total{namespace="dev"}[1m])) / 1024
  • 容器出带宽(单位KB)。
    sum by (pod_name)(irate(container_network_transmit_bytes_total{namespace="dev"}[1m])) / 1024
  • Pod重启次数。
    sum (increase (kube_pod_container_status_restarts_total{}[1m])) by (namespace,pod) >0
  • 内存大于8GB的Pod。
    (sum (container_memory_working_set_bytes{id!="/"})by (pod_name,container_name) /1024/1024/1024)>8
  • 查看Node各个节点根分区的磁盘使用率。
    100 - ((node_filesystem_avail_bytes{mountpoint="/"} * 100) / node_filesystem_size_bytes {mountpoint="/"})
  • 查看Pod状态。
    sum (kube_pod_status_phase{phase!="Running"}) by (pod,phase)

适用于

  • 应用实时监控ARMS
  • Prometheus监控