prometheus学习笔记之PushGateway

一、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界面

 

 

posted @ 2024-09-24 14:13  百衲本  阅读(511)  评论(0编辑  收藏  举报
cnblogs_post_body { color: black; font: 0.875em/1.5em "微软雅黑" , "PTSans" , "Arial" ,sans-serif; font-size: 15px; } cnblogs_post_body h1 { text-align:center; background: #333366; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 23px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h2 { text-align:center; background: #006699; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 20px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } cnblogs_post_body h3 { background: #2B6695; border-radius: 6px 6px 6px 6px; box-shadow: 0 0 0 1px #5F5A4B, 1px 1px 6px 1px rgba(10, 10, 0, 0.5); color: #FFFFFF; font-family: "微软雅黑" , "宋体" , "黑体" ,Arial; font-size: 18px; font-weight: bold; height: 25px; line-height: 25px; margin: 18px 0 !important; padding: 8px 0 5px 5px; text-shadow: 2px 2px 3px #222222; } 回到顶部 博客侧边栏 回到顶部 页首代码 回到顶部 页脚代码