Splunk 条件计数

Splunk conditional count

我有一些关于导入到 Splunk 的文件的 CSV 数据。数据如下所示:

"\domain\path\to\file\","<filename>","<fsize>","<ext>","<Last_access>","<last_write>","<creation_time>","<attributes>","<owner>"

我已经使用以下方法将所有日期字符串转换为纪元:

| eval epoch_LastAccessTime=strptime(LastAccessTime, "%d/%m/%Y %H:%M:%S")
...
...

我想得到:

这是我在卡住之前尝试过的搜索查询:

index="<my_index>" sourcetype="<my_sourcetype>" 
| rex field=DirectoryName "\\domain\.org\\teams\\(?<Team>[^\\]*)" 
offset_field=_extracted_fields_bounds  
| eval epoch_LastAccessTime=strptime(LastAccessTime, "%d/%m/%Y 
%H:%M:%S") 
| eval _time=epoch_LastAccessTime
| timechart span=6mon count

我试过使用以下命令:

| where epoch_LastAccessTime>=three_year_ago_from_now AND 
epoch_LastAccessTime<=six_months_ago_from_now

但是,这不包括其他所有内容 (3y+)

我希望结果类似于:

TimeRange  Perc
6m-3y      60%
3y+        40%

来源:Lowell

不要使用 where 来限制结果,而是使用 eval 来构建新的分类字段。

届时您将不再需要时间表。

类似于:

| eval TimeRange=case(epoch_LastAccessTime>=three_year_ago_from_now, "3y+",
                      epoch_LastAccessTime>=six_months_ago_from_now, "6m-3y",
                      0=0, "less than 6m")
| stats count by TimeRange
| eventstats sum(count) as total_count
| eval pct=100*count/total_count