当前位置: 代码迷 >> 综合 >> Prometheus pushgateway 介绍与使用
  详细解决方案

Prometheus pushgateway 介绍与使用

热度:114   发布时间:2023-09-30 11:04:27.0

Prometheus pushgateway 介绍与使用

Push Gateway:短期存储指标数据。主要用于临时性的任务,各个目标主机可以上报数据到pushgateway,,然后prometheus server统一从pushgateway拉取数据 

1.Pushgateway简介

Pushgateway是prometheus的一个组件,prometheus server默认是通过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/pushgatewaydocker run -d --name pushgateway -p 9091:9091 prom/pushgateway

在浏览器访问node ip :9091出现如下ui界面

Prometheus pushgateway 介绍与使用

 

 

5.修改prometheus-cfg.yaml文件,在k8s-master节点操作

添加如下job

    - job_name: 'pushgateway'scrape_interval: 5sstatic_configs:- targets: ['192.168.100.6:9091']honor_labels: true

Prometheus pushgateway 介绍与使用

 

 

6.推送指定的数据格式到pushgateway

现在普罗米修斯还采集不到任何和pushgateway相关的数据,因为我们需要将数据上报到pushgateway,普罗米修斯才可以采集到,所以现在需要将数据推送到pushgateway。

metric指标名 3.6指标值   test_job这个是job的名字  这些都是固定的格式

[root@node1 ~]# echo " metric 3.6" | curl --data-binary @- http://192.168.100.6:9091/metrics/job/test_job

  注:--data-binary 表示发送二进制数据,注意:它是使用POST方式发送的!

Prometheus pushgateway 介绍与使用 Prometheus pushgateway 介绍与使用

添加复杂数据 

[root@node1 ~]# 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

Prometheus pushgateway 介绍与使用 

Prometheus pushgateway 介绍与使用

Prometheus pushgateway 介绍与使用删除某个组下某个实例的所有数据

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_job

 

 

6.把数据上报到pushgateway


在被监控服务所在的机器配置数据上报,这个脚本是采集内存信息的

[root@node1 ~]# cat push.sh 
node_memory_usages=$(free -m | grep Mem | awk '{print $3/$2*100}')
job_name="memory"
instance_name="192.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 pushgateway 介绍与使用

打开prometheus ui界面,可看到如下memory_usage的metrics指标 

Prometheus pushgateway 介绍与使用

 设置计划任务,每分钟定时上报数据

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冲突。

Prometheus pushgateway 介绍与使用