Docker 环境下多节点服务器监控实战:从 Prometheus 到 Grafana 的完整部署指南
文章目录
- Docker 环境下多节点服务器监控实战:从 Prometheus 到 Grafana 的完整部署指南
- 一 多节点部署
- 1 节点一
- 2 节点二
- 3 节点三
- 二 监控节点部署
- 三 配置 prometheus.yml
- 四 测试监控系统
本文介绍了如何通过 Docker 快速部署 Prometheus 和 Grafana,实现对多个服务器节点的监控。在实战过程中,分别在三个节点上部署 node-exporter,并在第三个节点上集成 Prometheus 和 Grafana,完成对服务器性能的实时监控。文章提供了详细的 Docker Compose 配置文件,并对 Prometheus 进行优化配置,确保节点数据的精准采集与展示。最后,用户可以通过访问 Grafana 来实现可视化的监控体验。这篇指南适合有一定基础的开发者快速掌握多节点监控系统的搭建。
预备课:
Docker 安装与配置:从入门到部署
Docker 部署 Prometheus+Grafana 监控系统快速指南
一 多节点部署
部署多个 node-exporter 节点监控,例如:节点有三个。
IP | 描述 |
---|---|
192.168.0.1 | 节点一 |
192.168.0.2 | 节点二 |
192.168.0.3 | 节点三 Grafana 和 Prometheus 都部署在这个节点上 |
1 节点一
docker-compose.node01.yml
version: '3'
services:node-exporter:image: prom/node-exporter:v1.6.1container_name: node-exporterhostname: node_exporter_01restart: alwaysnetworks:- monitornetports:- "9100:9100"networks:monitornet:external: true
2 节点二
docker-compose.node02.yml
version: '3'
services:node-exporter:image: prom/node-exporter:v1.6.1container_name: node-exporterhostname: node_exporter_02restart: alwaysnetworks:- monitornetports:- "9100:9100"networks:monitornet:external: true
3 节点三
docker-compose.node03.yml
version: '3'
services:node-exporter:image: prom/node-exporter:v1.6.1container_name: node-exporterhostname: node_exporter_03restart: alwaysnetworks:- monitornetports:- "9100:9100"networks:monitornet:external: true
二 监控节点部署
监控节点也部署在 节点三 ( 192.168.0.3
)上 。
docker-compose.monitor.yml
version: '3'
services:prometheus:image: prom/prometheus:v2.47.2container_name: "prometheus0"restart: alwaysnetworks:- monitornetports:- "9090:9090"volumes:- "./prometheus.yml:/etc/prometheus/prometheus.yml"- "./prometheus_data:/prometheus"grafana:image: grafana/grafana:10.1.5container_name: "grafana0"restart: alwaysnetworks:- monitornetports:- "3000:3000"volumes:- "./grafana_data:/var/lib/grafana"networks:monitornet:external: true
三 配置 prometheus.yml
prometheus.yml 的配置
global:scrape_interval: 15s # 全局默认抓取间隔时间external_labels:monitor: single-monitor # 外部标签,用于标识监控源
scrape_configs:- job_name: node-exporter # 采集节点监控数据的任务名称scrape_interval: 5s # 当前任务的抓取间隔时间metrics_path: /metrics # 指标数据的抓取路径static_configs:# 监听目标服务的 IP 和端口,需根据实际情况修改。如果是云服务,可能需要使用公网 IP。# 如果有多个 targets,不要设置 labels,否则可能导致数据混乱- targets: ['192.168.0.3:9100', '192.168.0.2:9100', '192.168.0.1:9100']
# labels:
# instance: CentOS # 如果监控多个节点,注释掉 labels 避免数据冲突- job_name: prometheus # 监控 Prometheus 自身的任务static_configs:- targets: [ 'prometheus:9090' ] # Prometheus 服务的抓取目标labels:instance: prometheus # 为 Prometheus 服务添加标签
四 测试监控系统
# node-exporter 部署成功
http://192.168.0.3:9100/metrics
# prometheus 部署成功
http://192.168.0.3:9090/targets
# grafana 地址 初始密码 admin/admin
http://192.168.0.3:3000
Grafana 默认访问地址为 http://your-grafana:3000
,初始登录的用户名和密码均为 admin
。登录后,修改密码以确保安全。