将InfluxDB查询转换为PromQL

时间:2019-07-17 06:57:16

标签: influxdb promql influxql

我试图将查询从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"

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

相应的PromQL查询应如下所示:

rate(sqlserver_waitstats_wait_time_ms{sql_instance=~"$InstanceName", wait_type=~".*HADR.*"}[5m])

假设将Influx线转换为Prometheus指标时执行以下转换:

  • measurement名称位于每个field名称之前,以获取与Prometheus兼容的度量标准名称。例如,如果measurementsqlserver_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之间的区别。