Prometheus提供4种类型Metrics:Counter, Gauge, Summary和Histogram

  • Counter可以增长,并且在程序重启的时候会被重设为0,常被用于任务个数,总处理时间,错误个数等只增不减的指标。
  • Gauge与Counter类似,唯一不同的是Gauge数值可以减少,常被用于温度、利用率等指标。
  • Summary/Histogram概念比较复杂,对于我来说目前没有使用场景,暂无了解。

当Prometheus自带的exporter无法满足实际需求时,需要我们自定义开发监控项
参考
Prometheus-使用python开发exporter
prometheus自定义监控指标——实战
python Django 实现自定义prometheus export

一、简单的示例

1、安装prometheus_client

pip install prometheus_client

2、简单示例

import time
from prometheus_client import Gauge,start_http_server

#custom_test_metric{ labelkey1="labelvalue1",labelkey2="labelvalue2" } 123.0
#指标名:custom_test_metric   标签:labelkey1,labelkey2
g = Gauge('custom_test_metric', 'Description of gauge', ['labelkey1','labelkey2'])

if __name__ == '__main__':
    start_http_server(8006)  # 8006端口启动
    while True:
        #将上一次的值去除
        g.clear()
        #设置标签以及监控数据的值
        g.labels(labelkey1="labelvalue1",labelkey2="labelvalue2").set("123")
        time.sleep(10)

3、访问ip:8086端口,custom_test_metric{labelkey1="labelvalue1",labelkey2="labelvalue2"} 123.0
在这里插入图片描述

4、如果要返回多个指标,新增Gauge实例再传值即可

import time
from prometheus_client import Gauge,start_http_server

g = Gauge('custom_test_metric', 'Description of gauge', ['labelkey1','labelkey2'])
h = Gauge('custom_test_metric2', 'Description of gauge', ['labelkey1','labelkey2'])

if __name__ == '__main__':
    start_http_server(8006)  # 8006端口启动
    while True:
        g.labels(labelkey1="labelvalue1",labelkey2="labelvalue2").set("123")
        h.labels(labelkey1="labelvalue1", labelkey2="labelvalue2").set("124")
        time.sleep(10)

再访问端口,可以看到有新增的指标了
在这里插入图片描述

5、在prometheus中配置自定义的exporter

vim /usr/local/prometheus/prometheus.yml

增加一个job_name

  - job_name: 'exporter-python'
    static_configs:
    - targets: ['10.0.0.107:8006']

在这里插入图片描述

然后重启prometheus

systemctl restart prometheus.service

访问prometheus查询页面进行查询,可以查到我们刚才自定义的两个指标
在这里插入图片描述
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐