2

我正在尝试将来自两个不同日志的信息组合到一个查询中,但我不确定如何或是否可以做到这一点。基本上我想这样做:

LOG 1:
<client=foo userId=1234 version=10>
<client=foo userId=5432 version=8>
<client=bar userId=4567 version=4>

LOG 2:
fooid=1234 speed=500
fooid=5432 speed=300

我要做的是收集所有版本 == 10 的用户的速度统计数据。

根据我的阅读,如果我创建 userId == fooid 的别名,可以这样说:

fooid=* AND version=10

但是,我仍然有一个问题,即并非所有 userId 都是 foid。所以我希望能够在日志 1 中创建一个 fooid 字段别名,但前提是 client=foo。这可能吗,如果可以,我该怎么做?

此外,如果有其他方法可以执行此搜索,我们将不胜感激。

4

3 回答 3

3

您是将这些日志引入同一个索引还是让它们分开索引?您应该能够执行 index=FOO OR index=FOO2 | 之类的操作。如果您要引入单独的索引,请搜索 fooid=* AND version=10。

我们的开发者网站 (http://dev.splunk.com) 上有一个搜索备忘单 - http://dev.splunk.com/web_assets/developers/pdf/splunk_reference.pdf

搜索语言参考指南也可以提供帮助: http ://docs.splunk.com/Documentation/Splunk/latest/SearchReference/WhatsInThisManual

于 2012-04-04T22:58:48.600 回答
1

这应该可以解决问题:

index=FOO (sourcetype=LOG1 client=foo version=10) OR (sourcetype=LOG2) 
| eval user=coalesce(fooid,userid) 
| stats avg(speed) by user

合并评估说“如果用户存在,则用户是 fooid,否则用户是用户 ID”。除此之外,我刚刚进行了适当的搜索,以获取您想要的数据和简单的统计数据。

于 2015-03-24T21:25:41.013 回答
0

在搜索时这样做: index=FOO OR index=FOO2 | eval mergedID=if(isnotnull(fooid),fooid,userId) | transaction mergedID | stats min(speed) max(speed) avg(speed) by version

于 2015-01-06T17:08:38.737 回答