【splunk】按時間統計並找到異常值


場景:

有長時間對多個端口訪問的日志數據,每天對端口的訪問量是穩定的。如果某一天對某個端口的訪問量突然增加表示可能出現了問題。現在要通過splunk找到異常值。

 

思路:

統計每個端口每天的訪問量。統計其最大值,平均值,中位數。最大值和平均值比值大的,以及最大值和中位數比值大的就是可能異常的地方。通過一個交互折線圖來展示選定端口每天的訪問量。

 

1.統計每個端口每天的訪問量。

source="port.csv" |fillnull value=NULL|search port!=NULL port != 0 | convert timeformat="%Y-%m-%d" ctime(_time) AS date | stats count as date_count by date,port

關鍵點:

convert timeformat="%Y-%m-%d" ctime(_time) AS date:數據中時間戳字段為_time,舉例:2017-06-26T00:00:00.000+08:00   用convert將時間轉換為2017-06-26的日期格式。這樣同一天的數據都會有相同的date。

 

2.統計每個端口每天訪問量的最大值,平均值,中位數,以及比值。

source="port.csv" |fillnull value=NULL|search port!=NULL| convert timeformat="%Y-%m-%d" ctime(_time) AS date | stats count as date_count by date,port|stats median(date_count) as median_count max(date_count) as max_count avg(date_count) as avg_count by dport|eval avg_deviation=max_count/avg_count|eval median_deviation=max_count/median_count|sort -avg_deviation

 

3.獲取指定端口的每天訪問量

步驟2做表后,點擊編輯來源,打開儀表盤xml,在對應的<search></search>標簽下添加

<drilldown>
     <set token="select_port">$click.value$</set>
</drilldown>

這樣,在點擊port后,就可以通過$select_port$來獲取到對應的port值了。

做折線圖:

source="port.csv" port="$select_port$"|convert timeformat="%Y-%m-%d" ctime(_time) AS date|stats count by date

標題設為:$select_port$端口每日訪問量

這樣當通過表格選擇端口后,就可以在折線圖上直觀看到訪問量變化。

 

效果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM