温馨提示×

Docker在Ubuntu上的监控怎么实现

小樊
32
2025-11-24 18:51:42
栏目: 智能运维

Ubuntu 上 Docker 监控的实用方案

一 快速上手 命令行与系统工具

  • 查看 Docker 服务状态:systemctl status docker
  • 查看容器列表与过滤:docker psdocker ps -adocker ps -f status=running/exited
  • 查看容器详细信息:docker inspect <容器名或ID>
  • 实时资源监控:docker stats(可加 –no-stream 输出一次)
  • 查看容器日志:docker logs <容器名或ID>(可加 -f 实时跟踪)
  • 主机层面资源观察:htop(安装:sudo apt-get install -y htop) 以上命令适合日常巡检与临时排障,覆盖容器状态、资源使用与日志等关键维度。

二 开源集中监控 Prometheus Grafana cAdvisor

  • 组件与端口规划
    • Prometheus:9090(时序数据采集与查询)
    • Grafana:3000(可视化与告警面板)
    • cAdvisor:8080(容器 CPU/内存/网络/磁盘指标)
    • Node Exporter:9100(宿主机指标,可选)
  • 快速启动(Docker Compose 示例)
    • 目录与编排文件(/opt/prometheus-docker/docker-compose.yml):
      version: "3.8"
      services:
        prometheus:
          image: prom/prometheus:latest
          container_name: prometheus
          volumes:
            - ./prometheus.yml:/etc/prometheus/prometheus.yml
            - /var/run/docker.sock:/var/run/docker.sock:ro
          ports:
            - "9090:9090"
          restart: unless-stopped
      
        grafana:
          image: grafana/grafana:latest
          container_name: grafana
          ports:
            - "3000:3000"
          volumes:
            - grafana_data:/var/lib/grafana
          environment:
            - GF_SECURITY_ADMIN_USER=admin
            - GF_SECURITY_ADMIN_PASSWORD=admin
          restart: unless-stopped
      
        cadvisor:
          image: gcr.io/cadvisor/cadvisor:latest
          container_name: cadvisor
          volumes:
            - /:/rootfs:ro
            - /var/run:/var/run:ro
            - /sys:/sys:ro
            - /var/lib/docker:/var/lib/docker:ro
          ports:
            - "8080:8080"
          restart: unless-stopped
      
        node-exporter:
          image: prom/node-exporter:latest
          container_name: node-exporter
          ports:
            - "9100:9100"
          restart: unless-stopped
      
      volumes:
        grafana_data:
      
    • Prometheus 配置(prometheus.yml,抓取 cAdvisor 与 Node Exporter)
      global:
        scrape_interval: 15s
        evaluation_interval: 15s
      
      scrape_configs:
        - job_name: 'cadvisor'
          static_configs:
            - targets: ['cadvisor:8080']
      
        - job_name: 'node-exporter'
          static_configs:
            - targets: ['node-exporter:9100']
      
    • 启动与初始化
      cd /opt/prometheus-docker
      docker compose up -d
      
    • 访问与面板
      • Prometheus:http://<主机IP>:9090
      • Grafana:http://<主机IP>:3000(默认账号 admin/admin
      • 在 Grafana 添加数据源 Prometheus(URL:http://prometheus:9090),导入 Docker 监控模板(如 893193)即可获得容器与主机资源仪表盘。

三 进阶 日志与主机进程监控

  • 日志集中化(ELK/EFK)
    • 使用 Metricbeat 采集 Docker 指标并输出到 Elasticsearch,通过 Kibana 可视化;适合需要日志与指标联动分析的场景。
    • 示例(Metricbeat Docker 模块采集容器/CPU/内存/网络指标):
      metricbeat.modules:
        - module: docker
          metricsets: ["container", "cpu", "memory", "network"]
          hosts: ["unix:///var/run/docker.sock"]
          period: 10s
      output.elasticsearch:
        hosts: ["elasticsearch:9200"]
      
    • 可配合 Filebeat 采集容器日志,统一入库与检索分析。
  • 主机层面
    • Node Exporter 提供宿主机 CPU、内存、磁盘、Swap 等指标,补齐容器运行环境视角。
    • htop 辅助排查进程级资源争用,快速定位异常进程。

四 生产落地要点

  • 安全与权限
    • 最小化挂载:仅挂载 /var/run/docker.sock 与必要的只读目录;为 Prometheus/Grafana 设置强口令与访问控制。
  • 高可用与扩展
    • Prometheus 建议做 多实例 + 远程存储(如 Thanos/Cortex);Grafana 做 数据库与插件备份
  • 告警与 SLO
    • 在 Grafana 或 Prometheus 配置关键阈值告警(如 CPU > 80%内存 > 90%、容器频繁重启),接入 邮件/Slack/企业微信 等通知渠道。
  • 指标与标签治理
    • 规范 job、instance、container_name 等标签,便于多主机/多容器聚合与下钻分析。
  • 存储与保留
    • 根据数据量规划 Prometheus 存储保留期宿主机磁盘 I/O,避免监控本身成为瓶颈。

0