我有一个必须监视的用户名列表,并且列表每天都在增长。我阅读了Splunk文档,看来查找是处理这种情况的最佳方法。
我的查询的目标是利用查找功能并打印出列表中所有这些用户的所有下载事件。
样本日志
index=proxy123 activity="download"
{
"machine":"1.1.1.1",
"username":"[email protected]",
"activity":"download"
}
{
"machine":"2.2.2.2",
"username":"[email protected]",
"activity":"download"
}
{
"machine":"3.3.3.3",
"username":"[email protected]",
"activity":"download"
}
样本查找(username.csv)
users
[email protected]
[email protected]
[email protected]
当前查询:
index=proxy123 activity="download" | lookup username.csv users OUTPUT users | where not isnull(users)
结果:0(不正确)
我可能无法正确理解查询。有人可以纠正我并教给我正确的方法吗?
在查找文件中,该字段的名称为users
,而在事件中为username
。幸运的是,该lookup
命令具有一种在查找期间重命名字段的机制。尝试以下
index=proxy123 activity="download" | lookup username.csv users AS username OUTPUT users | where isnotnull(users)
现在,根据索引中包含的数据量以及与CSV中的用户名不匹配时要丢弃多少数据,您可以尝试其他方法,例如,使用子搜索。
index=proxy123 activity="download" [ | inputlookup username.csv | rename users AS username | return username ]
子搜索(在中的位)在这里发生的情况[]
是,子搜索将首先扩展为(username="[email protected]" OR username="[email protected]" OR username="[email protected]")
。这样您的主要搜索将变成
index=proxy123 activity="download" (username="[email protected]" OR username="[email protected]" OR username="[email protected]")
这可能比返回索引中的所有数据然后丢弃与用户列表不匹配的任何内容更有效。
此方法假定您username
首先提取了字段。如果不这样做,则可以尝试以下操作。
index=proxy123 activity="download" [ | inputlookup username.csv | rename users AS search | format ]
此扩展搜索将是
index=proxy123 activity="download" "[email protected]" OR "[email protected]" OR "[email protected]")
可能更适合您的数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句