Grafana Loki数据源多捕获组派生字段变量访问问题咨询

Grafana Loki数据源的派生字段确实支持访问正则的多个捕获组,对应变量没有完全在早期文档中列出,具体可用变量和规则如下:
${__value.raw}:返回正则匹配到的完整字符串- 按序号访问捕获组:从0开始计数,第N个捕获组用
${__value.raw.captures[N]}访问,比如第一个括号匹配的内容对应${__value.raw.captures[0]},第二个对应${__value.raw.captures[1]},序号依次顺延 - 按命名访问捕获组:如果你的正则使用了命名捕获组语法,比如
(?P<traceId>[a-z0-9]+)\s+(?P<spanId>[a-z0-9]+),可以直接用捕获组名称取值,对应写法为${__value.raw.captures.traceId}、${__value.raw.captures.spanId}
配置示例
如果你的日志格式为 [trace:abc123] [span:def456] request processed,配置派生字段时填写的正则为 \[trace:(\w+)\] \[span:(\w+)\]:
- 提取trace ID作为派生字段时,值填写
${__value.raw.captures[0]}即可拿到abc123 - 提取span ID作为派生字段时,值填写
${__value.raw.captures[1]}即可拿到def456 - 如果你需要拼接多个捕获组生成内部跳转链接,直接组合变量即可,比如
/apm/trace/${__value.raw.captures[0]}?span=${__value.raw.captures[1]}
这个能力从Grafana 7.0版本上线派生字段功能时就已支持,只是早期版本的配置页提示和官方文档遗漏了相关说明,在8.x之后的版本中才逐步补充到帮助文本中。
内容的提问来源于stack exchange,提问作者Kimble
相关产品推荐
相关产品推荐

