Loki 分别显示日志消息和额外字段
Loki display log message and extra fields separately
在 https://github.com/grafana/loki/issues/4249 中我发现了有趣的屏幕截图。
在此屏幕截图中,我看到日志级别和消息显示为粗体,白色文本和其他元数据(从日志消息收集)显示在单独的灰色行。
我已经搜索过文档,但没有找到如何实现这一点。老实说,我正在 ELK 中寻找类似“短消息”的东西,以使开发人员仅在实际需要时才看到元数据。
你能给我指点文档如何实现吗?
简答:
我发现GrafanaUI中没有这样的UI函数。
但是有两个功能可以帮助您实现这样的结果:
- 行格式 - 允许您仅显示消息的选定部分
- ANSI 转义序列呈现 - 允许您更改字体设置 (bold/italic/color)
长答案:
- 这是我的初始测试查询(仅显示具有“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 "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。所以现在我的解决方案不适用于全文搜索:(
在 https://github.com/grafana/loki/issues/4249 中我发现了有趣的屏幕截图。
在此屏幕截图中,我看到日志级别和消息显示为粗体,白色文本和其他元数据(从日志消息收集)显示在单独的灰色行。
我已经搜索过文档,但没有找到如何实现这一点。老实说,我正在 ELK 中寻找类似“短消息”的东西,以使开发人员仅在实际需要时才看到元数据。 你能给我指点文档如何实现吗?
简答: 我发现GrafanaUI中没有这样的UI函数。 但是有两个功能可以帮助您实现这样的结果:
- 行格式 - 允许您仅显示消息的选定部分
- ANSI 转义序列呈现 - 允许您更改字体设置 (bold/italic/color)
长答案:
- 这是我的初始测试查询(仅显示具有“HornetQ”的消息)
{appname=~".+"} |= "HornetQ"
它会产生以下输出。 - 我已将行格式添加到查询中以默认仅显示消息字段
{appname=~".+"} |= "HornetQ"
| json
| line_format "{{ .message }}"
- 让我们添加修改行格式以在单独的行上显示额外字段的预览。
我们将使用 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 "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。所以现在我的解决方案不适用于全文搜索:(