Administrator
Administrator
发布于 2026-08-03 / 8 阅读
0

监控栈部署指南

本文章默认读者可以自行解决Docker镜像的下载问题。

本文章介绍以Node Exporter + cAdvisor + Prometheus + Grafana组合,通过docker compose编排的监控栈,不推荐在内存比较小的服务器上运行。

各个服务介绍:

Node Exporter:是Prometheus监控系统的一款官方指标收集器,主要用于采集Linux和Unix等类系统的CPU、内存、磁盘和网络等硬件与操作系统级别的数据

cAdvisor:是Google开源的一款轻量级容器监控工具。它能自动发现主机上的容器,实时采集CPU、内存、磁盘和网络等关键性能指标。

Prometheus:最常见的是一套开源的系统监控和警报工具包,广泛用于云原生和微服务架构。核心功能是定期从被监控的目标抓取并存储时间序列数据。

Grafana:是一个开源的交互式数据可视化和监控平台,主要用于指标数据的查询、可视化展示以及告警管理。本文将其用作数据可视化。

Docker Compose编排文件

创建目录:

mkdir -p ~/monitor
cd ~/monitor

编写 docker-compose.yml

services:
  node-exporter:
    image: quay.io/prometheus/node-exporter:latest
    container_name: node_exporter
    ports:
      - "9100:9100"
    pid: host
    restart: unless-stopped
    command:
      - '--path.rootfs=/host'
    volumes:
      - '/:/host:ro,rslave'

  cadvisor:
    image: ghcr.io/google/cadvisor:v0.60.5
    container_name: cadvisor
    restart: unless-stopped
    ports:
      - "8081:8080"
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
      - /dev/disk/:/dev/disk:ro
    privileged: true
    devices:
      - /dev/kmsg:/dev/kmsg:ro

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: unless-stopped
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
      - prometheus_data:/prometheus
    extra_hosts:
      - "host.docker.internal:host-gateway"

  grafana:
    image: grafana/grafana-oss:latest
    container_name: grafana
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana
    depends_on:
      - prometheus

volumes:
  prometheus_data:
  grafana_data:

编写完之后执行sudo docker compose up -d 命令。

使用sudo docker ps 检查容器状态。

检查Prometheus 的后台确保node-exportercadvisor 的状态都是绿色的 UP

Grafana配置

确认容器正常后使用端口映射将服务器的3000端口映射到本地再进入,Grafana的初始用户名和密码均为admin。

进入后导航栏左边点击加号,点击import,接着再import via grafana.com的输入框中分别输入1860和14282分别导入宿主机监控大屏和容器监控大屏,至此就完成了监控栈的配置。现在,可以清晰地看到各个应用或者应用容器吃了多少内存,有没有达到瓶颈。