我已将以下数据(位于本地计算机上的
$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
: 导入该文件
现在我想添加一个新字段
n
,它代表restaurants
的数量。使用我之前收到的 StackOverflow 答案,如何评估表示另一个字段长度的 Splunk 字段?,我尝试过
index=main | eval n=mvcount('restaurants{}')
但是,这似乎不起作用:从下面的表格视图中可以看出,
n
是空的:
如何才能使第一个日志条目的
n
为 2
,第二个日志条目(即餐厅数量)为 1
?
尝试这个随处运行-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
来获取每个拥有可数多值字段的计数。