如何在 Grafana 上使用 LogQL 将 Loki 解析的字段绘制为数值?

Posted

技术标签:

【中文标题】如何在 Grafana 上使用 LogQL 将 Loki 解析的字段绘制为数值?【英文标题】:How to plot Loki parsed fields as numerical values using LogQL on Grafana? 【发布时间】:2021-06-25 09:43:54 【问题描述】:

我的设置:Loki:2.1.0,Grafana:6.7.3

我的软件在 Kubernetes 上运行,Loki 收集它的日志。它看起来像这样:

[2021-03-29 10:13:05] [INFO] Q_len=256 sol_q=0.049 info_q=0.240
[2021-03-29 10:13:05] [INFO] Q_len=196 sol_q=0.047 info_q=0.144 

我在日志中使用了 logfmt,所以 loki 可以检测到我的字段:

现在我想在 Grafana 上随时间绘制 info_q 的平均值。以下是我尝试过的事情:

avg by (info) (avg_over_time(job="ism/ism-core-es" | regexp `.*info_q=(?P<info_q>.*)` | unwrap info_q [1m]))

返回

正如错误信息提示的那样,我做到了

avg by (info) (avg_over_time(job="ism/ism-core-es" | regexp `.*info_q=(?P<info_q>.*)` | unwrap info_q | __error__="" [1m] ))

返回空图表。还有这个

avg_over_time(
job="ism/ism-core-es"
| regexp ".*info_q=(?P<info_q>.*?)"
| unwrap info_q [5m])

也不返回任何内容。

我做错了什么?我必须打字吗?任何帮助表示赞赏!

【问题讨论】:

【参考方案1】:

事实证明:

avg by (info) (avg_over_time( (job="ism/ism-core-es" |logfmt |unwrap info|__error__="")[1m]))

成功了

【讨论】:

以上是关于如何在 Grafana 上使用 LogQL 将 Loki 解析的字段绘制为数值?的主要内容,如果未能解决你的问题,请参考以下文章

Grafana Loki LogQL:过滤图例值

如何在 grafana 中为 Loki 的 json 日志绘制图表?

LogQL - label_format 有条件地格式化标签

如何使用 Docker-compose 文件在 Azure WebApp 上部署 Grafana?

如何在 Grafana 主页上设置仪表板?

如何在 Grafana 上显示 AWS CodeDeploy 部署