1

我正在尝试将查询从 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"

有人能帮忙吗?

4

1 回答 1

0

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

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

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

  • measurementfield为了获得与 Prometheus 兼容的指标名称,每个名称都附加了名称。例如,如果measurementsqlserver_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_typeHADR

我建议还为初学者阅读 PromQL 教程,以便更好地了解 PromQL 和 InfluxQL 之间的区别。

于 2020-07-05T12:48:06.903 回答