1

我有一个普罗米修斯指标,其标签声明为

errors_total = prometheus_client.Counter("errors_total", "Total errors", ["source", "code])
errors_total.labels("source"="initialization", code="100")
errors_total.labels("source"="shutingdown", code="200")  

当我在受监控代码中发生错误的位置增加指标时,我可以将其用作:

errors_total.labels(source="initialization").inc()

或者

errors_total.labels(code="200").inc()

我的问题是我可以在增加指标时只使用一个标签吗?

4

1 回答 1

2

不,您必须为每个标签指定一个值。如果你尝试代码,你会得到一个异常:

>>> c.labels(source="shutingdown").inc()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/anemyte/.local/lib/python3.7/site-packages/prometheus_client/metrics.py", line 146, in labels
    raise ValueError('Incorrect label names')
ValueError: Incorrect label names
>>> c.labels(["shutingdown"]).inc()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/anemyte/.local/lib/python3.7/site-packages/prometheus_client/metrics.py", line 150, in labels
    raise ValueError('Incorrect label count')
ValueError: Incorrect label count

如果您有一个没有标签值的事件,您可以传递一个占位符值。破折号 ( "-") 是最好的选择,因为它只占用一个字节,但您也可以使用, 或之类的东西"undefined",具体取决于上下文。"none""other"

于 2021-05-28T17:29:48.013 回答