Prometheus使用Pushgateway推送数据

Pushgateway简介

Prometheus 的 Pushgateway 是一个简单的 HTTP 服务器,它允许数据被推送到该服务器,而不是通过拉取的方式获取。它的存在是为了让临时和批处理作业能够将其指标暴露给 Prometheus。由于这类作业可能存在的时长不足以被主动抓取,因此它们可以将指标推送到 Pushgateway。随后,Pushgateway 会将这些指标暴露给 Prometheus。

Pushgateway 作为中间件,保存推送的数据直到 Prometheus 抓取。它支持从多个来源推送指标,每个来源都通过唯一的 job 标签来标识,并且可以选择性地附加额外的标签

Pushgateway GitHub 地址:https://github.com/prometheus/pushgateway

安装

要安装 Pushgateway,你可以下载二进制包或使用包管理器,但更推荐使用 Docker。你可以在任何机器上安装 Pushgateway,通常只需要一台 Pushgateway 服务器即可处理来自所有来源的指标。以下是使用 Docker 设置 Pushgateway 的方法:

docker pull prom/pushgatewaydocker run -d -p 9091:9091 prom/pushgateway

向 Pushgateway 推送指标

向 Pushgateway 推送指标时,你可以使用 curl 命令行工具或者开发自定义应用程序发送 HTTP 请求。此外,还有适用于多种编程语言的第三方库,可简化向 Pushgateway 发送指标的过程。

使用 curl

以下是一个向 Pushgateway 推送单个指标的例子:

curl -X POST http://{pushgateway_server}:{port}/metrics/job/myjob/instance/myinstance \--data 'my_metric{label="value"} 1.0'

此命令推送了一个名为 my_metric 的指标,其值为 1.0 并带有一个 label 设置为 value 的标签。

使用第三方库

有若干第三方库可以帮助你将 Pushgateway 的功能整合到你的应用程序中。这些库提供了一个更高层次的 API 来发送指标,使得与 Pushgateway 的交互更加容易管理。

例如,在 Python 中,你可以使用 prometheus_client 库,下面是一段实现代码:

import csv
from prometheus_client import CollectorRegistry, Gauge, push_to_gatewayclass PrometheusPusher:def __init__(self, metric_name: str, description: str, job_name: str, pushgateway_url: str = 'localhost:9091'):"""Initialize an instance of PrometheusPusher.:param metric_name: The name of the metric.:param description: A description of the metric.:param job_name: Job name used to identify the source.:param pushgateway_url: URL of the Pushgateway service, default is localhost:9091."""self.metric_name = metric_nameself.description = descriptionself.job_name = job_nameself.pushgateway_url = pushgateway_urlself.registry = CollectorRegistry()self.gauge = Nonedef create_gauge(self, label_names: list):"""Create a gauge metric with labels.:param label_names: List of label names."""self.gauge = Gauge(self.metric_name, self.description, label_names, registry=self.registry)def push_metrics(self, label_values: list):"""Push the metric value to the Pushgateway.:param label_values: List of label values."""if not self.gauge:print('Error: Gauge is not created')returnself.gauge.labels(*label_values).set(1)try:push_to_gateway(self.pushgateway_url, job=self.job_name, registry=self.registry)print(f'Successfully pushed metrics for {label_values}')except Exception as e:print(f'Failed to push metrics for {label_values}. Error: {e}')def push_metrics_from_csv(self, csv_file_path: str):"""Read data from a CSV file and push metrics.:param csv_file_path: Path to the CSV file."""with open(csv_file_path, mode='r') as file:reader = csv.reader(file)# Get the label names (first row)label_names = next(reader)self.create_gauge(label_names)for row in reader:if len(row) != len(label_names):print(f"Warning: Ignoring row with incorrect number of columns: {row}")continueself.push_metrics(row)# Example CSV file format:
# label1, label2
# value1, value2
# ...# Main entry point
if __name__ == '__main__':# Set CSV file path and other parameterscsv_file_path = 'example_data.csv'metric_name = 'example_metric'description = 'An example metric for demonstration purposes.'job_name = "example_job"pushgateway_url = 'slcx-grafana.calix.local:9091'# Create an instance of PrometheusPusher and push data from CSV filepusher = PrometheusPusher(metric_name, description, job_name, pushgateway_url)pusher.push_metrics_from_csv(csv_file_path)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1540789.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

前端JavaScript导出excel,并用excel分析数据,使用SheetJS导出excel

前言:哈喽,大家好,今天给大家分享今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 &#x1f…

Windows通过网线传文件

文章目录 网线网络中看不到另一台计算机Nginx参考文献 网线 两台电脑用网线连接 电脑A 控制面板\网络和 Internet\网络和共享中心 → 更改适配器设置 → 右键以太网(未识别的网络) → 属性 → Internet 协议版本 4 (TCP/IPv4) 属性 → 使用下面的 IP …

SQL编程题复习(24/9/19)

练习题 x25 10-145 查询S001学生选修而S003学生未选修的课程(MSSQL)10-146 检索出 sc表中至少选修了’C001’与’C002’课程的学生学号10-147 查询平均分高于60分的课程(MSSQL)10-148 检索C002号课程的成绩最高的二人学号&#xf…

en造数据结构与算法C# 群组行为优化 和 头鸟控制

实现: 1.给鸟类随机播放随机动画使得每一只鸟扇翅膀的频率都不尽相同 2.可以自行添加权重,并在最后 sumForce separationForce cohesionForce alignmentForce;分别乘上相应权重,这样鸟就能快速飞行和转向辣 using System.Collections.Ge…

小程序地图展示poi帖子点击可跳转

小程序地图展示poi帖子点击可跳转 是类似于小红书地图功能的需求 缺点 一个帖子只能有一个点击事件,不适合太复杂的功能,因为一个markers只有一个回调回调中只有markerId可以使用。 需求介绍 页面有地图入口,点开可打开地图界面地图上展…

安全热点问题

安全热点问题 1.DDOS2.补丁管理3.堡垒机管理4.加密机管理 1.DDOS 分布式拒绝服务攻击,是指黑客通过控制由多个肉鸡或服务器组成的僵尸网络,向目标发送大量看似合法的请求,从而占用大量网络资源使网络瘫痪,阻止用户对网络资源的正…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第六集:制作小骑士完整的跳跃落地行为

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作一个完整的小骑士跳跃落地行为 1.制作动画以及UNITY编辑器编辑2.使用代码实现完整的跳跃落地行为控制3.更多要考虑到的点总结 前言 大家好久不见&…

基于MTL的多任务视频推荐系统

多任务学习,也就是MTL(Multi-task Learning),现在已经被用在很多领域了,比如处理自然语言、搞计算机视觉,还有语音识别这些领域。MTL在大规模的推荐系统里也玩得挺溜,尤其是那些做视频推荐的大家伙。 MTL的玩法就是&a…

NLP 主要语言模型分类

文章目录 ngram自回归语言模型TransformerGPTBERT(2018年提出)基于 Transformer 架构的预训练模型特点应用基于 transformer(2017年提出,attention is all you need)堆叠层数与原transformer 的差异bert transformer 层…

浅谈穷举法

穷举法 穷举法是一种通过逐一列举所有可能情况来寻找解决方案的方法。就像找到一把钥匙打开一把锁,我们会尝试每一把钥匙直到找到正确的那一把。比如,如果你忘记了自己的密码,可以尝试每一种可能的组合直到找到正确的密码为止 穷举法的结构 …

【Python】快速判断两个commit 是否存在cherry-pick 关系

判断两个提交是否有 cherry-pick 关系的 Python 脚本,可以基于以下三种常见情况进行优化: Commit Hash 一致:如果两个提交的 hash 完全相同,那么它们是相同的提交。 Commit Title 存在关联:如果两个提交的 commit mes…

如何下载ComfyUI开发版

看B站视频,见用绘世可以下载ComfyUI开发版,而我又不想在电脑里放太多东西,于是研究了一下,如何直接从GitHub网站下载。具体步骤看图示。 看压缩包内容,应该直接解压覆盖就可以了,暂未有时间测试。

科研绘图系列:R语言散点图和小提琴图(scatter plot violin plot)

文章目录 介绍加载R包导入数据数据预处理函数画图系统信息介绍 提取模型的结果并对模型的结果进行可视化。 加载R包 library(ggplot2) library(ggridges) library(patchwork) library(party) library(caret) library(dplyr

堆的向下调整算法和TOPK问题

目录 1.什么是堆? 1.1 向下调整建堆的时间复杂度计算 1.2 堆的结构体设计 2.堆的功能实现: 2.1 堆的插入: 2.2 堆的删除: 2.3 堆排序: 2.4 向下调整建堆: 2.5 TOPK问题: 2.6 向上调整算…

【Unity踩坑】UI Image的fillAmount不起作用

在游戏场景中,我们经常在界面上展示进度条,当然有各种形状的,线性的,长方形的,圆形,环形等等。 Unity中实现这种效果的话,最基本的方法说是改变Image的fillAmout属性。 如果你是初次使用UI Ima…

ubuntu安装SFML库+QT使用SFML库播放声音

(1)ubuntu安装SFML库 sudo apt-get install libsfml-dev (2)QT使用SFML库播放声音 在.pro文件中添加头文件路径和库文件路径 INCLUDEPATH /usr/include/SFML LIBS /usr/lib/x86_64-linux-gnu/libsfml*.so UI界面中创建一个pushbutton按钮,并且创建槽函数 加载…

国外大带宽服务器怎么连接

随着互联网技术的发展,企业和个人用户越来越依赖于高速的数据传输服务。国外的大带宽服务器因其高速度、稳定性及较低延迟等优势,成为了许多跨国公司、网站托管商以及数据密集型应用的选择。以下是连接国外大带宽服务器的一些常见方法及其注意事项。 选择…

STL-常用算法 遍历/查找/排序/拷贝和替换/算数生成/集合算法

STL常用算法 常用的遍历算法 for_each #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include<vector> #include<algorithm>void myPrint(int v) {cout << v << " "; }class MyPrint { public:void op…

切换到WDDM模式,Tesla M4可以用于本地显示输出了!

正文共&#xff1a;1333 字 21 图&#xff0c;预估阅读时间&#xff1a;2 分钟 上次安装完Tesla M4显卡之后&#xff08;HPE服务器通过显卡直通安装Tesla M4&#xff0c;这算亮机成功了吗&#xff1f;&#xff09;&#xff0c;系统识别正常&#xff0c;但是不能用于显示&#x…