最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux Docker 如何实施容器监控与告警
时间:2026-07-06 09:38:53 编辑:袖梨 来源:一聚教程网
Linux Docker容器监控与告警实战指南

一 监控方案选型与总体架构
- 快速临时查看:使用 docker stats,可实时查看容器的 CPU、内存、网络 I/O 等,但不具备历史与复杂分析能力。适合临时排障与单机巡检。
- 开源可观测平台:以 Prometheus + cAdvisor + Alertmanager + Grafana 为核心,覆盖容器 CPU、内存、磁盘 I/O、网络 等,支持 PromQL 查询、历史趋势与多渠道告警,适合生产环境长期运行。
- 图形化与深度诊断:使用 Weave Scope、sysdig 等,直观查看容器拓扑、资源占用与系统调用,适合故障定位与性能瓶颈分析。
- 日志与 APM:结合 ELK/EFK 或商业 Datadog、New Relic 等,统一收集容器日志与应用性能,实现指标+日志+链路的统一观测。
二 快速上手 Prometheus + cAdvisor + Alertmanager + Grafana
- 部署组件(示例命令)
- cAdvisor:采集容器指标
docker run --name=cadvisor --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach google/cadvisor:latest - Prometheus:时序存储与告警规则评估
docker run -d --name=prometheus -p 9090:9090 -v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus - Alertmanager:告警路由与通知
docker run -d --name=alertmanager -p 9093:9093 -v $PWD/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager - Grafana:可视化展示
docker run -d --name=grafana -p 3000:3000 grafana/grafana
- cAdvisor:采集容器指标
- 配置抓取
- Prometheus 抓取 cAdvisor(prometheus.yml)
scrape_configs:- job_name: 'cadvisor'static_configs:- targets: ['<HOST_IP>:8080']metrics_path: '/metrics'scrape_interval: 15s - 在 Prometheus Web UI(http://<HOST_IP>:9090)Targets 页面确认 cadvisor 为 UP。
- Prometheus 抓取 cAdvisor(prometheus.yml)
- Grafana 可视化
- 添加数据源:URL 为 http://prometheus:9090(同网络可直接用服务名)。
- 导入 Docker 相关面板(如容器监控面板),即可查看容器 CPU、内存、网络 等指标趋势。
三 告警规则与通知落地
- Prometheus 告警规则示例(rules.yml)
groups:- name: container.rulesrules:- alert: HighCPUUsageexpr: sum(rate(container_cpu_usage_seconds_total{name!=""}[1m])) by (name) > 0.8for: 2mlabels:severity: criticalannotations:summary: "容器 {{ $labels.name }} CPU使用率过高"description: "当前使用率: {{ $value | humanizePercentage }}"- alert: MemoryLeakexpr: container_memory_usage_bytes{name!=""} / container_spec_memory_limit_bytes{name!=""} > 0.9for: 5mlabels:severity: warningannotations:summary: "容器 {{ $labels.name }} 内存接近上限"description: "已用/上限: {{ $value | humanizePercentage }}"- 在 prometheus.yml 中加载规则:
rule_files:- "/etc/prometheus/rules/*.rules.yml"
- 在 prometheus.yml 中加载规则:
- Alertmanager 通知示例(alertmanager.yml)
global:resolve_timeout: 5mroute:group_by: ['alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 1hreceiver: 'email'receivers:- name: 'email'email_configs:- to: '[email protected]'from: '[email protected]'smarthost: 'smtp.example.com:587'auth_username: 'user'auth_password: 'pass'inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'instance']- 在 Prometheus Web UI 的 Alerts 页面查看规则状态与触发记录;在 Alertmanager 的 Silences 中配置维护窗口静默。
四 进阶与运维优化
- 主机级指标补充:部署 node-exporter(默认 9100 端口),在 Prometheus 中新增 job 抓取主机 CPU、内存、磁盘、文件系统 等指标,便于定位宿主机瓶颈。
- 动态发现与多主机:在 Kubernetes 环境可用 Service Discovery 自动发现目标;多主机/多环境建议统一网络与命名,保证 Prometheus 可达各 cAdvisor 实例。
- 性能与成本优化:合理设置 scrape_interval(如 15s);对高频指标使用 rate() 与 recording rules 预聚合;在 Prometheus 配置 storage.tsdb.retention.time(如 30d) 控制数据保留。
- 可视化与告警渠道:Grafana 用于长期趋势与容量分析;企业可扩展 Webhook 对接 企业微信、钉钉 等,实现 IM 群内告警。
五 其他工具与场景建议
- 快速排障与单机巡检:优先用 docker stats 观察实时资源占用,适合临时定位。
- 拓扑与交互式诊断:使用 Weave Scope 或 sysdig 查看容器关系、资源热点与系统调用,适合疑难问题与性能瓶颈定位。
- 日志与 APM 统一:采用 ELK/EFK 集中管理容器日志,或选择 Datadog、New Relic 等 SaaS 平台获取开箱即用的指标、日志与链路追踪能力。