Prometheus pushgateway 介绍与使用

发布时间:2026/7/1 15:52:51

Prometheus pushgateway 介绍与使用 Push Gateway短期存储指标数据。主要用于临时性的任务各个目标主机可以上报数据到pushgateway,然后prometheus server统一从pushgateway拉取数据1.Pushgateway简介Pushgateway是prometheus的一个组件prometheusserver默认是通过exporter主动获取数据默认采取pull拉取数据pushgateway则是通过被动方式推送数据到prometheus server用户可以写一些自定义的监控脚本把需要监控的数据发送给pushgateway 然后pushgateway再把数据发送给Prometheus server总结就是pushgateway是普罗米修斯的一个组件是通过被动的方式将数据上传至普罗米修斯。这个可以解决不在一个网段的问题。2.Pushgateway优点Prometheus 默认采用定时pull 模式拉取targets数据但是如果不在一个子网或者防火墙prometheus就拉取不到targets数据普罗米修斯和target不在一个网段那么是拉取不到的所以可以采用各个target往pushgateway上push数据然后prometheus去pushgateway上定时pull数据在监控业务数据的时候需要将不同数据汇总, 汇总之后的数据可以由pushgateway统一收集然后由 Prometheus 统一拉取。解决不在同一网段的问题pushgateway就相当于一个中间网关。相当于pushgateway要和target可以通同时和普罗米修斯也可以通。3.pushgateway缺点Prometheus拉取状态只针对 pushgateway, 不能对每个节点都有效Pushgateway出现问题整个采集到的数据都会出现问题监控下线prometheus还会拉取到旧的监控数据需要手动清理 pushgateway不要的数据。4.安装pushgateway在k8s-node节点操作在k8s-node节点操作docker pull prom/pushgateway docker run -d --name pushgateway -p 9091:9091 prom/pushgateway在浏览器访问node ip:9091出现如下ui界面5.修改prometheus-cfg.yaml文件在k8s-master节点操作添加如下job- job_name: pushgateway scrape_interval: 5s static_configs: - targets: [192.168.100.6:9091] honor_labels: true6.推送指定的数据格式到pushgateway现在普罗米修斯还采集不到任何和pushgateway相关的数据因为我们需要将数据上报到pushgateway普罗米修斯才可以采集到所以现在需要将数据推送到pushgateway。metric指标名 3.6指标值test_job这个是job的名字 这些都是固定的格式[rootnode1 ~]# echo metric 3.6 | curl --data-binary - http://192.168.100.6:9091/metrics/job/test_job注--data-binary 表示发送二进制数据注意它是使用POST方式发送的添加复杂数据[rootnode1 ~]# cat EOF | curl --data-binary - http://192.168.100.6:9091/metrics/job/test_job/instance/test_instance #TYPE node_memory_usage gauge node_memory_usage 36 # TYPE memory_total gauge node_memory_total 36000 EOF删除某个组下某个实例的所有数据curl -X DELETE http://192.168.124.26:9091/metrics/job/test_job/instance/test_instance删除某个组下的所有数据curl -X DELETE http://192.168.124.26:9091/metrics/job/test_job6.把数据上报到pushgateway在被监控服务所在的机器配置数据上报,这个脚本是采集内存信息的[rootnode1 ~]# cat push.sh node_memory_usages$(free -m | grep Mem | awk {print $3/$2*100}) job_namememory instance_name192.168.100.6 cat EOF | curl --data-binary - http://192.168.100.6:9091/metrics/job/$job_name/instance/$instance_name #TYPE node_memory_usages gauge node_memory_usages $node_memory_usages EOF打开pushgateway web ui界面可看到如下打开prometheus ui界面可看到如下memory_usage的metrics指标设置计划任务每分钟定时上报数据crontab -e */1 * * * * /root/push.sh注意从上面配置可以看到我们上传到pushgateway中的数据有job也有instance而prometheus配置pushgateway这个job_name中也有job和instance这个job和instance是指pushgateway实例本身添加 honor_labels: true 参数 可以避免promethues的targets列表中的job_name是pushgateway的 job 、instance 和上报到pushgateway数据的job和instance冲突。

相关新闻