想要通过python创建Prometheus客户机
取了这个密码
from prometheus_client import Counter
c = Counter('my_requests_total', 'HTTP Failures', ['method', 'endpoint'])
c.labels(method='get', endpoint='/').inc()
c.labels(method='post', endpoint='/submit').inc()很好,但是我想在avery请求之后设置新值,而不是将新值增加到以前的值。
怎么能做到呢?
发布于 2017-12-22 13:45:52
你必须用计量器而不是柜台。
来自自述的示例:
from prometheus_client import Gauge
g = Gauge('my_inprogress_requests', 'Description of gauge')
g.inc() # Increment by 1
g.dec(10) # Decrement by given value
g.set(4.2) # Set to a given value另见Prometheus度量类型:类型/
计数器 计数器是一个累积的度量,它表示一个只上升过的单个数值。计数器通常用于计数已处理的请求、已完成的任务、发生的错误等。计数器不应用于公开其数量也可能下降的当前项目的计数,例如当前正在运行的峡谷数。使用此用例的量规。 规范 量规是一种度量,它表示一个可以任意上升和下降的数值。 量规通常用于测量温度或当前内存使用情况等测量值,但也有可能上下浮动的“计数”,比如跑步的大猩猩数量。
发布于 2021-10-12 14:08:26
可以通过访问私有_value属性来设置计数器值。我强烈建议避免使用此解决方案,除非您确信要设置的值只会增加而不是减少。否则,使用Gauge代替。
from prometheus_client import Counter
c = Counter("foo", "bar")
c._value.set(50)
c._value.get()
50
c._value.set(101)
c._value.get()
101
# the same with labels
cd = Counter("bar", "foo", labelnames=['name'])
cd.labels(name="spam")._value.set(20)这种方法会出什么问题?
主要问题是计数器复位。每当PromQL函数(如rate()、increase())检测到计数器减少时,它就被视为重置。考虑一下这个简单的例子:
my_metric 1 2 3 4 3
increase(my_metric) 0 1 1 1 3因此,如果你减少一个计数器值,一些函数会把它当作是0,然后立即上升到它现在的值。这将破坏该计数器上的所有计算,特别是如果计数器很大(例如发送的字节、处理的请求等)。
https://stackoverflow.com/questions/47929310
复制相似问题