Docker
一、认识
为了基于 Docker
完整实现 Prometheus
和 Alertmanager
的部署,并确保持久化存储、重启、更新、重置存储、配置信息等步骤,我们将按照以下步骤进行详细部署。我们将分别为 Prometheus
和 Alertmanager
配置持久化存储,并实现告警功能。
二、目录结构
首先,创建一个工作目录用于存放 Prometheus
配置文件和持久化存储数据。
prometheus-docker/
├── prometheus/
│ ├── prometheus.yml # Prometheus 配置文件
├── alertmanager/
│ ├── alertmanager.yml # Alertmanager 配置文件
├── data/ # 数据存储目录
三、操作
3.1 创建 Prometheus 配置
Prometheus
的主要配置文件是 prometheus.yml
,它定义了数据抓取和告警的设置。首先创建一个 prometheus.yml
文件:
global:
scrape_interval: 15s # 设置默认抓取间隔时间
scrape_configs:
- job_name: 'prometheus' # 抓取 Prometheus 自身指标
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter' # 抓取 Node Exporter 指标
static_configs:
- targets: ['node_exporter:9100'] # 请替换为实际的 Node Exporter 地址
- job_name: 'custom_service' # 自定义服务
static_configs:
- targets: ['custom-service:4000'] # 替换为实际服务地址
rule_files:
- "alerts.yml" # 确保这个文件存在并正确挂载
alerting:
alertmanagers:
- static_configs:
- targets: ['alertmanager:9093'] # 请确保 Alertmanager 地址正确
将此文件保存为 prometheus.yml
,并确保它与 Docker
容器路径的映射一致。
3.2 创建 Alert 配置
在 prometheus/alerts.yml
中定义告警规则。例如,创建一个当 CPU
使用率超过 80%
时触发的告警:
groups:
- name: example_alert
rules:
- alert: HighCpuUsage
expr: process_cpu_seconds_total > 1
for: 1m
labels:
severity: critical
annotations:
summary: "High CPU usage detected"
3.3 创建 Alertmanager 配置
在 alertmanager/
目录下创建 alertmanager.yml
配置文件,用于定义告警规则和接收告警的方式。
# alertmanager/alertmanager.yml
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
receiver: 'default-receiver'
receivers:
- name: 'default-receiver'
email_configs:
- to: 'your-email@example.com' # 配置接收告警的电子邮件地址
from: 'alertmanager@example.com'
smtp_smarthost: 'smtp.example.com:587'
smtp_from: 'alertmanager@example.com'
smtp_auth_username: 'smtp-username'
smtp_auth_password: 'smtp-password'
3.4 部署 Prometheus 服务
通过 Docker
命令启动 Prometheus
容器,同时配置持久化存储和端口映射。
docker run -d \
--name prometheus \
--restart always \
-p 9090:9090 \
-v ~/prometheus-docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v ~/prometheus-docker/data/prometheus:/prometheus \
prom/prometheus
-
-d
: 后台运行容器。 -
--name prometheus
: 给容器指定一个名字prometheus
。 -
-p 9090:9090
: 将宿主机的9090
端口映射到容器的9090
端口,用于访问Prometheus Web UI
。 -
-v ~/prometheus-docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
:将宿主机上的配置文件prometheus.yml
映射到容器内/etc/prometheus/prometheus.yml
路径。 -
-v ~/prometheus-docker/data/prometheus:/prometheus
:将宿主机上的data
目录映射到容器内/prometheus
目录,这样Prometheus
数据将存储在宿主机的data
目录中,实现持久化。 -
prom/prometheus:latest
: 使用Prometheus
官方最新版本的Docker
镜像。 -
--restart always
:配置容器在Docker
重启后自动重启。
3.5 部署 Alertmanager 容器
docker run -d \
--name alertmanager \
--restart always \
-p 9093:9093 \
-v ~/prometheus-docker/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
-v ~/prometheus-docker/data/alertmanager:/alertmanager \
prom/alertmanager
-
-v ~/prometheus-docker/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml
:将本地的Alertmanager
配置文件挂载到容器中。 -
-v ~/prometheus-docker/data/alertmanager:/alertmanager
:将Alertmanager
的数据持久化存储到宿主机目录。
3.6 验证服务
1. 确保 Prometheus
容器正在运行:
docker ps -a
3.7 停止服务(可选)
docker stop prometheus
3.8 重启服务(可选)
docker restart prometheus
3.9 清理资源(可选)
这个命令将删除所有未使用的容器、镜像和卷,包括数据,谨慎使用。
docker system prune -a --volumes
四、查看
4.1 访问页面
访问 Prometheus Web
界面: 在浏览器中访问 Prometheus
: 打开 http://<主机IP>:9090
(例如,http://localhost:9090
)。
访问 Alertmanager
界面: 在浏览器中访问 Prometheus
: 打开 http://<主机IP>:9093
(例如,http://localhost:9093
)。
4.2 查看状态
转到 Status -> Targets
页面,查看所有目标状态是否为 UP
。