HOME > 解決方案

介紹一個不常用但很捧的 Splunk SPL 指令 - Autoregress

2021/11/30




使用 Autoregress 不會後悔

這篇貼文是《使用 Splunk 進行捕獵:基礎知識》系列的第 26 篇,將介紹 Splunk 的搜尋指令或搜尋概念,並將其分解為幾個基本元件。

如果您像我一樣,偶爾會發現自己盯著 Splunk 的搜尋欄,斟酌著應該如何最有效地分析一系列資料,重複處理著一個或多個欄位。  

如果您腦海裡浮現傳統的程式設計語法,那麼首先想到的可能是 for 或 while 迴圈 (它們都不依循 SPL 中的慣例)。使用 stats、streamstats、eventstats 等命令,或是依序使用 foreach,聰明的捕獵者應該用哪一個?

其實,這取決於資料和所需的結果。例如,假設我們想要計算一個銷售人員或一隻逃跑的青蛙所走過的總距離。資料可能包含需要反覆計算的航點資訊,例如緯度和經度 (在某些情況下,我們可以從來源資料取得這項資訊,例如使用 iplocation 命令)。 

把它們輸入 autoregress。看起來很不錯。但問題是,自迴歸命令應該是用於計算移動平均線。這裡有一個 autoregress 命令的 Splunk 文件說明連結。建議您先看一下,我們再繼續。 

看完了嗎?很好。接下來我們來談談實際應用。

因為 autoregress 命令是一個集中式串流命令,它對搜尋傳回的每個事件都會進行轉換,並且只能在 Search Head 中使用。

你可能會想「說實話,我以前從沒聽說過這個命令。」好吧,你不是唯一的一個人。它雖不是新命令,但並不是特別出名。Aplura, LLC 的 Kyle Smith 在他的 .conf2016 演講「鮮為人知的搜尋命令」中介紹過 autoregress。與反覆命令 (例如 mapforeach) 不同,autoregress 命令是一個統計命令,與廣被使用的 statststats 命令屬於同一系列。

Kyle 將其定義為「一個移動平均線,是從一系列值的連續事件 (通常大小相同且重疊) 計算得出的一系列平均值」,並特別指出:
  • 允許根據前一次的值進行高級統計計算 
  • 數值欄位的移動平均線 
  • 網路頻寬趨勢,包括 kbps、延遲、連線持續時間 
  • 網路分析趨勢,包括瀏覽次數、瀏覽持續時間、平均下載大小 
  • 惡意流量趨勢─連線失敗次數過多 
 
假設我們計劃進行一次公路旅行,參觀美國中大西洋地區的一些頂級精釀啤酒廠,並將這些資料輸入 Splunk。我們想要計算航點之間的距離和旅行的總距離 (以便了解要為我們的油箱加進多少汽油)。我們將 autoregress 應用到緯度和經度,反覆加總旅程的所有航點,然後執行任何後續可以進行的計算,例如 globedistance() 或 streamstats。 
將相關欄位列出來後,您的命令可能如下所示:




以下是一個範例:
 



如上所示,當 stats、streamstats、eventstats 或 foreach 等命令不一定適合使用時,autoregress 命令可以幫助您收集資訊。如果您像我一樣,那麼將 autoregress 命令附入您的 SPL 工具包絕對不會後悔。 
 



我們邀請您參加在 .conf21 首映的第六屆 BOSS of the SOC,您將有機會登台並表現您的 Splunk 超能力。

捕獵快樂!