使用 Docker Compose 部署完整监控栈(Prometheus、Alertmanager 和 Grafana)
使用 Docker Compose 部署完整监控栈(Prometheus、Alertmanager 和 Grafana)的详细步骤,包括必要的配置文件和命令:
1. 创建项目目录和文件结构
首先,创建一个项目目录,并在其中创建必要的文件:
mkdir monitoring-stack
cd monitoring-stack
mkdir prometheus alertmanager grafana
touch docker-compose.yml
touch prometheus/prometheus.yml
touch alertmanager/alertmanager.yml
此时你的目录结构应该如下:
monitoring-stack/
├── alertmanager/
│ └── alertmanager.yml
├── grafana/
├── prometheus/
│ └── prometheus.yml
└── docker-compose.yml
2. 配置 Prometheus (prometheus/prometheus.yml)
将以下配置粘贴到 prometheus/prometheus.yml 文件中。这个配置会监控 Prometheus 本身,并提供一个默认的目标作为例子。
global:
scrape_interval: 15s # 默认抓取间隔
evaluation_interval: 15s # 默认评估间隔
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090'] # Prometheus 自己监控自己
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100'] # 监控 Node Exporter
3. 配置 Alertmanager (alertmanager/alertmanager.yml)
将以下配置粘贴到 alertmanager/alertmanager.yml 文件中。这是一个简单的 Alertmanager 配置,会打印所有警报到控制台,你可以根据需要修改它,例如添加邮件或者其他通知方式。
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: 'console'
receivers:
- name: 'console'
webhook_configs:
- url: 'http://localhost:9093/console' # 用来模拟控制台输出,实际无意义
4. 配置 docker-compose.yml
将以下配置粘贴到 docker-compose.yml 文件中。这个文件定义了整个监控栈的服务。
version: '3.7'
services:
prometheus:
image: prom/prometheus:latest
ports:
- "9090:9090"
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
command:
- "--config.file=/etc/prometheus/prometheus.yml"
restart: unless-stopped
networks:
- monitoring_net
alertmanager:
image: prom/alertmanager:latest
ports:
- "9093:9093"
volumes:
- ./alertmanager/alertmanager.yml:/alertmanager/alertmanager.yml
command:
- "--config.file=/alertmanager/alertmanager.yml"
- "--web.external-url=http://localhost:9093"
restart: unless-stopped
networks:
- monitoring_net
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
restart: unless-stopped
depends_on:
- prometheus
networks:
- monitoring_net
node-exporter:
image: prom/node-exporter:latest
ports:
- "9100:9100"
restart: unless-stopped
networks:
- monitoring_net
networks:
monitoring_net:
5. 启动监控栈
现在,在 monitoring-stack 目录下,执行以下命令启动整个监控栈:
docker-compose up -d
这个命令会下载必要的 Docker 镜像并启动容器。-d 参数表示在后台运行。
6. 访问和验证
Prometheus: 打开浏览器,访问 http://localhost:9090。你应该能看到 Prometheus 的 Web 界面。
Alertmanager: 打开浏览器,访问 http://localhost:9093。你应该能看到 Alertmanager 的 Web 界面。
Grafana: 打开浏览器,访问 http://localhost:3000。你应该能看到 Grafana 的登录页面。默认用户名和密码是 admin/admin。
7. 配置 Grafana (简单步骤)
登录 Grafana: 使用默认用户名和密码(admin/admin)登录 Grafana。
添加数据源:
点击左侧菜单的“Connections” -> “Data Sources”。
点击“Add new data source”。
选择 “Prometheus”。
在 “HTTP” 部分的 “URL” 字段中输入 http://prometheus:9090 (因为容器在同一个网络中,可以直接使用服务名)。
点击 “Save & Test”。你应该看到一个成功连接的提示。
创建仪表盘:
点击左侧菜单的 “Dashboards” -> “Create” -> “New dashboard”。
点击 “Add new panel”。
在 “Query” 选项卡中,选择刚刚添加的 Prometheus 数据源。
输入一个 Prometheus 查询,例如 up (用来显示 Prometheus 自身是否运行)。
点击 “Run queries”。你应该可以看到查询结果。
根据需要配置图表类型和其他选项,然后点击 “Apply” 保存面板。
保存仪表盘。
创建仪表盘 (示例 – CPU 使用率):
点击左侧菜单的 “Dashboards” -> “Create” -> “New dashboard”。
点击 “Add new panel”。
在 “Query” 选项卡中,选择刚刚添加的 Prometheus 数据源。
输入一个 Prometheus 查询,例如 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) (显示CPU使用率)。
点击 “Run queries”。你应该可以看到查询结果。
根据需要配置图表类型和其他选项,然后点击 “Apply” 保存面板。
保存仪表盘。
提示: 你可以根据需要添加其他 Node Exporter 指标的查询,例如内存使用率 (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)、磁盘空间使用率等。
完整步骤总结
创建项目目录和文件结构。
配置 prometheus/prometheus.yml。
配置 alertmanager/alertmanager.yml。
配置 docker-compose.yml。
运行 docker-compose up -d。
验证 Prometheus, Alertmanager, Grafana 是否正常启动。
在 Grafana 中添加数据源 (Prometheus) 并创建仪表盘。
至此,你已经成功部署了一个包含 Prometheus、Alertmanager 和 Grafana 的完整监控栈。你可以根据自己的需求,修改配置文件,监控其他目标,配置告警规则,创建更多仪表盘。