当我刚开始准备使用Python写一个promethues的client的时候,并没有想到过程这么麻烦。github上的大佬们也没兴趣帮我解决这些细节的问题。以下是我在使用prometheus_client遇到的一些问题,仅供大家参考
首先参考下github上的例子
我们使用Gauge这个数据类型来做示例,毕竟用的很多
from prometheus_client import Gaugeg = Gauge('my_inprogress_requests', 'Description of gauge')g.set(value) #value自己定义,但是一定要为 整数或者浮点数
这个例子非常简单,如果我们需要定义一些label,该如何做呢
from prometheus_client import Gaugeg = Gauge('my_inprogress_requests', 'Description of gauge',['mylabelname'])g.labels(mylabelname='str').set(value) #value自己定义,但是一定要为 整数或者浮点数#此时一定要注意,定义Gague标签的时候是一个列表,列表可以存多个lablename,类型是字符串#在给lable定义value的时候也要注意,mylablename 这里是一个方法,或者说是一个变量了,一定要注意.
好了,现在我们来启动一个http
from prometheus_client import Gauge,start_http_serverfrom prometheus_client import Gaugea = Gauge('a', 'Description of gauge')a.set(345) #value自己定义,但是一定要为 整数或者浮点数g = Gauge('g', 'Description of gauge',['mylabelname'])g.labels(mylabelname='jastme').set(123) #value自己定义,但是一定要为 整数或者浮点数#此时一定要注意,定义Gague标签的时候是一个列表,列表可以存多个lablename,类型是字符串#在给lable定义value的时候也要注意,mylablename 这里是一个方法,或者说是一个变量了,一定要注意.start_http_server(8000)
这样你就可以通过http访问到数据
但是请注意,这是个静态页面。
如果需要做一个动态页面,请
from prometheus_client import Gauge,start_http_serverimport randomfrom prometheus_client import Gaugea = Gauge('a', 'Description of gauge')a.set(random.random()) #value自己定义,但是一定要为 整数或者浮点数g = Gauge('g', 'Description of gauge',['mylabelname'])#此时一定要注意,定义Gague标签的时候是一个列表,列表可以存多个lablename,类型是字符串#在给lable定义value的时候也要注意,mylablename 这里是一个方法,或者说是一个变量了,一定要注意.start_http_server(8000)while True: g.labels(mylabelname='jastme').set(random.random())
这样g的值就是 随机的, 而a的值一直是固定的。