从遗留应用程序公开 Prometheus 指标时,我发现某些指标包含无效字符,例如 my.metric、my-metric、my:metric
我可以转义这些字符,而不是更改旧应用程序中的指标名称(它很大): my.metric、my-metric、my:metric
或者,我可以将这些名称括在(单引号或双引号)中: “my.metric”、“my-metric”、“my:metric” 'my.metric'、'my-metric'、'my:metric'
这些可以与现有的 Prometheus 功能很好地配合吗? 上游/实现对其中任何一个或两个的支持可以吗?
引号对于 Prometheus 指标名称也不是有效字符。
处理此问题的标准方法是将无效字符转换为下划线:https://prometheus.io/docs/instrumenting/writing_exporters/#naming
Prometheus 只允许指标名称中包含预定义的字符集,这些字符集与以下 regexp 匹配:
[a-zA-Z0-9:_]
。其他类似 Prometheus 的系统(例如 VictoriaMetrics)允许在指标名称中使用其他字符。在这种情况下,存在以下选项用于转义查询中的特殊字符:
时间序列选择器文档在
__name__
伪标签上使用过滤器。例如,{__name__="metric-name.with special{chars"}
将选择名称为 metric-name.with special{chars
的时间序列metric\-name\.with\ special\{chars