【问题标题】:Translating InfluxDB query to PromQL将 InfluxDB 查询转换为 PromQL
【发布时间】:2019-07-17 06:57:16
【问题描述】:

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

有人可以帮忙吗?

【问题讨论】:

    标签: influxdb promql influxql


    【解决方案1】:

    相应的 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 之间的区别。

    【讨论】:

      猜你喜欢
      • 2021-01-24
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 2021-05-24
      相关资源
      最近更新 更多