OTel Collector:如何在JSON字符串中精准匹配applicationId?
解决方案
你需要在过滤规则中正确转义双引号,确保正则表达式精准匹配目标键值对序列。以下是修正后的配置:
filter/rpts: error_mode: ignore logs: log_record: - 'IsMatch(body, "\"applicationId\":\"49d26b54\"")'
转义说明
- YAML层面:整个
IsMatch表达式用单引号包裹,内部第二个参数的双引号字符串中,需要用\"转义双引号,这样YAML解析后,传递给IsMatch的正则表达式就是"applicationId":"49d26b54"。 - 正则匹配:这个正则会精准匹配日志body中带双引号的完整键值对序列,避免
49d26b54出现在其他上下文(比如其他字段的值)时的误匹配。
如果希望更严谨地匹配字面量(防止未来出现正则元字符的情况),可以用正则的\Q...\E包裹目标字符串,配置如下:
filter/rpts: error_mode: ignore logs: log_record: - 'IsMatch(body, "\Q\"applicationId\":\"49d26b54\"\E")'
\Q和\E之间的内容会被当作纯字面量处理,不会被解析为正则元字符,进一步提升匹配的精准性。
内容的提问来源于stack exchange,提问作者dMb
相关产品推荐
相关产品推荐

