如何在splink搜索中获取嵌套JSON事件的特定字段



我正在尝试提取Splunk中的这个userid(它是applicationTags的一部分(字段。

有人能帮忙吗。

Json:

json
{ [-]
allocatedMB: -1
allocatedMemorySeconds: 1546332
allocatedVCores: -1
allocatedVcoreSeconds: 273
applicationId: application_1658075295053_0071
applicationTags: [ [-]
hive_20220718142121_632022dc-9399-4034-a45d-08042dfb4367
userid=rajani
]
attributes: { [-]
diagnostics: Session stats:submittedDAGs=1, successfulDAGs=1, failedDAGs=0, killedDAGs=0
}
endTime: 2022-07-18T14:23:52.384Z
mr2AppInformation: { [-]
}
name: HIVE-907b6fd3-aa12-4136-af66-9787fdec52c5
pool: xxx
progress: 100
runningContainers: -1
startTime: 2022-07-18T14:21:23.254Z
state: FINISHED
user: hive
}

您可以使用splunk:的spath命令

... | spath output=myfield path=applicationTags{}.userid

更多信息和示例可在官方文件中找到:https://docs.splunk.com/Documentation/SplunkCloud/latest/SearchReference/Spath

至少有两种方法可以使用

如果您的源类型的JSON没有被Splunk正确解析,这个rex会帮您提取:

| rex field=_raw "userid=(?<userid>w+)"

如果被正确解析,那么你可能可以通过以下主题的变体来获得它:

| rename applicationTags{}.userid as userid

要获得Splunk知道的此源类型的字段的完整列表,请使用fieldsummary。例如:

index=ndx sourcetype=srctp
| fieldsummary
| fields field values

最新更新