来自 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 通知的主要内容,如果未能解决你的问题,请参考以下文章

Promethues如何监控容器

容器监控:cAdvisor

使用 cAdvisor 和 Prometheus 监控未命名容器

你必须知道的容器监控 cAdvisor

cAdvisor 容器多核 CPU 使用率

docker:十分钟构建容器监控系统cAdvisor+InfluxDB+Grafana