Loki 分别显示日志消息和额外字段
Posted
技术标签:
【中文标题】Loki 分别显示日志消息和额外字段【英文标题】:Loki display log message and extra fields separately 【发布时间】:2021-12-14 01:45:34 【问题描述】:在https://github.com/grafana/loki/issues/4249我发现了有趣的截图。
在此屏幕截图中,我看到日志级别和消息以粗体显示,白色文本和其他元数据(从日志消息中收集)以灰色显示在单独的行上。
我搜索了文档,但没有找到如何实现这一点。老实说,我正在 ELK 中寻找类似“短消息”的东西,以使开发人员仅在实际需要时才能看到元数据。 能否请您指出文档如何实现?
【问题讨论】:
在 Grafana 论坛上打开了具有相同问题的主题 - community.grafana.com/t/… 也尝试在 grafana slack 中提问,但没有得到任何帮助 - grafana.slack.com/archives/C0Y4TLW74/p1635456385131100 grafana.slack.com/archives/CEPJRLQNL/p1635418969204900 【参考方案1】:简短回答: 我发现 Grafana UI 中没有这样的 UI 功能。 但是有两个功能可以帮助您实现这样的结果:
-
行格式 - 允许您仅显示消息的选定部分
ANSI 转义序列渲染 - 允许您更改字体设置(粗体/斜体/颜色)
长答案:
这是我的初始测试查询(仅显示带有“HornetQ”的消息)appname=~".+" |= "HornetQ"
它产生以下输出。
我在查询中添加了行格式,默认情况下只显示消息字段
appname=~".+" |= "HornetQ"
| json
| line_format " .message "
但是,如果您打开消息详细信息,无论如何您都会看到所有 json 字段
让我们添加修改行格式以在单独的行上显示额外字段的预览。我们将使用pattern '<_entry>'
来保存初始 json 以供进一步处理。我们还将在 line_format
和 if
中使用 gotpl 循环,这将跳过 message field
appname=~".+" |= "HornetQ"
| pattern `<_entry>`
| json
| line_format " .message \n range $k, $v := (fromJson ._entry)if ne $k \"message\"$k: $v end end "
让我们通过更改字体选项来提高消息的可读性。
为了实现这一点,我们将使用 ANSI 转义序列 (additional info)
appname=~".+"
| pattern `<_entry>`
| json
| line_format "\033[1;37m .message \033[0m\n range $k, $v := (fromJson ._entry)if ne $k \"message\"\033[1;30m$k: \033[0m\033[2;37m$v\033[0m end end "
您可以看到最后一个查询中缺少|= "HornetQ"
部分,因为它破坏了最后一个查询(带有着色),所以我跳过它。
附:所以现在我的解决方案不适用于全文搜索:(
【讨论】:
以上是关于Loki 分别显示日志消息和额外字段的主要内容,如果未能解决你的问题,请参考以下文章