猿问

获取 json 数组中的指定元素 - 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”值时,我需要选择一个值。


饮歌长啸
浏览 309回答 3
3回答

红颜莎娜

有几种方法可以做到这一点 - 这是我最常使用的一种(假设你也想要旁边的):valuenameindex=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*"这将跳过多值字段中某处没有“”的所有事件x-real-iprequest.headers{}.name接下来,它将两个多值字段(名称和值)组合成一个mv字段,由字符分隔|然后展开结果集,以便一次查看一行最后,仅查找其中值为 “” 的结果x-real-ip如果要从组合字段中提取 ,请添加以下行:value| rex field-combined "|(?<x_real_ip>.+)"当然,您可以对数据执行任何其他 SPL 操作

暮色呼如

我尝试@Warren的答案,但我得到以下错误:“eval”命令中的错误:表达式格式不正确。预期)。您需要添加重命名,因为 中的字符会导致问题。这是有效的查询:{}mvzipindex=ndx sourcetype=srctp request.headers{}.name="x-real-ip"| rename request.headers{}.name AS headerName, request.headers{}.value AS headerValue&nbsp;| eval reviewers=mvzip(headerName,headerValue ,"|")|| mvexpand combined| search combined="x-real-ip*"

慕哥9229398

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*当您提出问题时,请提供正确的信息。您在此过程中已用完日志。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答