来自 cAdvisor 容器的 AlertManager 通知
Posted
技术标签:
【中文标题】来自 cAdvisor 容器的 AlertManager 通知【英文标题】:AlertManager notification from cAdvisor container 【发布时间】:2021-10-21 01:17:03 【问题描述】:我正在使用常见的监控工具(Prometheus、cAdvisor、AlertManager),我遇到了这样一个问题,即其中一台服务器每 30 分钟触发一次containerCpuUsage
,但不幸的是我不知道这是哪个容器(我是猜测这是 cAdvisor 本身,但它的 cpu 使用率真的很低!!)所以我的第一个问题是,有没有办法告诉 AlertManager - 基于 prometheus 规则 - 也发送容器名称?
(cAdvisor 本身使用的 CPU 比其他容器多)
cadvisor-rule.yaml
- alert: ContainerCpuUsage
expr: (sum(rate(container_cpu_usage_seconds_total[3m])) BY (instance, name) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "Container CPU usage (instance $labels.instance )"
description: "Container CPU usage is above 80%\n VALUE = $value \n LABELS: $labels "
我尝试了 $labels.name
和 $labels.job
,但没有成功。
所以我们称实例名称为A,然后里面有一个nginx & cadvisor 容器。监控工具正在另一个实例上运行,我怎样才能将容器名称放入规则标签中,或者是否有其他方法!
【问题讨论】:
【参考方案1】:在 cAdvisor 中声明容器本身有时会占用更多 CPU。
# cAdvisor can sometimes consume a lot of CPU, so this alert will fire constantly.
# If you want to exclude it from this alert, exclude the serie having an empty name: container_cpu_usage_seconds_totalname!=""
就我而言,我使用 --name=cadvisor
启动 cAdvisor 容器,并添加以下规则表达式:
expr: (sum(rate(container_cpu_usage_seconds_totalname!="cadvisor"[3m])) BY (instance, name) * 100) > 80
【讨论】:
以上是关于来自 cAdvisor 容器的 AlertManager 通知的主要内容,如果未能解决你的问题,请参考以下文章