本章概述
- pushgateway简介
- 部署pushgateway
- 修改prometheus配置采集pushgateway数据
- 测试从客户端推送单条数据
- 自定义收集数据
前言
github链接:https://github.com/prometheus/pushgateway
9.1 pushgateway简介
pushgateway 是采用被动推送的方式,而不是类似于 prometheus server 主动连接 exporter 获取监控数据。
pushgateway 可以单独运行在一个节点,然后需要自定义监控脚本把需要监控的主动推送给 pushgateway的 API 接口,然后 pushgateway 再等待 prometheus server 抓取数据,即 pushgateway 本身没有任何抓取监控数据的功能,目前 pushgateway 只是被动的等待数据从客户端推送过来。
常用参数:
--persistence.file="" #指定数据保存的文件,默认只保存在内存中
--persistence.interval=5m #数据持久化的间隔时间,即多久时间将内存中的数据保存在文件中
架构图:
数据采集流程:
1、在应用App通过脚本采集数据,然后上传给pushgateway
2、pushgateway接收数据并存在内存中(数据默认存放在内存中,服务器重启,数据会丢失,可通过配置文件修改数据存储位置,保证数据安全性)
3、prometheus向pushgateway抓取数据,将数据存储在本地磁盘或远端存储中
4、grafana查看prometheus抓取的pushgateway上的数据
9.2 部署pushgateway
在172.31.7.202节点上通过二进制安装pushgateway
1、下载pushgateway安装包,解压并做软链接
下载链接:https://github.com/prometheus/pushgateway/releases/download/v1.4.3/pushgateway-1.4.3.linux-amd64.tar.gz
cd /apps
wget https://github.com/prometheus/pushgateway/releases/download/v1.4.3/pushgateway-1.4.3.linux-amd64.tar.gz
tar -xvf pushgateway-1.4.3.linux-amd64.tar.gz
ln -sv /apps/pushgateway-1.4.3.linux-amd64 /apps/pushgateway
2、启动pushgateway
执行命令:
nohup /apps/pushgateway/pushgateway & #使程序在后台运行
常用参数:
--web.listen-address=":9091" #配置监听地址和端口
--web.telemetry-path="/metrics" #暴露metrics指标路径,用于prometheus抓取数据,默认开启
--persistence.file="" #pushgateway数据持久化路径,默认保存在内存中,通过该参数将数据保存在磁盘文件中
3、验证
(1)访问pushgateway控制台:172.31.7.202:9091
(2)访问pushgateway metrics页面:172.31.7.202:9091/metrics
注意:此时该页面展示的仅是pushgateway默认自带的数据,还需要通过脚本将数据上传给pushgateway,prometheus才可以从pushgateway抓取数据
9.3 修改prometheus配置采集pushgateway数据
在172.31.7.201节点上执行命令:
1、修改prometheus配置文件
vim /apps/prometheus/prometheus.yml
- job_name: 'pushgateway-monitor'
scrape_interval: 15s
static_configs:
- targets: ['172.31.7.202:9091']
honor_labels: true #保留数据源标签
2、重启prometheus服务
systemctl restart prometheus
3、prometheus控制台查看
9.4 测试从客户端推送单条数据
9.4.1 推送单条数据
要 Push 数据到 PushGateway 中,可以通过其提供的 API 标准接口来添加,默认 URL 地址为:http://<ip>:9091/metrics/job/<JOBNAME>{/<LABEL_NAME>/<LABEL_VALUE>}
其中<JOBNAME>是必填项,为 job 标签值,后边可以跟任意数量的标签对,一般我们会添加一个instance/<INSTANCE_NAME>实例名称标签,来方便区分各个指标。
url地址每级目录说明:
以该url为例:http://<ip>:9091/metrics/job/<JOBNAME>{/<LABEL_NAME>/<LABEL_VALUE>}
<ip>是指pushgateway的服务器地址
<JOBNAME>是指prometheus配置文件中的jobname
<LABEL_NAME>是指指标数据名称(如CPU、内存等)
<LABEL_VALUE>是指指标数据的值
示例:
在prometheus服务器172.31.7.201上通过echo命令上传数据给pushgateway(以下命令可以在任意连通pushgateway的机器上执行)
echo命令上传指标数据的key和value(key 为 mytest_metric 值为 2022),然后管道通过curl命令上传给pushgateway的url地址,url地址中中指定job名称为 mytest_job,命令如下:
# echo "mytest_metric 2022" | curl --data-binary @- http://172.31.7.202:9091/metrics/job/mytest_job
# echo "mytest_metric 2026" | curl --data-binary @- http://172.31.7.202:9091/metrics/job/mytest_job
curl命令参数说明:
--data-binary #以二进制方式上传
@- #指定上传地址
echo命令上传指标数据的key和value,然后管道通过curl命令上传给pushgateway的url地址
9.4.2 pushgateway控制台查看指标数据
1、在pushgateway控制台查看推送的数据
注意:数据显示时间与东八区差8小时
除了 mytest_metric 外,同时还新增了 push_time_seconds 和 push_failure_time_seconds 两个指标,这两个是 PushGateway 自动生成的指标, 分别用于记录指标数据的成功上传时间和失败上传时间。
9.4.3 Prometheus控制台查看数据
在prometheus控制台搜索mytest_metric,查看是否已经从pushgateway抓取到该数据
1、搜索mytest_metric
2、查看曲线图
9.5 自定义收集数据
基于自定义脚本实现数据的收集和推送
9.5.1 自定义脚本
1、创建脚本
vim 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 ens33 | grep -w inet | awk '{print $2}'`
pushgateway_server="http://172.31.7.202:9091/metrics/job"
cat <<EOF | curl --data-binary @- ${pushgateway_server}/${job_name}/instance/${instance_name}
#TYPE custom_memory_total gauge
custom_memory_total $total_memory #上传监控项为custom_memory_total
#TYPE custom_memory_used gauge
custom_memory_used $used_memory #上传监控项为custom_memory_used
EOF
2、执行脚本上传数据
分别在172.31.7.191、172.31.7.192、172.31.7.193上执行脚本:
bash mem_monitor.sh
9.5.2 验证
1、在pushgateway控制台查看,已经获取到数据
2、在prometheus控制台查看custom_memory_total数据和custom_memory_used数据
custom_memory_total数据(能看到三台主机的内存总量数据)
custom_memory_used数据(能看到三台主机的已用内存数据)
9.5.3 通过 API 删除指定实例的数据
1、通过命令删除
(1)在可以连接pushagateway的主机上执行命令:(这里以删除172.31.7.191主机数据为例)
curl -X DELETE http://172.31.7.202:9091/metrics/job/custom_memory_monitor/instance/172.31.7.191
(2)查看pushgateway控制台数据
2、通过pushgateway控制台页面删除按钮删除监控项
文章评论