手把手教你用Docker部署Prometheus监控服务器
准备工作:安装Docker并了解组件
开始之前,请确认你的服务器上已经安装了Docker和Docker Compose。
如果你还没有装,可以执行以下命令(以Ubuntu为例)快速安装:
curl -fsSL https://get.docker.com | bash
sudo usermod -aG docker $USER
# 重新登录或newgrp docker生效
sudo apt install docker-compose -y
Docker部署Prometheus监控的核心组件有三个:
- Prometheus:负责拉取和存储指标数据。
- Grafana:可视化面板,可以展示监控图表。
- node_exporter:部署在被监控服务器上,暴露系统指标(CPU、内存、磁盘等)。
这一次我们用Docker Compose将它们一键拉起,省去繁琐的手动配置。
快速部署:编写docker-compose.yml
新建一个目录,比如mkdir ~/prometheus-monitor && cd ~/prometheus-monitor。
然后创建docker-compose.yml文件,内容如下:
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- '9090:9090'
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- '3000:3000'
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
- grafana_data:/var/lib/grafana
restart: unless-stopped
node_exporter:
image: prom/node-exporter:latest
container_name: node_exporter
ports:
- '9100:9100'
restart: unless-stopped
volumes:
prometheus_data:
grafana_data:
注意,这里同时部署了node_exporter作为示例,如果你有多台机器,可以在每台目标机器上单独运行node_exporter容器,或者后续单独配置。
接下来创建Prometheus配置文件prometheus.yml:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
这里targets指向本机的node_exporter。
如果你要监控其它服务器,请将localhost替换为对应IP。
然后启动所有容器:
docker-compose up -d
配置数据采集:添加更多目标
如果需要监控多台服务器,你只需要在目标服务器上运行node_exporter容器(映射端口9100),然后在Prometheus的prometheus.yml中增加targets即可。
例如:
scrape_configs:
- job_name: 'node'
static_configs:
- targets:
- '192.168.1.101:9100'
- '192.168.1.102:9100'
修改后重启Prometheus容器:docker-compose restart prometheus。
你也可以通过Prometheus的Web界面(http://服务器IP:9090)的/targets页面检查各目标是否正常处于UP状态。
避免踩坑的几点提醒
- 端口冲突:确保9090(Prometheus)、3000(Grafana)、9100(node_exporter)未被占用,可用
lsof -i :端口号检查。 - 防火墙:如果使用云服务器,需要在安全组中放行相应端口。
- 数据持久化:上面配置中使用了命名卷,确保容器删除后数据不丢失。如果磁盘空间有限,记得定期清理历史数据(Prometheus默认保留15天)。
- Grafana默认密码:首次登录地址为
http://服务器IP:3000,用户名密码均为admin,登录后会要求修改。 - node_exporter版本:如果监控的是旧系统,建议使用与Prometheus版本兼容的node_exporter镜像。
验证监控是否正常工作
- 访问
http://服务器IP:9090,在Prometheus UI的查询框中输入up,如果返回1表示所有targets在线。 - 访问
http://服务器IP:3000,使用admin/admin登录Grafana,添加数据源:选择Prometheus,URL填写http://prometheus:9090(注意这是容器内服务名,因为Grafana和Prometheus在同一网络)。然后导入推荐的面板(Dashboard ID: 1860),即可看到服务器CPU、内存、磁盘等实时图表。
全部完成后,你就拥有了一个基础的Docker部署Prometheus监控环境。
如果遇到Prometheus报错超时或targets显示down,请重点检查网络连通性和防火墙设置。
建议先按本文步骤完整执行,再根据自己的环境做微调。