Prometheus之PushGateway

news/2024/12/31 3:38:44/

简介

PushGateway 使用场景:

  • Prometheus 采用定时 Pull 模式,可能由于子网络或者防火墙的原因,不能直接拉取各个 Target 的指标数据,此时可以采用各个 Target 往 PushGateway 上 Push 数据,然后 Prometheus 去 PushGateway 上定时 pull。

  • 其次在监控各个业务数据时,需要将各个不同的业务数据进行统一汇总,此时也可以采用 PushGateway 来统一收集,然后 Prometheus 来统一拉取。

Pushgateway并不是将Prometheus的pull改成了push,它只是允许用户向他推送指标信息,并记录。而Prometheus每次从 Pushgateway拉取的数据并不是期间用户推送上来的所有数据,而是最后一次push上来的数据。所以设置推送时间与Prometheus拉取的时间相同(<=)一般是较好的方案。

部署

docker安装

$ docker pull prom/pushgateway
$ docker run -d --name=pushgateway -p 9091:9091 prom/pushgateway

部署完成后,在浏览器输入 http://$IP:9091 即可看到程序界面

实现

pushgateway的数据推送支持两种方式,Prometheus Client SDK推送和API推送。

下面以 Client SDK推送进行讲解
Prometheus本身提供了支持多种语言的SDK,可通过SDK的方式,生成相关的数据,并推送到pushgateway,这也是官方推荐的方案。
目前的SDK覆盖语言有官方的:

  • Go

  • Java or Scala

  • Python

  • Ruby

也有许多第三方的,详情可参见此链接:https://prometheus.io/docs/instrumenting/clientlibs/

本示例以python为例,讲解SDK的使用

from prometheus_client import Counter,Gauge,push_to_gateway
from prometheus_client.core import CollectorRegistryregistry = 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('10.12.61.3:9091', job='alex-job',registry=registry)

大概逻辑就是:

  • 创建相关的指标,类型为Gauge。其中“gauge_test_metric”为指标名称,'This is a gauge-test-metric'为指标注释,['method','path','instance'] 为指标相关的label。

  • 添加相关的label信息和指标value 值。

  • push数据到pushgateway,'10.12.61.3:9091'为发送地址,job指定该任务名称。

以上代码产生的指标数据等同如下 :

# HELP gauge_test_metric This is a gauge-test-metric
# TYPE gauge_test_metric gauge
gauge_test_metric{instance="instance1",method="get",path="/aaa"} 3.0

配置

Pushgateway只是指标的临时存放点,最终我们需要通过Prometheus将其存放到时间序列数据库里。对此,我们需要在Prometheus上面创建一个job。

- job_name: 'pushgateway'honor_labels: truestatic_configs:- targets:- '10.12.61.3:9091'

目标任务正常启动后,可在prometheus查看到相关的指标数据


http://www.ppmy.cn/news/111517.html

相关文章

设计模式之~享元模式

定义&#xff1a; 享元模式英文称为“Flyweight Pattern”&#xff0c;又译为羽量级模式或者蝇量级模式。 享元模式&#xff08;Flyweight Pattern&#xff09;主要用于减少创建对象的数量&#xff0c;以减少内存占用和提高性能。这种类型的设计模式属于结构型模式&#xff0c…

JAVA企业级开发 1.5 初探Spring AOP

一、提出游吟诗人唱赞歌任务 骑士执行任务前和执行任务后&#xff0c;游吟诗人唱赞歌 &#xff08;一&#xff09;采用传统方式实现 修改day04子包的勇敢骑士类 修改day04子包里的救美骑士类 执行测试类 - TestKnight &#xff08;二&#xff09;采用传统方式实现的缺…

实验篇(7.2) 02. 部署物理实验环境(上)❀ 远程访问

【简介】当大家了解到并不需要很高的代价就可以动手做FortiOS 7.2的实验&#xff0c;很多人愿意尝试使用FortiGate防火墙硬件来学习最验难掌握的远程访问部分&#xff0c;这里我们将学习现场部署一套物理实验环境&#xff0c;让大家看到&#xff0c;在一张桌子上&#xff0c;在…

Windows10系统下Nacos下载安装+简单示例

Windows10系统下Nacos版本与下载链接 版本号下载地址2.0.1https://github.com/alibaba/nacos/releases/tag/2.0.11.4.2https://github.com/alibaba/nacos/releases/tag/1.4.21.3.2https://github.com/alibaba/nacos/releases/tag/1.3.2 Nacos常用命令 命令描述startup.cmd -…

联想笔记本指纹未连接到计算机,联想笔记本电脑指纹识别如何设置?联想电脑指纹识别配置教程...

联想指纹识别怎么设置&#xff1f;部分联想笔记本电脑带有指纹识别系统&#xff0c;可能用户对此比较陌生&#xff0c;如果你未曾设置过指纹识别系统&#xff0c;请确保该操作系统安装了指纹识别系统的驱动&#xff0c;并参考联想昭阳K27(下文)的指纹识别系统步骤设置。 联想指…

如何快速在WEB系统下集成指纹识别登录

首先我们看一下web集成指纹的效果&#xff1a; <script type"text/javascript">var webSocket new WebSocket(ws://localhost:8099);var feature;var template;var mode;var capturenum;var imgdata new Array();webSocket.onerror function(event) {onEr…

浏览器指纹反爬虫

浏览器指纹反爬虫 在现行的网络爬虫检测技术中&#xff0c;主要有以下两大类&#xff1a; 行为检测指纹识别 行为检测是通过分析网页上用户的操作&#xff08;鼠标的移动、点击、滚动行为和浏览行为&#xff09;来判断操作者是否是机器控制的网络爬虫。 而指纹识别则是通过分…

服务器显示器接鼠标和键盘,接口、显示器及鼠标键盘设计

接口、显示器及鼠标键盘设计 华硕ES5000机身背部除了上一页中提到的散热网孔之外&#xff0c;还设计有相当全面的接口&#xff0c;包括4个USB 2.0、音频输入输出、RJ-45以太网、PS/2键盘以及HDMI。这里需要特别指出的是&#xff0c;由于采用了独立显卡设计&#xff0c;所以整…