我正在尝试将查询从 InfluxDB Query 重写为 PromQL:
SELECT non_negative_derivative("wait_time_ms", 1s) FROM "sqlserver_waitstats" WHERE ("sql_instance" =~ /^$InstanceName$/) AND ("wait_type" =~ /HADR/) AND $timeFilter GROUP BY "wait_type"
有人能帮忙吗?
相应的 PromQL 查询应如下所示:
rate(sqlserver_waitstats_wait_time_ms{sql_instance=~"$InstanceName", wait_type=~".*HADR.*"}[5m])
假设将 Influx 行转换为 Prometheus 指标时执行以下转换:
measurement
field
为了获得与 Prometheus 兼容的指标名称,每个名称都附加了名称。例如,如果measurement
是sqlserver_waitstats
,而字段名称是wait_time_ms
,那么生成的 Prometheus 指标名称将sqlserver_waitstats_wait_time_ms
如上面的查询中所示。tags
都按原样翻译为 Prometheus 标签。例如, sql_instance=foobar
来自 Influx 行的标签被翻译为sql_instance="foobar"
Prometheus 标签。这是 VictoriaMetrics 在接受 Influx 线路协议数据时使用的默认转换 - 有关详细信息,请参阅这些文档。
请注意,PromQL 标签匹配器中的正则表达式默认绑定到标签值的开头和结尾。所以不需要在上面的正则表达式中设置^
和设置,而我们需要添加到正则表达式中,所以它匹配任何包含而不是精确匹配的值。$
sql_instance
.*
wait_type
HADR
我建议还为初学者阅读 PromQL 教程,以便更好地了解 PromQL 和 InfluxQL 之间的区别。