CentOS Overlay监控与告警实战指南
一 明确监控对象与分层
- Overlay网络(容器跨主机通信):关注容器网络I/O、丢包/重传、跨主机连通性与服务发现健康度。
- OverlayFS(容器镜像/分层存储):关注合并层读写性能、底层磁盘I/O与空间、inode使用、文件变更审计。
- 主机与内核:关注CPU/内存/磁盘/网络资源瓶颈,以及内核与Docker/容器运行时日志。
二 快速落地方案 Prometheus Grafana Alertmanager
- 组件与目标
- Node Exporter:采集主机指标(CPU、内存、磁盘、网络),端口9100。
- cAdvisor:采集容器资源与网络I/O,端口8080。
- Prometheus:时序数据库与告警评估,端口9090。
- Alertmanager:告警去重、分组、静默与路由,端口9093。
- Grafana:可视化与仪表盘,端口3000。
- 安装与启动(示例)
- 安装与开机自启
- yum 安装:Prometheus、Grafana、Node Exporter、cAdvisor(若仓库无包,可用官方二进制或容器方式部署)。
- systemctl enable --now prometheus grafana-server node_exporter cAdvisor
- 访问控制台
- Prometheus:http://:9090
- Grafana:http://:3000(默认账号/密码:admin/admin)
- Prometheus抓取配置示例 prometheus.yml
- scrape_configs:
- job_name: ‘node’
static_configs:
- targets: [‘localhost:9100’]
- job_name: ‘cadvisor’
static_configs:
- targets: [‘localhost:8080’]
- Alertmanager邮件告警示例 alertmanager.yml
- route:
receiver: ‘email’
receivers:
- name: ‘email’
email_configs:
- to: ‘ops@example.com’
from: ‘alertmanager@example.com’
smarthost: ‘smtp.example.com:587’
auth_username: ‘alertmanager’
auth_password: ‘******’
require_tls: true
- 常用告警规则示例(Prometheus规则文件)
- groups:
- name: overlay.rules
rules:
- alert: HostHighCPU
expr: 100 - (avg by(instance)(irate(node_cpu_seconds_total{mode=“idle”}[5m]))) > 80
for: 5m
labels: severity=critical
annotations:
summary: High CPU on {{ $labels.instance }}
description: CPU usage > 80% for 5m
- alert: NodeDiskUsageHigh
expr: (1 - node_filesystem_avail_bytes{fstype!~“tmpfs|overlay”} / node_filesystem_size_bytes{fstype!~“tmpfs|overlay”}) > 0.85
for: 10m
labels: severity=warning
annotations:
summary: Disk usage high on {{ $labels.instance }}: {{ $value | humanizePercentage }}
- alert: ContainerNetworkReceiveErrors
expr: rate(container_network_receive_errors_total[5m]) > 0
for: 5m
labels: severity=warning
annotations:
summary: Container receive errors on {{ $labels.instance }} {{ $labels.name }}
- alert: OverlayFSUtilizationHigh
expr: (1 - node_filesystem_avail_bytes{fstype=“overlay”} / node_filesystem_size_bytes{fstype=“overlay”}) > 0.80
for: 10m
labels: severity=warning
annotations:
summary: OverlayFS utilization high on {{ $labels.instance }}: {{ $value | humanizePercentage }}
- Grafana可视化
- 添加数据源:Prometheus(URL:http://localhost:9090)
- 导入容器/主机大盘(如容器监控常用面板ID:193),并按业务补充Overlay相关图表。
三 容器与网络层的即时观测命令
- 容器资源与网络
- docker stats(实时查看容器CPU、内存、网络I/O)
- cAdvisor Web(http://:8080,查看容器与文件系统指标)
- 网络流量与连通性
- iftop -i <overlay或物理接口>(按带宽排序,定位高占用对端)
- nload(接口入/出流量可视化)
- tcpdump -i -nn(抓包分析异常流量/重传)
- iptables -L -v -n / nft list ruleset(查看规则命中字节/包计数,定位策略或异常流量)
- 主机与存储
- top/htop、vmstat、iostat -x(识别CPU/内存/磁盘瓶颈)
- df -h、du -sh(检查OverlayFS与底层磁盘空间)
- journalctl -u docker(容器运行时日志)与系统日志(/var/log/messages、/var/log/secure)
四 OverlayFS专项监控与审计
- 文件系统变更审计
- auditd + inotify
- 安装:yum install -y audit inotify-tools
- 审计规则:auditctl -w /var/lib/docker/overlay2 -p wa -k overlay_monitor
- 查询:ausearch -k overlay_monitor 或 journalctl -k | grep overlay_monitor
- 变更事件观察
- inotifywait -m -r -e create,delete,modify,moved_to,moved_from --format ‘%w%f %e’ /var/lib/docker/overlay2
- 性能与健康
- iostat -x(关注%util、await、svctm)
- df/du(关注可用空间与inode)
- 结合 Prometheus Node Exporter 的 node_filesystem_* 指标对 fstype=“overlay” 做阈值告警
五 告警落地与运维要点
- 告警分组与抑制
- 按服务/实例/严重级别分组,避免告警风暴;对父子告警设置抑制(如节点宕机抑制其上的容器告警)。
- 阈值与持续时间
- 先宽松后收敛:如CPU>80%持续5m、磁盘>85%持续10m再告警;高峰期可适当上调。
- 通知策略
- 邮件、企业微信/钉钉/Slack Webhook、PagerDuty等;不同严重级别走不同路由与频率限制。
- 验证与演练
- 定期故障演练(断网/磁盘满/高负载)验证告警链路;检查静默/维护窗口策略是否生效。
- 安全与合规
- 暴露抓取端点时限制来源IP;启用TLS/认证;避免将敏感接口(如2375)对公网开放。