prometheus python client,

  prometheus python client,

  本文主要介绍了Pythonprometheus_client使用方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  

背景说明

 

  服务部署在阿里云的K8s上,配置了基于普罗米修斯的显示数据监控。原本用的是自定义的韵律学接口统计,上报一些字段,后面发现普罗米修斯自带的监控非常全面好用,适合直接抓取统计,所以做了一些改变。

  

Python prometheus-client 安装

 

  点安装普罗米修斯客户端

  

Python封装

 

  #编码: utf-8

  从普罗米修斯_客户端导入计数器、仪表、摘要

  从普罗米修斯_客户端.核心导入收集器注册表

  从普罗米修斯_客户端. exposition导入选择编码器

  班级班长:

  def __init__(self):

  # 注册收集器最大耗时地图

  自我。collector _ registry=收集器注册表(auto _ describe=False)

  self.request_time_max_map={}

  # 接口调用摘要统计

  自我。http _ request _ Summary=Summary(name= http _ server _ requests _ seconds ,

  文档=请求时间摘要数,

  labelnames=(方法,代码, uri ),

  注册表=self.collector _注册表)

  # 接口最大耗时统计

  自我。http _ request _ max _ cost=Gauge(name= http _ server _ requests _ sec _ max ,

  文档=请求数量最大成本,

  labelnames=(方法,代码, uri ),

  注册表=self.collector _注册表)

  # 请求失败次数统计

  自我。http _ request _ fail _ count=Counter(name= http _ server _ requests _ error ,

  文档=请求失败的总次数,

  labelnames=(方法,代码, uri ),

  注册表=self.collector _注册表)

  # 模型预测耗时统计

  自我。http _ request _ predict _ cost=Counter(name= http _ server _ requests _ seconds _ predict ,

  文档=总预测成本秒数,

  labelnames=(方法,代码, uri ),

  注册表=self.collector _注册表)

  # 图片下载耗时统计

  自我。http _ request _ download _ cost=Counter(name= http _ server _ requests _ seconds _ download ,

  文档=S

  econds of download cost in total",

   labelnames=("method", "code", "uri"),

   registry=self.collector_registry)

   # 获取/metrics结果

   def get_prometheus_metrics_info(self, handler):

   encoder, content_type = choose_encoder(handler.request.headers.get(accept))

   handler.set_header("Content-Type", content_type)

   handler.write(encoder(self.collector_registry))

   self.reset_request_time_max_map()

   # summary统计

   def set_prometheus_request_summary(self, handler):

   self.http_request_summary.labels(handler.request.method, handler.get_status(), handler.request.path).observe(handler.request.request_time())

   self.set_prometheus_request_max_cost(handler)

   # 自定义summary统计

   def set_prometheus_request_summary_customize(self, method, status, path, cost_time):

   self.http_request_summary.labels(method, status, path).observe(cost_time)

   self.set_prometheus_request_max_cost_customize(method, status, path, cost_time)

   # 失败统计

   def set_prometheus_request_fail_count(self, handler, amount=1.0):

   self.http_request_fail_count.labels(handler.request.method, handler.get_status(), handler.request.path).inc(amount)

   # 自定义失败统计

   def set_prometheus_request_fail_count_customize(self, method, status, path, amount=1.0):

   self.http_request_fail_count.labels(method, status, path).inc(amount)

   # 最大耗时统计

   def set_prometheus_request_max_cost(self, handler):

   requset_cost = handler.request.request_time()

   if self.check_request_time_max_map(handler.request.path, requset_cost):

   self.http_request_max_cost.labels(handler.request.method, handler.get_status(), handler.request.path).set(requset_cost)

   self.request_time_max_map[handler.request.path] = requset_cost

   # 自定义最大耗时统计

   def set_prometheus_request_max_cost_customize(self, method, status, path, cost_time):

   if self.check_request_time_max_map(path, cost_time):

   self.http_request_max_cost.labels(method, status, path).set(cost_time)

   self.request_time_max_map[path] = cost_time

   # 预测耗时统计

   def set_prometheus_request_predict_cost(self, handler, amount=1.0):

   self.http_request_predict_cost.labels(handler.request.method, handler.get_status(), handler.request.path).inc(amount)

   # 自定义预测耗时统计

   def set_prometheus_request_predict_cost_customize(self, method, status, path, cost_time):

   self.http_request_predict_cost.labels(method, status, path).inc(cost_time)

   # 下载耗时统计

   def set_prometheus_request_download_cost(self, handler, amount=1.0):

   self.http_request_download_cost.labels(handler.request.method, handler.get_status(), handler.request.path).inc(amount)

   # 自定义下载耗时统计

   def set_prometheus_request_download_cost_customize(self, method, status, path, cost_time):

   self.http_request_download_cost.labels(method, status, path).inc(cost_time)

   # 校验是否赋值最大耗时map

   def check_request_time_max_map(self, uri, cost):

   if uri not in self.request_time_max_map:

   return True

   if self.request_time_max_map[uri] < cost:

   return True

   return False

   # 重置最大耗时map

   def reset_request_time_max_map(self):

   for key in self.request_time_max_map:

   self.request_time_max_map[key] = 0.0

  

  

调用

 

  

import tornado

 

  Metrics返回结果实例

  

 

  到此这篇关于详解Python prometheus_client使用方式的文章就介绍到这了,更多相关Python prometheus_client内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: