docker构建Prometheus监控系统
请注意,本文章只提供如何使用docker部署prometheus,使用prometheus请查看其他章节。
部署Prometheus
创建持久存储目录:
mkdir -p /data/prometheus/config
mkdir -p /data/prometheus/data
mkdir -p /data/prometheus/rules
准备prometheus.yml文件:
cat /data/prometheus/config/prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets: ['10.0.0.38:9093']
rule_files:
- "/usr/local/prometheus/rules/*.yml"
scrape_configs:
- job_name: "node_exporter"
static_configs:
- targets: ["10.0.0.38:9100"]
使用docker运行Prometheus:
docker run -d \
--privileged=true \
-u root \
--restart=always \
-p 9090:9090 \
-v /data/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /data/prometheus/data:/prometheus \
-v /data/prometheus/rules:/usr/local/prometheus/rules \
--name prometheus \
prom/prometheus:latest \
--storage.tsdb.retention.time=100d \
--config.file=/etc/prometheus/prometheus.yml
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
407f3c48bfe5 prom/prometheus:latest "/bin/prometheus --s…" 31 seconds ago Up 31 seconds 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp prometheus
部署Grafana
创建持久存储目录:
mkdir -p /data/grafana/data
chmod 777 /data/grafana/data
使用docker运行Grafana:
docker run -d \
-p 3000:3000 \
--name grafana \
-v /data/grafana/data:/var/lib/grafana \
-v /etc/localtime:/etc/localtime \
grafana/grafana:latest
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
779f3452a486 grafana/grafana:latest "/run.sh" 6 seconds ago Up 5 seconds 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp grafana
部署Alertmanager
创建持久存储目录:
mkdir -p /data/alertmanager
chmod 777 /data/alertmanager
准备alertmanager.yml文件:
vim /data/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m
smtp_smarthost: 'smtp.126.com:25'
smtp_from: 'nextgo@126.com'
smtp_auth_username: 'nextgo@126.com'
smtp_auth_password: 'RXGFEHFQCLXAMFTP'
smtp_require_tls: false
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 5m
repeat_interval: 1m
receiver: 'mail'
receivers:
- name: 'mail'
email_configs:
- to: 'nextgo@126.com'
使用Docker运行Alertmanager:
docker run -d \
-p 9093:9093 \
--name alertmanager \
-v /data/alertmanager/:/etc/alertmanager/ \
-v /etc/localtime:/etc/localtime \
prom/alertmanager:latest \
--config.file=/etc/alertmanager/alertmanager.yml
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8c635f547d4f prom/alertmanager:latest "/bin/alertmanager -…" 4 seconds ago Up 3 seconds 0.0.0.0:9093->9093/tcp, :::9093->9093/tcp alertmanager
部署node_exporter
docker run -d \
-p 9100:9100 \
--restart=always \
--name node-exporter \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter:latest
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3b3cf227bb80 prom/node-exporter:latest "/bin/node_exporter" 45 seconds ago Up 44 seconds 0.0.0.0:9100->9100/tcp, :::9100->9100/tcp node-exporter