我试图将查询从InfluxDB查询重写为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"
任何人都可以提供帮助吗?
答案 0 :(得分:0)
相应的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标签。例如,将Influx行中的sql_instance=foobar
标签转换为sql_instance="foobar"
Prometheus标签。这是VictoriaMetrics在接受Influx线路协议数据时使用的默认翻译-有关详细信息,请参见these docs。
请注意,默认情况下,PromQL标签匹配器中的正则表达式绑定到标签值的开头和结尾。因此,无需在上述^
的正则表达式中设置$
和sql_instance
,而我们需要向.*
的正则表达式中添加wait_type
,因此它与包含HADR
而不是完全匹配的任何值。
我建议您也阅读PromQL tutorial for beginners,以更好地理解PromQL和InfluxQL之间的区别。