袁党生博客

  • 主页
  • linux基础
  • SHELL
  • WEB
  • 负载
  • 企业级应用
  • 数据库
  • KVM
  • Docker
  • K8S
  • 监控
  • 存储
  • 博客搭建问题
  1. 首页
  2. 监控
  3. 正文

九、Pushgateway

2024年1月10日 3162点热度 0人点赞 0条评论


本章概述

  • 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控制台页面删除按钮删除监控项

标签: prometheus 监控
最后更新:2024年1月31日

袁党生

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2023 linux学习. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备18039507号-1