如何确定Splunk中数组字段的长度?

问题描述 投票:0回答:1

我已将以下数据(位于本地计算机上的

$SPLUNK_DATA
目录中)导入到 Splunk:

{"level":"info","msg":"","restaurants":[{"name":"El Farolito","cuisine":"Mexican"}],"time":"2024-09-29T12:32:37-07:00"}
{"level":"info","msg":"","restaurants":[{"name":"Flour + Water","cuisine":"Italian"},{"name":"San Ho Won","cuisine":"Korean"}],"time":"2024-09-29T12:32:37-07:00"}

我试图按每个日志条目中

restaurants
的数量对数据进行排序。使用 Docker 通过命令启动 Splunk 后

docker run -it -e SPLUNK_START_ARGS=--accept-license -e SPLUNK_PASSWORD=helloworld -p 8000:8000 -p 8089:8089 --volume $SPLUNK_DATA:/home/splunk splunk/splunk start

我导航到 localhost:8000,使用用户名

admin
和密码
helloworld
登录,然后转到设置 -> 数据输入 -> 文件并从
/home/splunk
:

导入该文件

enter image description here

现在我想添加一个新字段

n
,它代表
restaurants
的数量。使用我之前收到的 StackOverflow 答案,如何评估表示另一个字段长度的 Splunk 字段?,我尝试过

index=main | eval n=mvcount('restaurants{}')

但是,这似乎不起作用:从下面的表格视图中可以看出,

n
是空的:

enter image description here

如何才能使第一个日志条目的

n
2
,第二个日志条目(即餐厅数量)为
1

splunk splunk-query
1个回答
0
投票

尝试这个随处运行-SPL:

| makeresults ```start mock data```
    format=json 
    data="
        [
         {\"level\":\"info\",\"msg\":\"\",\"restaurants\":[{\"name\":\"El Farolito\",\"cuisine\":\"Mexican\"}],\"time\":\"2024-09-29T12:32:37-07:00\"},
         {\"level\":\"info\",\"msg\":\"\",\"restaurants\":[{\"name\":\"Flour + Water\",\"cuisine\":\"Italian\"},{\"name\":\"San Ho Won\",\"cuisine\":\"Korean\"}],\"time\":\"2024-09-29T12:32:37-07:00\"}
        ]
    "
| spath 
```end mock data```
| eval n=mvcount('restaurants{}.name')
| fields "restaurants{}.name" n
| table "restaurants{}.name" n

问题是 a) 没有任何字段

restaurants{}
可供您执行
mvcount()
。但是,您可以访问
restaurants{}.name
restaurants{}.cuisine
来获取每个拥有可数多值字段的计数。

© www.soinside.com 2019 - 2024. All rights reserved.