1. 目录结构
[root@test-master /opt/prometheus]
./
├── nginx_status.sh
├── prometheus.yml
├── status.html
└── v
└── v_settings.yml
2.prometheus持久化配置文件
[root@test-master /opt/prometheus]
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: 'auto_discovery_node_exporter'
file_sd_configs:
- files:
- /opt/v_settings.yml
refresh_interval: 5s
3.自动发现的配置文件
[root@test-master /opt/prometheus/v]
[
{
"targets": ["192.168.58.15:9100"],
"labels": {"name": "basic"}
},
{
"targets": ["192.168.58.15:9091"],
"labels": {"name": "custome"}
}
]
4.监控nginx状态的脚本
♥prometheus的配置文件中已加入动态发现
[root@test-master /opt/prometheus]
INSTANCE_NAME=`hostname -s`
if [ $INSTANCE_NAME == "localhost" ]
then
echo "Must FQDN hostname"
exit
fi
curl -o /opt/prometheus/status.html http://192.168.58.15/nginx_status
echo "active_connections `cat /opt/prometheus/status.html |awk 'NR==1{print $3}'`" | curl --data-binary @- http://192.168.58.15:9091/metrics/job/nginx_status_test/instance/$INSTANCE_NAME
echo "requests `cat status.html |awk 'NR==3{print $3}'`" | curl --data-binary @- http://192.168.58.15:9091/metrics/job/nginx_status_test/instance/$INSTANCE_NAME
5.启动prometheus容器
docker run -d -p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /opt/prometheus/v/:/opt/ \
--name prometheus \
prom/prometheus
6.启动export容器
docker run -d -p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
--net="host" \
--name node-exporter \
--restart always \
prom/node-exporter
7.启动pushgetway容器
docker run -d \
--name=pg_nginx \
-p 9091:9091 \
prom/pushgateway
8.测试发送
[root@test-master /opt/prometheus]