本文章默认读者可以自行解决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-exporter 和 cadvisor 的状态都是绿色的 UP。
Grafana配置
确认容器正常后使用端口映射将服务器的3000端口映射到本地再进入,Grafana的初始用户名和密码均为admin。
进入后导航栏左边点击加号,点击import,接着再import via grafana.com的输入框中分别输入1860和14282分别导入宿主机监控大屏和容器监控大屏,至此就完成了监控栈的配置。现在,可以清晰地看到各个应用或者应用容器吃了多少内存,有没有达到瓶颈。