前言
本篇記錄以 docker-compose 方式建立 prometheus、node-exporter 服務
node-exporter 用以蒐集伺服器資訊,並透過 API 提供 Metric 資訊
prometheus 則可透過 node-exporter 蒐集的 Metric 資訊,將資訊整合起來當作資料來源
建立資料夾、yml檔
預期的資料夾配置如下
prometheus-docker-compose.yml
prometheus/
├── config
│ └── prometheus.yml
└── data
建立 prometheus-docker-compose.yml
vi prometheus-docker-compose.yml
version: '3.8'
networks:
monitoring:
driver: bridge
volumes:
prometheus_data: {}
services:
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
ports:
- 9100:9100
networks:
- monitoring
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
volumes:
- ./prometheus/config:/etc/prometheus
- ./prometheus/data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle'
ports:
- 9090:9090
networks:
- monitoring
建立資料夾
mkdir prometheus
mkdir prometheus/config
mkdir prometheus/data
# 權限設定
chown -R nobody:nogroup prometheus/data
建立 prometheus/config/prometheus.yml
vi prometheus/config/prometheus.yml
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "node"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["node-exporter:9100"]
建立完成後 Run docker-compose
docker-compose -f prometheus-docker-compose.yml up -d
查看一下是否建立成功
docker-compose -f prometheus-docker-compose.yml ps
# 輸出
Name Command State Ports
-------------------------------------------------------------------------------------------------
node-exporter /bin/node_exporter --path. ... Up 0.0.0.0:9100->9100/tcp,:::9100->9100/tcp
prometheus /bin/prometheus --config.f ... Up 0.0.0.0:9090->9090/tcp,:::9090->9090/tcp
查看一下 node-export 的 Metrics API 是否正常
curl http://localhost:9100/metrics
# 輸出
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 5.4387e-05
go_gc_duration_seconds{quantile="0.25"} 9.7283e-05
go_gc_duration_seconds{quantile="0.5"} 0.000119694
go_gc_duration_seconds{quantile="0.75"} 0.000192691
go_gc_duration_seconds{quantile="1"} 0.000771569
go_gc_duration_seconds_sum 0.003983712
go_gc_duration_seconds_count 23
... 太多資料省略 ...
查看一下 prometheus UI 確認 target 狀態
http://$IP:9090/targets
轉載請註明來源,若有任何錯誤或表達不清楚的地方,歡迎在下方評論區留言,也可以來信至 leozheng0621@gmail.com
如果文章對您有幫助,歡迎斗內(donate),請我喝杯咖啡