python 编写 promethues exporter

promethues 服务中记录数据

promethues 支持的数据类型
  • counter:一个计数器是代表一个累积指标单调递增计数器,它的值只能增加或在重新启动时重置为零。

  • GauGge:表示单个数值,可以任意地上升和下降的度量。常用于测量值,如温度或当前内存使用情况,但也可用于可以上下的“计数”,例如并发请求的数量。

  • Summary:摘要采样观察(通常是请求持续时间和响应大小等)

  • Histogram:跟踪存储桶中事件的大小和数量。这允许分位数的可聚合计算。

  • 下面是python prometheus_client库 示例


counter
  • 一直累加的计数器,不可以减少,只有服务重启才能清零
  • 前面两个参数必填,第一个是名字,第二个是描述,第三个是标签(选填)
  • 只有inc()方法,默认加1
GauGge
  • 参数与counter类型一致
  • 有三个方法
    • inc() #默认+1
    • dec() #默认-1
    • set() #设置具体数值(float)

demo

import random

from prometheus_client import Counter,Gauge,start_http_server
from flask import Flask,request
from wsgiref.simple_server import make_server

app = Flask(__name__)
# 使用Counter类型数据,只能递增,不能递减,只能重启服务的时候清零,第一个参数是名称,第二个参数是说明,第三个参数是标签名称
c = Counter('Counter_test','this is test server',('url','name'))
http_request_total  = Counter('http_request_total','request request total of the host',['url'])
# 使用Gauge类型数据,可变大变小,第一个参数是名称,第二个参数是说明,第三个参数是标签名称
http_request_speed  = Gauge('http_request_speed','request request speed',['url'])

@app.route('/')
def index():
    # 标签需要写上去,每次加1
    c.labels('127.0.0.1','activt').inc()
    # 每次加10
    http_request_total.labels('127.0.0.1').inc(10)
    num = random.random()
    # 每次的数据是可大可小的num
    http_request_speed.labels(request.base_url).set(num)
    return 'render_template("index.html")'
        
if __name__ == "__main__":
    # 开启promethues web服务,等待promethues服务器过来抓取数据
    start_http_server(8032)

    # 开启web服务,接受请求,统计数据
    httpd = make_server('0.0.0.0', 8012, app )
    httpd.serve_forever()


# 返回的结果
# Counter_test_total{name="activt",url="127.0.0.1"} 6.0  ------这是统计Counter数据
# http_request_total{url="127.0.0.1"} 60.0 -----这是统计Counter数据
# http_request_speed{url="http://127.0.0.1:8012/"} 0.6473488224134477  ---Gauge数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值