文章

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_job

Image

2. 添加更复杂的数据指标

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
EOF

Image

3. 把指标数据写入文件

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

删除某个组下的某实例的所有数据:

1
curl -X DELETE http://172.17.3.8:9091/metrics/job/cat_test/instance/2.0

删除某个组下的所有数据:

1
curl -X DELETE http://172.17.3.8:9091/metrics/job/cat_test
本文由作者按照 CC BY 4.0 进行授权