You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Swarm单副本服务出现多余容器的Prometheus告警配置问题

空服务名告警触发原因

  • 当前告警规则未对指标做标签过滤,container_last_seen会采集宿主机上所有容器的指标,包括非Swarm服务创建的容器(比如手动docker run启动的容器、节点上运行的系统组件容器),这类容器没有container_label_com_docker_swarm_service_name标签,分组聚合时会被统一归到服务名为空的分组下,只要这类容器数量超过1就会触发告警。
  • 部分已销毁的容器指标可能还在Prometheus中留存未过期,也会被统计到空服务名分组的计数中。

修复方案

在告警表达式中添加标签过滤规则,直接排除没有服务名标签的指标即可,修改后的告警规则如下:

- alert: too_many_containers_per_service
  expr: count(container_last_seen{container_label_com_docker_swarm_service_name!=""}) by (container_label_com_docker_swarm_service_name) > 1
  for: 2m
  labels:
    severity: warning
  annotations:
    description: Too many containers of '{{ $labels.container_label_com_docker_swarm_service_name }}' are running simultaneously!
    summary: Containers duplicate alert for service '{{ $labels.container_label_com_docker_swarm_service_name }}'

如果需要进一步排除已经停止的旧容器残留指标,可以增加时间过滤,仅统计最近5分钟活跃的容器:

expr: count(container_last_seen{container_label_com_docker_swarm_service_name!="", container_last_seen > time() - 300}) by (container_label_com_docker_swarm_service_name) > 1

内容的提问来源于stack exchange,提问作者Pepsko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:06:03