我正在尝试获取 GET 请求的目录路径,并使用此捕获正则表达式在 Splunk 中对其进行计数。
index=main sourcetype="access_combined_wcookie" | rex "(?i)\"GET /(?P<MYDIR>\w+)/" | timechart count by MYDIR
这种方法很管用。它抓取顶级目录的名称并按预期按时间汇总,但它还将 HEAD 请求显示为“NULL”或“OTHER”。
正则表达式在 perl 和 Python 中均按预期工作(即,它与 HEAD 请求不匹配。)有人知道我必须做什么才能让 Splunk 停止报告我一开始没有捕获的内容吗?这种行为确实违反直觉。
答案1
你认为 Splunk 报告了你没有捕获的内容,是因为你误解了雷克斯命令有效。
雷克斯不会过滤掉记录。如果正则表达式存在,它会将您提取的字段添加到事件中。因此,在您的例子中,您将 MYDIR 字段添加到所有包含 GET 的事件中,但您仍会获取所有事件。
源类型access_combined_wcookie是 Splunk 中预训练的源类型,其中已经定义了字段提取。使用已提取的方法字段将搜索范围限制为 GET。
index=main sourcetype="access_combined_wcookie" method=GET | rex "(?i)\"GET /(?P<MYDIR>\w+)/" | timechart count by MYDIR