Splunk中提取字段可以在extract field中提取,但是有时extract太多,就会提示让我们去写正则来提取,也可以直接在spl中匹配字段。
以下图中的event log为例,提取FIELD_A,FIELD_B,FIELD_C三个字段:
index="xxx" source="yyy" ...
| rex max_match=0 ".*\s*FIELD_A=\"(?<FIELD_A_NAME>[^\,]*)\".*\s*"
| rex max_match=0 ".*\s*FIELD_B=\"(?<FIELD_B_NAME>[^\,]*)\", FIELD_C.*\s*"
| rex max_match=0 ".*\s*FIELD_C=\"(?<FIELD_C_NAME>[^\,]*)\".*\s*"
#这里的FIELD_A_NAME/FIELD_B_NAME/FIELD_C_NAME表示匹配后提取出来的字段名,一般情况下我们会使之与event中它本身的字段名保持一致。这里在第二层正则中引用了FIELD_C来匹配完善FIELD_B,是因为log中在FIELD_B的值中包含了双引号,会使提取混淆,所以这里将FIELD_C拿过来匹配可以更准确。