获取 json 数组中的指定元素 - SPLUNK
Get Specified element in array of json - SPLUNK
我是 splunk 的新手。
我有这个 json:
"request": {
"headers": [
{
"name": "x-real-ip",
"value": "10.31.68.186"
},
{
"name": "x-forwarded-for",
"value": "10.31.68.186"
},
{
"name": "x-nginx-proxy",
"value": "true"
}
当 属性 名称具有 "x-real-ip" 值时,我需要选择一个值。
your search
| rex max_match=0 "name\":\s\"(?<fieldname>[^\"]+)"
| rex max_match=0 "value\":\s\"(?<fieldvalue>[^\"]+)"
| eval tmp=mvzip(fieldname,fieldvalue,"=")
| rename tmp as _raw
| kv
| fields - _* field*
当您提问时,请提供正确的信息。
您 运行 在此过程中没有日志。
有几种方法可以做到这一点 - 这是我最常用的方法(假设你 也 想要 value
和 name
):
index=ndx sourcetype=srctp request.headers{}.name="x-real-ip"
| eval combined=mvzip(request.headers{}.name,request.headers{}.value,"|")
| mvexpand combined
| search combined="x-real-ip*"
这会跳过 request.headers{}.name
多值字段中某处没有“x-real-ip
”的所有事件
接下来,它将两个多值字段(名称和值)合并为一个 mv 字段,由 |
字符分隔
然后扩展结果集,这样您一次只能查看一行
最后,您只 查找其中包含值“x-real-ip
”的结果
如果您想从组合字段中提取 value
,请添加以下行:
| rex field-combined "|(?<x_real_ip>.+)"
当然,您可以根据需要对数据执行任何其他 SPL 操作
我是 splunk 的新手。 我有这个 json:
"request": {
"headers": [
{
"name": "x-real-ip",
"value": "10.31.68.186"
},
{
"name": "x-forwarded-for",
"value": "10.31.68.186"
},
{
"name": "x-nginx-proxy",
"value": "true"
}
当 属性 名称具有 "x-real-ip" 值时,我需要选择一个值。
your search
| rex max_match=0 "name\":\s\"(?<fieldname>[^\"]+)"
| rex max_match=0 "value\":\s\"(?<fieldvalue>[^\"]+)"
| eval tmp=mvzip(fieldname,fieldvalue,"=")
| rename tmp as _raw
| kv
| fields - _* field*
当您提问时,请提供正确的信息。 您 运行 在此过程中没有日志。
有几种方法可以做到这一点 - 这是我最常用的方法(假设你 也 想要 value
和 name
):
index=ndx sourcetype=srctp request.headers{}.name="x-real-ip"
| eval combined=mvzip(request.headers{}.name,request.headers{}.value,"|")
| mvexpand combined
| search combined="x-real-ip*"
这会跳过 request.headers{}.name
多值字段中某处没有“x-real-ip
”的所有事件
接下来,它将两个多值字段(名称和值)合并为一个 mv 字段,由 |
字符分隔
然后扩展结果集,这样您一次只能查看一行
最后,您只 查找其中包含值“x-real-ip
”的结果
如果您想从组合字段中提取 value
,请添加以下行:
| rex field-combined "|(?<x_real_ip>.+)"
当然,您可以根据需要对数据执行任何其他 SPL 操作