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

如何在Grafana中监控Docker容器及服务器的CPU/磁盘/内存用量并解决告警问题

容器磁盘用量监控配置

前置检查:确认cAdvisor采集配置

cAdvisor采集容器磁盘指标需要挂载宿主机Docker存储和磁盘目录,启动参数需要包含以下挂载项:

-v /var/lib/docker:/var/lib/docker:ro
-v /dev/disk:/dev/disk:ro

若缺少以上挂载,会导致容器磁盘指标无法正常采集。

磁盘使用率计算PromQL

cAdvisor暴露的磁盘相关原生指标如下:

  • container_fs_usage_bytes:容器文件系统已使用字节数
  • container_fs_limit_bytes:容器对应文件系统总容量字节数

容器磁盘使用率查询语句(已过滤宿主机整体统计、适配你当前的Swarm标签):

sum(container_fs_usage_bytes{id!=""}) by (container_label_com_docker_swarm_task_name, container_label_com_docker_swarm_node_id, name) / sum(container_fs_limit_bytes{id!=""}) by (container_label_com_docker_swarm_task_name, container_label_com_docker_swarm_node_id, name) * 100

告警规则配置示例

使用率超过80%持续5分钟触发告警的规则配置:

groups:
- name: container_disk_alerts
  rules:
  - alert: High_Container_Disk_Usage
    expr: sum(container_fs_usage_bytes{id!=""}) by (container_label_com_docker_swarm_task_name, container_label_com_docker_swarm_node_id) / sum(container_fs_limit_bytes{id!=""}) by (container_label_com_docker_swarm_task_name, container_label_com_docker_swarm_node_id) * 100 > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: 容器磁盘使用率过高 节点 {{ $labels.container_label_com_docker_swarm_node_id }} 任务 {{ $labels.container_label_com_docker_swarm_task_name }}
      description: 容器磁盘使用率已达 {{ $value | humanizePercentage }}
Gmail告警仅部分接收修复方案

按优先级依次排查以下配置:

1. 检查Gmail发件权限配置

必须开启谷歌账号两步验证后生成应用密码,不可直接使用账号登录密码,Alertmanager的smtp配置参考如下:

global:
  smtp_smarthost: smtp.gmail.com:587
  smtp_from: 你的发件邮箱@gmail.com
  smtp_auth_username: 你的发件邮箱@gmail.com
  smtp_auth_password: 你生成的谷歌应用密码
  smtp_require_tls: true

2. 检查Alertmanager路由分组配置

若配置了相同标签的告警分组,会导致同组告警合并发送,你看到的部分告警实际是合并后的结果:

  • 检查route下的group_by配置,若按alertname、container_label_com_docker_swarm_node_id分组,同节点同类型的告警会合并为一封邮件发送
  • 检查group_interval参数,若配置时长超过10分钟,同组内新触发的告警会等待周期结束后才会发送
  • 检查inhibit_rules抑制规则,是否配置了高优先级告警抑制低优先级同类型告警的规则,导致低优先级告警被拦截

3. 检查Prometheus告警规则配置

从你提供的告警内容看,存在内存占用812.9MB的告警记录,若你的High_Memory_Usage_1g规则阈值为1GB,该告警实际未达到触发条件:

  • 确认规则表达式单位是否正确,1GB的正确写法为1*1024*1024*1024
  • 确认for参数配置,若设置为10m,需要指标持续达标10分钟才会推送告警,未到时长的告警处于pending状态不会发送
  • 到Prometheus控制台查询未触发告警的容器对应指标是否正常采集,排除cAdvisor采集异常的问题

4. 日志与邮箱过滤排查

  • 查看Alertmanager运行日志,是否存在smtp连接报错、发件被拒绝的日志,根据报错内容调整网络或权限配置
  • 检查Gmail的垃圾邮件箱、推广/社交标签页,告警邮件可能被谷歌自动分类未进入收件箱
  • 查看谷歌账号安全中心的登录记录,确认Alertmanager的发件请求未被谷歌安全拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:30:03