我目前正在将指标从statsd
移至prometheus
。
我正在努力将查询从statsD语法转换为prometheus。我不清楚这一点,正在寻找一些比较两者的文档。具体来说,这个范围语法[5m]和rate等。它不能清楚地翻译成statsD语言。
在此示例中,我想测量和处理正在处理的事件的平均滞后时间,从事件创建的时间戳(事件的属性)到代码本身报告度量标准的当前时间之间:
伪:
def processEvent(event)
eventTime = event.timestamp
now = Now()
lag = now - eventTime
...
statsD.time(...metric_name(event.feed,event.action)..., lag)
statsD查询如下:
groupByNode(stats.timers.<node_ip>.lag.<feed>.<action>.mean, 4, 'avg')
(此指标在所有实例中报告的平均时间)
在我的新代码中创建指标,如下所示:
current_lag_gauge = Gauge('kafka_lag', 'tracks the lag of events',labelnames=['feed', 'action'])
lag = event.timestamp - Now()
...
current_lag_gauge.labels(feed="v1", action="v2").set(lag)
库正在添加一些其他标签。指标显示如下:
kafka_lag{action="v2",app="app1",base_chart_version="xxx",feed="123",instance="1.2.3.4:8000",job="kubernetes-xxx",kubernetes_namespace="xxxx",kubernetes_pod_name="xxxxx",pod_template_hash="123431314",release="xxxx"}
是否有参考指南或备忘单将2进行比较?也将很高兴得到几个示例查询来解决此翻译。
答案 0 :(得分:0)
“健壮的感知”中有一篇很棒的文章,内容涉及translations between monitoring languages。
它没有涵盖您提到的确切用例,但可以作为解决此问题的很好参考。
关于您的特定查询,我认为avg(kafka_lag) by (feed)
应该会为您提供与您提到的statsd查询大致相同的结果,但是我不确定,因为我没有两套数据玩和比较。