提供一个基于Docker Compose的Prometheus、Grafana和Alertmanager监控系统安装方案,并详细解释其配置和工作原理。
一、Docker Compose配置文件
version: '3'
services:
# Prometheus服务
prometheus:
image: prom/prometheus:v2.47.0
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus:/etc/prometheus
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.enable-lifecycle'
restart: unless-stopped
depends_on:
- node-exporter
- cadvisor
# Node Exporter - 主机监控
node-exporter:
image: prom/node-exporter:v1.6.1
container_name: node-exporter
ports:
- "9100:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
restart: unless-stopped
# cAdvisor - 容器监控
cadvisor:
image: gcr.io/cadvisor/cadvisor:v0.47.4
container_name: cadvisor
ports:
- "8080:8080"
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
restart: unless-stopped
# Alertmanager - 告警管理
alertmanager:
image: prom/alertmanager:v0.26.0
container_name: alertmanager
ports:
- "9093:9093"
volumes:
- ./alertmanager:/etc/alertmanager
command:
- '--config.file=/etc/alertmanager/config.yml'
- '--storage.path=/alertmanager'
restart: unless-stopped
# Grafana - 可视化面板
grafana:
image: grafana/grafana-enterprise:10.1.5
container_name: grafana
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
restart: unless-stopped
volumes:
prometheus_data:
grafana_data:
二、组件功能解释
Prometheus
- 功能:开源监控系统,从各种目标(如主机、容器)收集指标数据,并存储在时间序列数据库中。
- 配置要点:
scrape_configs
:定义要监控的目标(如Node Exporter、cAdvisor)。rule_files
:加载告警规则文件(如host.rules
)。alerting
:配置Alertmanager地址,用于发送告警。
Node Exporter
- 功能:Prometheus的主机监控插件,收集CPU、内存、磁盘等系统指标。
- 配置要点:
- 通过挂载
/proc
、/sys
等系统目录获取底层数据。 - 暴露9100端口供Prometheus抓取数据。
- 通过挂载
cAdvisor
- 功能:容器监控工具,收集Docker容器的资源使用和性能信息。
- 配置要点:
- 通过挂载
/var/lib/docker
目录获取容器数据。 - 暴露8080端口供Prometheus抓取数据。
- 通过挂载
Alertmanager
- 功能:处理Prometheus发送的告警,支持分组、抑制、静默等功能,并发送通知(如邮件、Slack)。
- 配置要点:
route
:定义告警路由规则(如按严重程度分组)。receivers
:配置接收者(如邮件地址)。- 需要配置SMTP服务器(示例中使用Gmail)。
Grafana
- 功能:可视化工具,从Prometheus获取数据并创建仪表盘。
- 配置要点:
- 通过
provisioning
目录自动配置数据源和仪表盘。 - 默认用户名/密码:
admin/admin
。 - 暴露3000端口供用户访问。
- 通过
三、安装和使用步骤
创建目录结构
mkdir -p prometheus-grafana && cd prometheus-grafana mkdir -p prometheus/rules alertmanager grafana/provisioning/datasources
复制配置文件
将上述Docker Compose及各组件配置文件复制到对应目录。启动服务
docker-compose up -d
验证服务
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000 (用户名/密码: admin/admin)
- Alertmanager: http://localhost:9093
配置Grafana仪表盘
- 导入预定义仪表盘(如ID为1860的Node Exporter全功能仪表盘)。
- 创建自定义图表展示Prometheus数据。
四、关键配置说明
Prometheus告警规则
- 示例规则检测CPU和内存使用率,超过阈值时触发告警。
- 可根据需求扩展规则(如磁盘空间、网络流量等)。
Alertmanager邮件配置
- 需要启用Gmail的”低安全性应用访问”或应用专用密码。
- 生产环境建议使用企业邮件服务器。
数据持久化
- Prometheus和Grafana数据通过Docker卷持久化,避免容器重启导致数据丢失。
五、注意事项
安全配置
- 修改Grafana默认密码。
- 为Alertmanager配置HTTPS和基本认证。
资源调整
- 根据监控规模调整Prometheus的
storage.tsdb.retention.time
参数(默认15天)。 - 生产环境建议增加Prometheus的内存限制。
- 根据监控规模调整Prometheus的
告警优化
- 调整告警阈值和持续时间以减少误报。
- 添加更多告警规则覆盖关键指标。
通过这个配置,你可以快速搭建一个完整的监控系统,实现对服务器和容器的监控、告警和可视化展示。
作者:严锋 创建时间:2023-09-15 21:57
最后编辑:严锋 更新时间:2025-07-04 16:16
最后编辑:严锋 更新时间:2025-07-04 16:16