pushgateway部署及使用
为什么使用pushgateway
1
2
1. Prometheus 采用pull模式,可能由于不在一个子网或者防火墙原因,导致 Prometheus 无法直接拉取各个 target 数据
2. 可以单独运行在任何节点上,并不一定要运行在被监控的客户端
docker-compose部署
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
version: '3.8'
services:
pushgateway:
image: prom/pushgateway
container_name: pushgateway
restart: unless-stopped
user: "1000"
environment:
TZ: Asia/Shanghai
command:
# - --web.telemetry-path=/data/metrics
- --persistence.file=/data/persistence.db
# -persistence.interval=10m
volumes:
- ./data/pushgateway:/data
ports:
- 9091:9091
问题
1
2
3
4
5
6
7
1. 注意权限: 挂载目录,需要将./data/pushgateway 用户设置为docker-compose启动用户的权限
chown -R 1000.1000 ./data/pushgateway
user: "1000"
2. 执行持久化,需要在启动是添加命令:
--persistence.file=/data/persistence.db
使用接口
1. 推送测试数据
1 echo "some_metric 3.1415926" | curl --data-binary @- http://172.17.3.8:9091/metrics/job/test_job2. 添加更复杂的数据指标
1 2 3 4 5 6 7 cat <<EOF | curl --data-binary @- http://172.17.3.8:9091/metrics/job/cat_test/instance/1.0 # TYPE some_metric counter archive_status{label="val1"} 1 # TYPE another_metric gauge # HELP another_metric Just an example. archivetime 120 EOF3. 把指标数据写入文件
curl -XPOST –data-binary @data.txt http://172.17.3.8:9091/metrics/job/nginx_test/instance/172.17.3.8
cat pushgate_nginx_test.txt
1 2 3 4 5 6 7 8 9 http_request_total{code="200",domain="abc.cn"} 276683 http_request_total{code="400",domain="abc.cn"} 0 http_request_total{code="408",domain="abc.cn"} 7 http_request_total{code="401",domain="abc.cn"} 0 http_request_total{schema="http",domain="abc.cn"} 277725 http_request_total{schema="https",domain="abc.cn"} 0 http_request_time{code="total",domain="abc.cn"} 76335.809000 http_request_uniqip{domain="abc.cn"} 216944 http_request_maxip{clientip="172.27.0.12",domain="abc.cn"} 81
4. 删除job
删除某个组下的某实例的所有数据:
1curl -X DELETE http://172.17.3.8:9091/metrics/job/cat_test/instance/2.0
删除某个组下的所有数据:
1curl -X DELETE http://172.17.3.8:9091/metrics/job/cat_test
本文由作者按照
CC BY 4.0
进行授权