运维管理
MrDoc 速记插件
Docker 安装 mrdoc (开源版)
Docker-compose 安装 mrdoc
Linux之smartctl命令磁盘检测运维
Nginx配置服务并开机启动
yum安装与卸载软件常见命令「建议收藏」
yum 命令使用讲解
Nginx 映射本地静态文件
CentOS7.9 Docker部署Leanote
Nginx配置中的log_format
修改或者隐藏Nginx的版本号
centos编译安装方式升级snmpwalk命令到5.9.1从而支持SHA-512鉴权协议测试
PVE的local和local-lvm
markdown之群晖自建图床
Wireshark介绍及抓包分析
自定义数据推送到pushgateway及推送数据的注意事项
Prometheus监控实战系列十四:Pushgateway
使用 PushGateway 进行数据上报采集
RHEL6.0 yum安装报warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY错误-CSDN博客
烂泥:openvpn配置文件详解-烂泥行天下
RHEL系统以FTP服务器搭建yum源_rhel9 安装 ftp yum
详解用Navicat工具将Excel中的数据导入Mysql中 - Steven* - 博客园
Linux禁止ping以及开启ping的方法 - chenshoubiao - 博客园
MobaXterm设置无密码登录丨Pro Linux 基础篇
CentOS 安装 MySQL8,超详细!
percona-xtrabackup备份及恢复mysql操作
教你玩转MySQL8物理备份利器Xtrabackup
PVE浏览器中文设置
2024年PVE8最新安装使用指南|新手入门|安装|优化|Proxmox VE 8.1__什么值得买
sendmail发邮件注意事项
如何使用sqlite将db文件转成txt文件
一文让你学会,开源WAF雷池SafeLine
iptables按照指定国家屏蔽(GEOIP模块的安装与使用)
py3 容器适配conda24.3.0
CentOS7 配置 nginx 和 php 方案
Sakura Panel搭建教程-搭建属于自己的FRP管理面板
markdown之群晖自建图床
Debian12安装教程(保姆级)
CentOS 6.9密码修改
CentOS7如果忘记密码,密码重置详细步骤,保姆级教程。
利用CertBot实现免费SSL证书的自动签发与续签
证书3月一换很麻烦?一行命令让你解放双手
阿里云域名自动签发泛域名证书配置(最新篇)
Certimate证书自动续签
Auto-SSL
ubuntu忘记密码问题解决
Ubantu启动失败,提示“Started GNOME Display Manager”
kali网络配置(及配置ssh远程连接)
SSL证书--Let’s Encrypt和TrustAsia哪个好
PVE安装ikuai、openwrt以及lxc容器安装docker
Fail2Ban安全配置与应用
本文档使用 MrDoc 发布
-
+
首页
Prometheus监控实战系列十四:Pushgateway
Pushgateway为Prometheus整体监控方案的功能组件之一,并做为一个独立的工具存在。它主要用于Prometheus无法直接拿到监控指标的场景,如监控源位于防火墙之后,Prometheus无法穿透防火墙;目标服务没有可抓取监控数据的端点等多种情况。在类似场景中,可通过部署Pushgateway的方式解决问题。 当部署该组件后,监控源通过主动发送监控数据到Pushgateway,再由Prometheus定时获取信息,实现资源的状态监控。  工作流程: 1. 监控源通过Post方式,发送数据到Pushgateway,路径为/metrics。 2. Prometheus服务端设置任务,定时获取Pushgateway上面的监控指标。 3. Prometheus获取监控指标后,会根据告警规则进行计算,如果匹配将触发告警到Alertmanager;同时,Grafana可配置数据源调用Prometheus数据,做为数据展示。 ##### 2、安装部署 ###### 2.1 二进制安装 下载安装包 ```bash wget https://github.com/prometheus/pushgateway/releases/download/v1.4.3/pushgateway-1.4.3.linux-amd64.tar.gz tar zxvf pushgateway-1.4.3.linux-amd64.tar.gz -C /usr/local/ cp /usr/local/pushgateway-1.4.3.linux-amd64/pushgateway /usr/local/bin/ ``` 查看版本号验证是否正常 修改配置 ```bash scrape_configs: - job_name: 'pushgateway' static_configs: - targets: ['192.168.75.160:9091'] labels: instance: pushgatewayCopy ``` 重启Prometheus,启动服务,默认端口为`9091`,可通过`--web.listen-address`更改监听端口 ```bash pushgateway & ``` ###### 2.2 docker安装 ```bash docker pull prom/pushgateway docker run -d --name=pushgateway -p 9091:9091 prom/pushgateway ``` 部署完成后,在浏览器输入http://192.168.75.160:9091/# 即可看到程序界面  ##### 3、数据推送Pushgateway `pushgateway`的数据推送支持两种方式,`Prometheus Client SDK`推送和API推送。 ###### 3.1 Client SDK推送 Prometheus本身提供了支持多种语言的SDK,可通过SDK的方式,生成相关的数据,并推送到pushgateway,这也是官方推荐的方案。 目前的SDK覆盖语言有官方的: - Go - Java or Scala - Python - Ruby 也有许多第三方的,详情可参见此链接:https://prometheus.io/docs/instrumenting/clientlibs/,https://www.172173.com/2022/04/01/Prometheus-Pushgateway/ 在其他机器上提交数据测试 ```bash echo "some_metric 3.14" | curl --data-binary @- http://192.168.75.160:9091/metrics/job/some_job ``` **示例**: 本示例以python为例,讲解SDK的使用,复制以下代码到vscode中,并安装prometheus\_client,pip install prometheus\_client ```bash [root@grafana ~] from prometheus_client import Counter,Gauge,push_to_gateway from prometheus_client.core import CollectorRegistry registry = CollectorRegistry() data1 = Gauge('gauge_test_metric','This is a gauge-test-metric',['method','path','instance'],registry=registry) data1.labels(method='get',path='/aaa',instance='instance1').inc(3) push_to_gateway('192.168.75.160:9091', job='test-job',registry=registry) ```  **注解**: 第一、二行代码:引入Python的Prometheus SDK; 第五行代码:创建相关的指标,类型为Gauge。其中“gauge\_test\_metric”为指标名称,'This is a gauge-test-metric’为指标注释,\[‘method’,‘path’,‘instance’\] 为指标相关的label。 第六行代码:添加相关的label信息和指标value 值。 第七行代码:push数据到pushgateway,'192.168.75.161:9091’为发送地址,job指定该任务名称。 以上代码产生的指标数据等同如下 : ```bash gauge_test_metric{instance="instance1",method="get",path="/aaa"} 3.0 ``` ###### 3.2 API推送 通过调用pushgateway API的方式实现数据的推送。 请求格式: ```bash /metrics/job/<jobname>{/instance/instance_name} ``` 将用作Job标签的值,然后是其他指定的标签。 **示例**: 本例中定义了两个标签 job=pushget-job和instance=instance1,并推送了指标 http\_request\_total 及其value值,192.168.75.161 为pushgateway地址。 ```bash echo 'http_request_total 12' |curl --data-binary @- http://192.168.75.160:9091/metrics/job/pushget-job/instance/instance1 ``` 复杂数据发送: ```bash cat <<EOF | curl --data-binary @- http://192.168.75.160:9091/metrics/job/pushgettest/instance/192.168.75.161 # TYPE http_request_total1 counter http_request_total1{code="200",path="/aaa"} 46 http_request_total1{code="200",path="/bbb"} 15 EOF ``` 假如需要删除pushgateway上面存储的指标信息,可通过如下方式操作: 删除某个组下某个实例的所有数据 ```bash curl -X DELETE http://192.168.75.160:9091/metrics/job/pushgettest/instance/192.168.75.161 ``` 删除某个job下所有的数据 ```bash curl -X DELETE http://192.168.75.160:9091/metrics/job/some_job ``` ###### 4、prometheus抓取数据 ```bash - job_name: 'pushgateway' static_configs: - targets: ['192.168.75.160:9091'] labels: instance: pushgatewayCopy ```  ###### 5、注意事项 通过Pushgateway方式,Prometheus无法直接检测到监控源服务的状态,故此种方式不适用于监控服务的存活状态等场景。 Pushgateway属于静态代理,它接收的指标不存在过期时间,故会一直保留直到该指标被更新或删除。此种情况下,不再使用的指标可能存在于网关中。 如上所言,Pushgateway并不算是完美的解决方案,在监控中更多做为辅助方案存在,用于解决Prometheus无法直接获取数据的场景。 上一篇:[Prometheus监控实战系列十三:告警管理](https://editor.csdn.net/md/?articleId=129759758) 下一篇:[Prometheus监控实战系列十五:Exporter详解](https://editor.csdn.net/md/?articleId=129759982)
adouk
2024年7月29日 14:04
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码