【发布时间】:2020-01-24 11:27:22
【问题描述】:
当一切正常时,我的指标被程序设置为 0。我想将空值视为错误值(在我的情况下为 1)。我想出的最简单的方法是将度量中的空值替换为 1。Grafana 似乎不支持这一点,所以我的问题是是否有 PromQL 表达式可以将每个空值替换为不同的值。
【问题讨论】:
-
可能需要在查询末尾添加
or vector(1)?
标签: prometheus grafana promql
当一切正常时,我的指标被程序设置为 0。我想将空值视为错误值(在我的情况下为 1)。我想出的最简单的方法是将度量中的空值替换为 1。Grafana 似乎不支持这一点,所以我的问题是是否有 PromQL 表达式可以将每个空值替换为不同的值。
【问题讨论】:
or vector(1)?
标签: prometheus grafana promql
Prometheus 中没有null,只有不存在的样本。始终让您的应用程序公开指标是最简单的,但是您可以在不这样做的应用程序上使用unless。见Absent Alerting for Scraped Metrics。
【讨论】:
or vector(1) 可以在您的查询返回单个时间序列而没有附加标签的情况下提供帮助。在这种情况下,以下查询用1 填补空白:
sum(your_query) or vector(1)
如果your_query 返回多个时间序列或具有任意附加标签集的时间序列,则 Prometheus 没有提供一种简单的通用方法来使用指定值填充空白:(
幸运的是,VictoriaMetrics 中的 MetricSQL 提供了一个简单的解决方案 - default 运算符。例如,以下查询使用指定值 1 填充从 your_query 返回的所有时间序列的所有空白:
your_query default 1
在these docs 中查看有关default 运算符和其他MetricsQL 功能的更多详细信息。
【讨论】: