📜  Splunk-子搜索(1)

📅  最后修改于: 2023-12-03 15:05:15.298000             🧑  作者: Mango

Splunk 子搜索

Splunk 子搜索是一种在 Splunk 搜索语言中使用的高级搜索技术。它使你可以针对已经搜索到的结果集再次执行搜索操作,以进一步分析数据、计算转换或进一步组织搜索结果。 子搜索运行的数据被称为子搜索数据,这些数据是根据先前的搜索结果创建的一个新的结果集。

以下是一些使用子搜索的示例:

检索特定事件类型的计数
sourcetype=apache_access_combined | stats count | search count > 100 | `comment("Find requests with over 100 events to find potential DDoS")`

在这个搜索中,我们首先搜索 Apache 访问的联合数据,使用 stats 命令计算数量。该结果集稍后被使用,以找到包含超过 100 个事件的事件类型。

按时间范围聚合
sourcetype=apache_access_combined | timechart span=1hour count | `comment("Aggregate count of events over the course of an hour")`

此搜索使用 timechart 命令将搜索结果按照时间分组,并将每个时间段内包含的事件计数。

使用多个子搜索
index=weblogs | search "GET /" | fields source | stats count by source | where count > 100 | search source="server1" | `comment("Find sources with over 100 'GET /' requests from server1")`

该子搜索查找包含超过 100 个特定请求的源(例如“GET /”)。首先,我们搜索所有 Web 日志,找出包含所需字符串的所有事件。然后我们从这些事件中提取出源字段,并计算每个源中包含该字符串的次数。最后,我们过滤出包含超过 100 个该事件的源,并进一步限制搜索结果,使其仅包含来自服务器 1 的事件。

使用子搜索完成数据清洗
sourcetype=access_combined | rex field=_raw "^127\.0\.0\.1 - - \[(?<timestamp>[^\]]+)\] \"(?<method>\S+)\s(?<url>[^\s\"]+)\sHTTP/1\.\d\" (?<status>\d+)" | search status=404 | fields timestamp url | `comment("Extract fields and filter out anything not a 404")`

该搜索首先搜索所有“access_combined”源类型,并使用 rex 命令提取出访问数据中的时间戳、方法、URL 和状态码。接下来,我们使用 search 过滤出状态码为 404 的结果集。最后,我们从结果集中仅选择时间戳和 URL 字段。

Splunk 子搜索是一个强大的搜索技术,它可以帮助分析师更好的了解数据,并能更快地发现有用的信息。