Logstash

如何在 Logstash 中解析人類可讀的字節數?

  • March 5, 2015

我正在處理包含以下部分的日誌文件:

538,486K of 1,048,576K

這些代表以人類可讀格式呈現的記憶體使用(Java 堆空間)。我想在 Kibana 的圖表中跟踪這些數字。為此,我想以某種方式使用 Logstash 的 grok 過濾器來解析這些數字,但我不知道如何處理(即忽略)千位分隔符。

理想情況下,我會有一些可以處理“K”並乘以一千的東西。在這個時間點上,我不知道任何系統都以千字節以外的單位登錄,但我不想做出這樣的假設。

過濾器允許使用選項mutate替換文本。gsub

gsub接受一個數組,其中每個三元組值表示:

  • 目標欄位名稱
  • 搜尋模式
  • 替換模式

它在技術上支持正則表達式,但在這種情況下我們不需要它。

首先,我們去掉逗號。很簡單。

其次,我們乘法。應該K乘以 1000?如果是這樣,在我看來,我們可以簡單地替換K000.

把它們放在一起:

filter {
   mutate {
       gsub {[
           "some_field", ",", "",
           "some_field", "K", "000"
       ]}
   }
}

您可以根據需要添加其他替換選項。

根據您的情況,K可能會乘以 1024,這會有點複雜。我沒有看到任何開箱即用的解決方案,但您可以使用ruby過濾器來執行一些算術。

引用自:https://serverfault.com/questions/673150