CPU 加载平均规则 5 分钟
CPU Load average rule for 5 minutes
我们正在使用 Prometheus-Grafana。现在我们要为 CPU 5 分钟的平均负载设置警报。
我们有 60 台服务器,它们有不同的 CPU 内核,很少有机器有 1 核、2 核、6 核、8 核等
以下规则将给出加载 5 分钟的结果。但它不会区分机器是单核还是多核。
- name: alerting_rules
rules:
- alert: LoadAverage15m
expr: node_load5 >= 0.75
labels:
severity: major
annotations:
summary: "Instance {{ $labels.instance }} - high load average"
description: "{{ $labels.instance }} (measured by {{ $labels.job }}) has high load average ({{ $value }}) over 5 minutes."
我试过下面的规则,但还是不行:
- alert: LoadAverage5minutes
expr: node_load5/count(node_cpu{mode="idle"}) without (cpu,mode) >= 0.95
for: 5m
labels:
severity: warning
annotations:
summary: "Load average is high for 5 minutes (instance {{ $labels.instance }})"
description: "Load is high \n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
你能帮我看看我的规则需要做哪些更改才能生效吗?
谢谢。
以下表达式应该有效:
expr: node_load5 / count by (instance, job) (node_cpu_seconds_total{mode="idle"}) >= 0.95
当特定 instance
上过去 5 分钟的平均 CPU 使用率超过 95% 时,以下查询会发出警报:
avg(
sum(
rate(node_cpu_seconds_total{mode!="idle"}[5m])
) without (mode)
) without (cpu) > 0.95
可能有些应用程序无法扩展到多个 CPU 内核。如果 instance
包含多个 CPU 核心,则上述查询不会注意到此类应用程序。例如,如果一个应用程序只能使用一个 CPU 核心,并且它在具有两个 CPU 核心的 instance
上运行,那么上面的查询将不会触发,因为平均 CPU 使用率不超过 50%。对于这种情况,建议使用以下警报查询:
max(
sum(
rate(node_cpu_seconds_total{mode!="idle"}[5m])
) without (mode)
) without (cpu) > 0.95
当至少一个 CPU 核心在过去 5 分钟内在特定 instance
上加载超过 95% 时,此查询会发出警报。
我们正在使用 Prometheus-Grafana。现在我们要为 CPU 5 分钟的平均负载设置警报。
我们有 60 台服务器,它们有不同的 CPU 内核,很少有机器有 1 核、2 核、6 核、8 核等
以下规则将给出加载 5 分钟的结果。但它不会区分机器是单核还是多核。
- name: alerting_rules
rules:
- alert: LoadAverage15m
expr: node_load5 >= 0.75
labels:
severity: major
annotations:
summary: "Instance {{ $labels.instance }} - high load average"
description: "{{ $labels.instance }} (measured by {{ $labels.job }}) has high load average ({{ $value }}) over 5 minutes."
我试过下面的规则,但还是不行:
- alert: LoadAverage5minutes
expr: node_load5/count(node_cpu{mode="idle"}) without (cpu,mode) >= 0.95
for: 5m
labels:
severity: warning
annotations:
summary: "Load average is high for 5 minutes (instance {{ $labels.instance }})"
description: "Load is high \n VALUE = {{ $value }}\n LABELS: {{ $labels }}"
你能帮我看看我的规则需要做哪些更改才能生效吗?
谢谢。
以下表达式应该有效:
expr: node_load5 / count by (instance, job) (node_cpu_seconds_total{mode="idle"}) >= 0.95
当特定 instance
上过去 5 分钟的平均 CPU 使用率超过 95% 时,以下查询会发出警报:
avg(
sum(
rate(node_cpu_seconds_total{mode!="idle"}[5m])
) without (mode)
) without (cpu) > 0.95
可能有些应用程序无法扩展到多个 CPU 内核。如果 instance
包含多个 CPU 核心,则上述查询不会注意到此类应用程序。例如,如果一个应用程序只能使用一个 CPU 核心,并且它在具有两个 CPU 核心的 instance
上运行,那么上面的查询将不会触发,因为平均 CPU 使用率不超过 50%。对于这种情况,建议使用以下警报查询:
max(
sum(
rate(node_cpu_seconds_total{mode!="idle"}[5m])
) without (mode)
) without (cpu) > 0.95
当至少一个 CPU 核心在过去 5 分钟内在特定 instance
上加载超过 95% 时,此查询会发出警报。