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

Posted

技术标签:

【中文标题】如何在 grafana 中为 Loki 的 json 日志绘制图表?【英文标题】:How to draw a graph in grafana for json logs from Loki? 【发布时间】:2021-07-26 09:12:09 【问题描述】:

我只想使用 LOGQL 来绘制温度值。

我试过了: 我可以使用 |json 格式并带上温度标签。但找不到任何会绘制此标签的 LOG QL。只有聚合函数,例如随着时间的推移计数。

日志以以下格式存储:

Temperature":32, "Humidity":42
Temperature":31, "Humidity":42
Temperature":32, "Humidity":42

【问题讨论】:

【参考方案1】:

我不是这里的专家,但这是我在过去几天发现的:

您可能不希望Temperature 成为标签,它可以保留在日志行中。在 LogQL 中,您可以将其解析出来并在 Grafana 中绘图。

我认为,另一个问题是这些日志行绑定到单个时间点,但 Grafana 需要间隔数据。所以你需要一个聚合函数。

avg_over_time( |= "Temperature" | json | unwrap Temperature [2m])

|= "Temperature 部分用于过滤掉任何没有温度字段的日志事件,这只是对日志行字符串的搜索,因此如果“温度”出现在其他地方,它将不起作用。

`[2m] 假设在 2 分钟间隔内通常至少有一个日志行,因此我们对该间隔内的所有值进行平均。

如果 Grafana 现在显示大量数据系列,您希望在查询中添加 by (model, id)(或您的情况下为 by ())以合并它们。

【讨论】:

以上是关于如何在 grafana 中为 Loki 的 json 日志绘制图表?的主要内容,如果未能解决你的问题,请参考以下文章

Grafana/Loki:如何在 LogQL 中使用多选模板变量?

在 grafana 云中访问 loki

prometheus(或grafana)查询来评估grafana loki使用的存储?

Grafana Loki LogQL:过滤图例值

在 Grafana 上排序日志(来自 Loki)

使用 Grafana 和 Loki 删除重复条目