zoukankan      html  css  js  c++  java
  • Prometheus 使用Python推送指标数据到Pushgateway

    使用Python推送指标数据到Pushgateway

    需求描述

    实践环境

    Python 3.6.5

    Django 3.0.6

    prometheus-client 0.11.0

    代码实现

    !/usr/bin/env python
    -*- coding:utf-8 -*-
    
    
    from prometheus_client import CollectorRegistry, Gauge, push_to_gateway
    
    
    if __name__ == '__main__':
        registry = CollectorRegistry()
        labels = ['req_status', 'req_method', 'req_url']
        g_one = Gauge('requests_total', 'url请求次数', labels, registry=registry)
        g_two = Gauge('avg_response_time_seconds', '1分钟内的URL平均响应时间', labels, registry=registry)
        g_one.labels('200','GET', '/test/url').set(1) #set设定值
        g_two.labels('200','GET', '/test/api/url/').set(10) #set设定值
        push_to_gateway('http://162.13.0.83:9091', job='SampleURLMetrics', registry=registry)
    

    注意:采用这种方式是无法为指标数据提供数据生成时间戳的,具体下文说明

    查看运行结果

    浏览器访问推送网关地址http://162.13.0.83:9091,如下

    关于时间戳(timestamp)

    如果你在 t1 时刻推送Metric,你可能认为普罗米修斯会“刮取(scrap)”这些指标,并使用相同时间戳 t1 作为对应时序数据的时间戳,然而,普罗米修斯不会这样做,它会把从推送网关(Pushgateway)“刮取”数据时的时间戳当作指标数据对应的时间戳。为什么会这样?

    在普罗米修斯的世界观中,一个Metric可以在任何时候被刮取,一个无法被”刮取”的Metric基本上是不存在了。对此,普罗米修斯多少还是有点“容忍”的,但是如果它不能在 5 分钟内获得一个Metric的任何样本,那么它就会表现得好像该Metric不再存在一样。为了防止这种情况发生,实际上是使用Pushgateway的原因之一。Pushgateway将使你的临时job在任何时候都可以被刮取,也就是说任何时刻都可以采集到你推送的数据。将推送时间附加为时间戳将无法达到这一目的,因为在最后一次推送5分钟之后,普罗米修斯会认为你的Metric已经过时,就好像它再也不能被“刮取”一样。(普罗米修斯只能识别每个样本的一个时间戳,无法区分“推送时间”和“刮取时间”。)

    由于没有任何让附加不同的时间戳有意义的场景,并且许多用户试图错误地这样做(尽管没有客户端库支持),Pushgateway拒绝任何带有时间戳的推送。

    为了更容易对失败的推送器或最近未运行的Pusher发出警报,Pushgateway将在push_time_secondspush_failure_time_seconds Metric中给每个组添加最后一次成功和失败的POSTPUT的Unix时间戳。这将覆盖使用该名称推送的任何Metric。两个Metric的值均为零表示该组从未见过成功或失败的POSTPUT

    作者:授客
    QQ:1033553122
    全国软件测试QQ交流群:7156436

    Git地址:https://gitee.com/ishouke
    友情提示:限于时间仓促,文中可能存在错误,欢迎指正、评论!
    作者五行缺钱,如果觉得文章对您有帮助,请扫描下边的二维码打赏作者,金额随意,您的支持将是我继续创作的源动力,打赏后如有任何疑问,请联系我!!!
               微信打赏                        支付宝打赏                  全国软件测试交流QQ群  
                  

  • 相关阅读:
    20个命令行工具监控 Linux 系统性能【转载】
    机器学习及部分NLP相关网上的代码资源整理
    职场中脱颖而出的成长秘诀【转载】
    美好的诗词
    其实这是一种生活方式【转载】
    10个非常有趣的Linux命令【转载】
    如何摆脱工具类【转载】
    在线公开课 | 如何基于模型训练平台快速打造AI能力?
    企业应用架构演化探讨:从微服务到Service Mesh
    生命的价值——大型科技公司的时间“减”史
  • 原文地址:https://www.cnblogs.com/shouke/p/15426794.html
Copyright © 2011-2022 走看看