LogQL - label_format 有条件地格式化标签
LogQL - label_format conditionally format a label
我有一个日志流,我从中提取一组要设置为标签或指标值的字段。流不是标准格式,因此我使用 regexp 管道命令提取字段,如下所示。
(...)
| regexp "(?P<api>\w+)\sAPI"
| regexp "\[performed\.(?P<action>\w+)"
| regexp "duration\s\[(?P<duration_ms>\d+)"
| regexp "response \[(?P<response>.*?)\]"
问题是 api
捕获的字段在某些交互中未被填充,我想更新这些情况以便设置默认值 - 用于演示目的。
我已经尝试使用本机 LogLQ 的 contains and hasPrefix 模板命令,因为文档表明它们可以与 if else
块一起使用。该文档不清楚如何在 label_format
或 line_format
管道命令中构建这些块。但根据方法的不同,它要么 returns 格式错误,要么什么都不做。
一个工作示例将不胜感激。
谢谢。
注意:已尝试将其标记为 LogQL 主题,但没有足够的声誉来这样做。
我相信我已经得到了一些与 line_format
一起工作的东西:
{environment=~"$environment",level=~"$level"} | json | line_format "{{ if hasSuffix `Exception` .thrown_name }} Exception occurred! {{end}} {{.message}}" |~ "(?i)$grep"
反引号的文档很难找到,方法参数的顺序也有点不同。希望这有帮助吗?
通过@AnthonyA 的回复,我能够在提取字段后使用 label_format
模板函数修改其值。
(..)
| regexp "response \[(?P<response>.*?)\]"
(..)
| label_format api=`{{ if hasPrefix "Error" .response }}ERROR{{else}}{{.response}}{{end}}`
(..)
这样,如果字段的值以“错误”开头,则该字段的值将被替换为 ERROR
,否则将保留其原始值。
我有一个日志流,我从中提取一组要设置为标签或指标值的字段。流不是标准格式,因此我使用 regexp 管道命令提取字段,如下所示。
(...)
| regexp "(?P<api>\w+)\sAPI"
| regexp "\[performed\.(?P<action>\w+)"
| regexp "duration\s\[(?P<duration_ms>\d+)"
| regexp "response \[(?P<response>.*?)\]"
问题是 api
捕获的字段在某些交互中未被填充,我想更新这些情况以便设置默认值 - 用于演示目的。
我已经尝试使用本机 LogLQ 的 contains and hasPrefix 模板命令,因为文档表明它们可以与 if else
块一起使用。该文档不清楚如何在 label_format
或 line_format
管道命令中构建这些块。但根据方法的不同,它要么 returns 格式错误,要么什么都不做。
一个工作示例将不胜感激。 谢谢。
注意:已尝试将其标记为 LogQL 主题,但没有足够的声誉来这样做。
我相信我已经得到了一些与 line_format
一起工作的东西:
{environment=~"$environment",level=~"$level"} | json | line_format "{{ if hasSuffix `Exception` .thrown_name }} Exception occurred! {{end}} {{.message}}" |~ "(?i)$grep"
反引号的文档很难找到,方法参数的顺序也有点不同。希望这有帮助吗?
通过@AnthonyA 的回复,我能够在提取字段后使用 label_format
模板函数修改其值。
(..)
| regexp "response \[(?P<response>.*?)\]"
(..)
| label_format api=`{{ if hasPrefix "Error" .response }}ERROR{{else}}{{.response}}{{end}}`
(..)
这样,如果字段的值以“错误”开头,则该字段的值将被替换为 ERROR
,否则将保留其原始值。