1.使用pushgaway原因
Pushgateway 是Prometheus 生态中一个重要工具,使用它的原因主要是:
- Prometheus 采用pull 模式,可能由于不在一个子网或者防火墙原因,导致Prometheus 无法直接拉取各个target 数据。
- 在监控业务数据的时候,需要将不同数据汇总, 由Prometheus 统一收集。
由于以上原因,不得不使用pushgateway,但在使用之前,有必要了解一下它的一些弊端:
- 将多个节点数据汇总到pushgateway, 如果pushgateway 挂了,受影响比多个target 大。
- Prometheus 拉取状态up 只针对pushgateway, 无法做到对每个节点有效。
- Pushgateway 可以持久化推送给它的所有监控数据。
因此,即使你的监控已经下线,prometheus 还会拉取到旧的监控数据,需要手动清理pushgateway 不
要的数据
2.pushgaway的数据流
3.pushgaway安装
[root@docker-3 src]# wget -c
https://github.com/prometheus/pushgateway/releases/download/v1.2.0/pushgateway-1.2.0.lin
ux-amd64.tar.gz
[root@docker-3 src]# tar xf pushgateway-1.2.0.linux-amd64.tar.gz
[root@docker-3 src]# mv pushgateway-1.2.0.linux-amd64 /usr/local/pushgateway-1.2.0
[root@docker-3 src]# ln -s /usr/local/pushgateway-1.2.0/ /usr/local/pushgateway
增加systemd 启动方式
[root@docker-3 src]# cat /usr/lib/systemd/system/pushgateway.service
[Unit]
Description=prometheus
After=network.target
[Service]
User=prometheus
Group=prometheus
WorkingDirectory=/usr/local/pushgateway
ExecStart=/usr/local/pushgateway/pushgateway \
--web.enable-admin-api \
--persistence.file="pushfile.txt" \
--persistence.interval=10m
[Install]
WantedBy=multi-user.target
启动
[root@docker-3 src]# systemctl start pushgateway
Web 访问
上报一个测试数据观察
[root@docker-3 ~]# cat push_memory.sh
#!/bin/bash
total_memory=$(free |awk '/Mem/{print $2}')
used_memory=$(free |awk '/Mem/{print $3}')
job_name="custom_memory"
instance_name="172.16.0.9"
cat <<EOF | curl --data-binary @-
http://172.16.0.9:9091/metrics/job/$job_name/instance/$instance_name
#TYPE custom_memory_total gauge
custom_memory_total $total_memory
#TYPE custom_memory_total gauge
custom_memory_used $used_memory
EOF
[root@docker-3 ~]#
[root@docker-3 ~]# sh push_memory.sh
4.pushgateway数据接入Prometheus
Prometheus 增加pushgateway 配置
- job_name: 'pushgateway'
static_configs:
- targets: ['172.16.0.9:9091']
重启Prometheus
[root@docker-3 ~]# systemctl restart prometheus