如何编写Grok模式适配两类场景匹配X-ray Tracing ID的resource字段
适配双场景的Grok模式解决方案
问题根源
你之前尝试的X-ray Tracing ID : Root=%{DATA:resource}[^@]*写法无效的核心原因:%{DATA}是贪心匹配模式,会尽可能多的匹配所有字符,直接把@和后续内容都纳入resource字段,后续的[^@]*规则不会触发。
正确Grok模式
推荐最稳妥的写法:
X-ray Tracing ID : Root=(?<resource>[^@\s]+)
规则说明
(?<resource>[^@\s]+)是自定义捕获组,直接将匹配结果赋值给resource字段[^@\s]+表示匹配1个及以上「不是@、也不是空白字符」的内容,会自动在遇到@、空格、行尾时停止匹配,天然兼容带@后缀和不带@后缀的两类日志场景
匹配效果验证
针对你给出的两类日志样例,提取结果完全符合预期:
- 无@后缀日志:
resource = 1-612dd69a-4b2951db368113005fb367ce - 带@后缀日志:
resource = 1-612dd69a-4b2951db368113005fb367ce(@及后续内容自动忽略)
内容的提问来源于stack exchange,提问作者Dawid
相关产品推荐
相关产品推荐

