首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python和Prometheus Pushgateway推送指标

如何使用Python和Prometheus Pushgateway推送指标
EN

Stack Overflow用户
提问于 2016-12-06 15:11:42
回答 3查看 16.6K关注 0票数 9

我希望使用Pushgateway将多标签指标推送到Prometheus中。文档提供了一个curl示例,但我需要通过Python发送它。此外,我还想在指标中嵌入多个标签。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-06 15:16:55

这就是我最终要做的--我花了一段时间才把事情做好。虽然理想情况下我会使用专门为此目的设计的Prometheus python客户端,但它在某些情况下似乎不支持多个标签,并且文档几乎不存在所以我选择了一个自制的解决方案。

下面的代码使用gevent并支持多个(逗号分隔的)推送网关urls (如"pushgateway1.my.com:9092,pushgateway2.my.com:9092")。

代码语言:javascript
复制
import gevent
import requests

def _submit_wrapper(urls, job_name, metric_name, metric_value, dimensions):
    dim = ''
    headers = {'X-Requested-With': 'Python requests', 'Content-type': 'text/xml'}
    for key, value in dimensions.iteritems():
        dim += '/%s/%s' % (key, value)
    for url in urls:
        requests.post('http://%s/metrics/job/%s%s' % (url, job_name, dim),
                      data='%s %s\n' % (metric_name, metric_value), headers=headers)


def submit_metrics(job_name, metric_name, metric_value, dimensions={}):
    from ..app import config
    cfg = config.init()
    urls = cfg['PUSHGATEWAY_URLS'].split(',')
    gevent.spawn(_submit_wrapper, urls, job_name, metric_name, metric_value, dimensions)
票数 6
EN

Stack Overflow用户

发布于 2016-12-06 15:57:19

票数 5
EN

Stack Overflow用户

发布于 2020-02-07 15:07:06

一:安装客户端:

代码语言:javascript
复制
pip install prometheus_client

第二步:将以下代码粘贴到Python解释器中:

代码语言:javascript
复制
from prometheus_client import CollectorRegistry, Gauge, push_to_gateway

registry = CollectorRegistry()
g = Gauge('job_last_success_unixtime', 'Last time a batch job successfully finished', registry=registry)
g.set_to_current_time()
push_to_gateway('localhost:9091', job='batchA', registry=registry)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40989737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档