一、pushgateway 简介
pushgateway 是采用被动推送的方式,而不是类似于 prometheus server 主动连接 exporter 获取监控数据。 pushgateway 可以单独运行在一个节点, 然后需要自定义监控脚本把需要监控的主动推送给 pushgateway的 API 接口, 然后 pushgateway 再等待 prometheus server 抓取数据, 即 pushgateway 本身没有任何抓 取监控数据的功能, 目前 pushgateway 只是被动的等待数据从客户端推送过来。
#常用选项 --persistence.file="" #数据保存的文件, 默认只保存在内存中 --persistence.interval=5m #数据持久化的间隔时间
二、部署 pushgateway
二进制、容器、k8s都可以部署,这里为了方便直接使用二进制部署
wget https://github.com/prometheus/pushgateway/releases/download/v1.6.0/pushgateway-1.6.0.linux-amd64.tar.gz tar xf pushgateway-1.6.0.linux-amd64.tar.gz mv pushgateway-1.6.0.linux-amd64 /usr/local/pushgateway cd /usr/local/pushgateway ./pushgateway -h nohup ./pushgateway & #没有配置文件,主要通过命令行传参 netstat -tnlp #默认监控9091端口
三、配置prometheus抓取pushgateway
vim prometheus.yml - job_name: "pushgateway-monitor-metrics" static_configs: - targets: ["192.168.100.133:9091"] #pushgateway 地址和端口 honor_labels: true #保留源标签 curl -X POST http://127.0.0.1:9090/-/reload
四、客户端手动推送数据
1.推送单条数据
要 Push 数据到 PushGateway 中, 可以通过其提供的 API 标准接口来添加, 默认 URL 地址为: http://<ip>:9091/metrics/job/<JOBNAME>{/<LABEL_NAME>/<LABEL_VALUE>}, 其中<JOBNAME>是必填项, 为 job 标签值, 后边可以跟任意数量的标签对, 一般我们会添加一个 instance/<INSTANCE_NAME>实例名称标签, 来方便区分各个指标。
#推送一个 job 名称为 mytest_job, key 为 mytest_metric 值为 2024 echo "mytest_metric 2024" | curl --data-binary @- http://192.168.100.133:9091/metrics/job/mytest_job
访问pushgateway
mytest_metric 命令行创建的job名称,实际通prometheus中的job一样 push_time_seconds 自动生成,记录指标数据的失败上传时间 push_failure_time_seconds 自动生成,记录指标数据的成功上传时间
prometheus验证数据
可以看到已经成功抓取到了
2.推送多条数据
cat <<EOF | curl --data-binary @- http://192.168.100.133:9091/metrics/job/test_job/instance/172.31.0.100 #TYPE node_memory_usage gauge node_memory_usage 4311744512 # TYPE memory_total gauge node_memory_total 103481868288 EOF
查看pushgateway的metric
prometheus查看写入的数据
3.简易推送数据脚本样例
# cat mem_monitor.sh #!/bin/bash total_memory=$(free |awk '/Mem/{print $2}') used_memory=$(free |awk '/Mem/{print $3}') job_name="custom_memory_monitor" instance_name=`ifconfig eth0 | grep -w inet | awk '{print $2}'` pushgateway_server="http://172.30.7.111:9091/metrics/job" cat <<EOF | curl --data-binary @- ${pushgateway_server}/${job_name}/instance/${instance_name} #可以写多个标签,格式为 key/value,如果新增一个zone标签,可以写成为 /instance/${instance_name}/zone/ShangHai ,后面可以一直加 #TYPE custom_memory_total gauge custom_memory_total $total_memory #TYPE custom_memory_used gauge custom_memory_used $used_memory EOF
五、删除数据
1.命令行
#根据job及标签删除对应的数据 curl -X DELETE http://192.168.100.133:9091/metrics/job/test_job/instance/172.31.0.100
2.web界面
标签:prometheus,笔记,9091,job,PushGateway,推送,数据,pushgateway From: https://www.cnblogs.com/panwenbin-logs/p/18427183