Loki 分别显示日志消息和额外字段

Loki display log message and extra fields separately

https://github.com/grafana/loki/issues/4249 中我发现了有趣的屏幕截图。

在此屏幕截图中,我看到日志级别和消息显示为粗体,白色文本和其他元数据(从日志消息收集)显示在单独的灰色行。

我已经搜索过文档,但没有找到如何实现这一点。老实说,我正在 ELK 中寻找类似“短消息”的东西,以使开发人员仅在实际需要时才看到元数据。 你能给我指点文档如何实现吗?

简答: 我发现GrafanaUI中没有这样的UI函数。 但是有两个功能可以帮助您实现这样的结果:

  1. 行格式 - 允许您仅显示消息的选定部分
  2. ANSI 转义序列呈现 - 允许您更改字体设置 (bold/italic/color)

长答案:

  • 这是我的初始测试查询(仅显示具有“HornetQ”的消息){appname=~".+"} |= "HornetQ" 它会产生以下输出。
  • 我已将行格式添加到查询中以默认仅显示消息字段
{appname=~".+"} |= "HornetQ"
  | json
  | line_format "{{ .message }}"

但是,如果您打开邮件详细信息,您仍然会看到所有 json 字段

  • 让我们添加修改行格式以在单独的行上显示额外字段的预览。

我们将使用 pattern '<_entry>' 来保存初始 json 以供进一步处理。此外,我们将在 line_formatif 中使用 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 "3[1;37m{{ .message }}3[0m\n{{ range $k, $v := (fromJson ._entry)}}{{if ne $k \"message\"}}3[1;30m{{$k}}: 3[0m3[2;37m{{$v}}3[0m {{ end }}{{ end }}"

你可以看到 |= "HornetQ" 部分在最后一个查询中丢失了,因为它打破了最后一个查询(带有颜色),所以我跳过它。

P.S。所以现在我的解决方案不适用于全文搜索:(