插件窝 干货文章 如何在Linux上配置容器监控

如何在Linux上配置容器监控

docker Prometheus Grafana 容器 828    来源:    2025-04-15

在Linux上配置容器监控通常涉及多个组件,涵盖指标收集、可视化、告警等功能。以下是分步指南和常见方案:


一、核心监控方案

1. Prometheus + Grafana(主流方案)

  • Prometheus:时序数据库,主动拉取指标。
  • Grafana:可视化仪表盘。
  • Node Exporter:主机指标收集。
  • cAdvisor:容器指标收集。
配置步骤:
  1. 安装组件

    # 安装Prometheus
    docker run -d --name=prometheus -p 9090:9090 \
     -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
     prom/prometheus
    
    # 安装cAdvisor(容器监控)
    docker run -d --name=cadvisor -p 8080:8080 \
     --volume=/:/rootfs:ro \
     --volume=/var/run:/var/run:ro \
     --volume=/sys:/sys:ro \
     google/cadvisor
    
    # 安装Node Exporter(主机监控)
    docker run -d --name=node_exporter -p 9100:9100 \
     -v "/proc:/host/proc" \
     -v "/sys:/host/sys" \
     -v "/:/rootfs" \
     prom/node-exporter
    
    # 安装Grafana
    docker run -d --name=grafana -p 3000:3000 grafana/grafana
    
  2. 配置Prometheus(prometheus.yml

    scrape_configs:
     - job_name: 'node'
       static_configs:
         - targets: ['node_exporter:9100']
     - job_name: 'cadvisor'
       static_configs:
         - targets: ['cadvisor:8080']
    
  3. Grafana配置

    • 访问 http://<IP>:3000,默认账号 admin/admin
    • 添加Prometheus数据源(URL: http://prometheus:9090)。
    • 导入Dashboard模板(如ID 8919 用于Node Exporter,193 用于Docker)。

2. Docker内置监控

  • Docker Stats:基础命令行工具。 bash docker stats [容器名]
  • Docker API:通过/containers/<id>/stats获取JSON格式数据。

二、其他工具选项

1. Datadog

  • 全托管SaaS方案,支持容器、应用、日志。 bash docker run -d --name=datadog \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /proc/:/host/proc/:ro \ -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \ -e DD_API_KEY=<YOUR_KEY> \ datadog/agent

2. Elastic Stack (ELK)

  • 使用Metricbeat收集Docker指标,通过Kibana展示。 bash docker run -d --name=metricbeat \ --user=root \ --volume="/var/run/docker.sock:/var/run/docker.sock:ro" \ --volume="/sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro" \ docker.elastic.co/beats/metricbeat:8.12.0

3. Zabbix

  • 通过Zabbix Agent 2或Docker插件监控容器。

三、关键监控指标

类别 指标示例
资源 CPU、内存、磁盘I/O、网络带宽
容器 运行状态、重启次数、OOM事件
应用 服务响应时间、HTTP错误率

四、告警配置

  • Prometheus Alertmanager:配置规则文件触发邮件/Slack告警。

    # alert.rules
    groups:
    - name: container-alerts
    rules:
    - alert: HighCPUUsage
      expr: sum(rate(container_cpu_usage_seconds_total[1m])) by (container_name) > 0.8
      for: 5m
      labels:
        severity: warning
    
  • Grafana Alerting:直接在仪表盘中设置阈值告警。


五、日志监控

  • Loki + Promtail:轻量级日志方案。 bash docker run -d --name=loki -p 3100:3100 grafana/loki docker run -d --name=promtail \ -v /var/log:/var/log \ -v /path/to/promtail.yml:/etc/promtail/config.yml \ grafana/promtail

六、最佳实践

  1. 标签化:为容器添加label方便过滤(如environment=prod)。
  2. 资源限制:监控前确保容器设置了CPU/内存限制(docker run --memory=1g)。
  3. 安全:限制监控组件端口暴露(如防火墙规则)。

根据需求选择方案: - 快速入门:Prometheus + Grafana + cAdvisor。 - 企业级:Datadog/Elastic Stack。 - 轻量级:Docker Stats + 自定义脚本。