logstash三個元件的第二個元件,也是真個logstash工具中最複雜,最蛋疼的乙個元件,當然,也是最有作用的乙個元件。
1、grok外掛程式 grok外掛程式有非常強大的功能,他能匹配一切資料,但是他的效能和對資源的損耗同樣讓人詬病。
filter']}}2、mutate外掛程式 mutate外掛程式是用來處理資料的格式的,你可以選擇處理你的時間格式,或者你想把乙個字串變為數字型別(當然需要合法),同樣的你也可以返回去做。可以設定的轉換型別 包括: "integer", "float" 和 "string"。
filter3、ruby外掛程式 官方對ruby外掛程式的介紹是——無所不能。ruby外掛程式可以使用任何的ruby語法,無論是邏輯判斷,條件語句,迴圈語句,還是對字串的操作,對event物件的操作,都是極其得心應手的。}
filter 作用域裡面生效。4、date外掛程式 這裡需要合前面的grok外掛程式剝離出來的值logdate配合使用(當然也許你不是用grok去做)。#這裡我初始化了乙個名為field的hash欄位。可以在下面的coed屬性裡面使用。
init => [field={}]
#code屬性使用兩個冒號進行標識,你的所有ruby語法都可以在裡面進行。
#下面我對一段資料進行處理。
#首先,我需要在把message欄位裡面的值拿到,並且對值進行分割按照「|」。這樣分割出來的是乙個陣列(ruby的字元創處理)。
#第二步,我需要迴圈陣列判斷其值是否是我需要的資料(ruby條件語法、迴圈結構)
#第三步,我需要吧我需要的字段新增進入evevt物件。
#第四步,選取乙個值,進行md5加密
#什麼是event物件?event就是logstash物件,你可以在ruby外掛程式的code屬性裡面操作他,可以新增屬性字段,可以刪除,可以修改,同樣可以進行樹脂運算。
#進行md5加密的時候,需要引入對應的包。
#最後把冗餘的message欄位去除。
code => "
array=event。get('message').split('|')
array.each do |value|
if value.include? 'md5_value'
then
require 'digest/md5'
md5=digest::md5.hexdigest(value)
event.set('md5',md5)
endif value.include? 'default_value'
then
event.set('value',value)
endend
remove_field=>"message""}
}
filter"5、json外掛程式,這個外掛程式也是極其好用的乙個外掛程式,現在我們的日誌資訊,基本都是由固定的樣式組成的,我們可以使用json外掛程式對其進行解析,並且得到每個字段對應的值。#timeat就是我的資料庫的乙個關於時間的字段。
#如果沒有這個字段的話,千萬不要試著去修改它。}}
filterjson外掛程式還是需要注意一下使用的方法的,下圖就是多層結構的弊端:#注意:如果你的json資料是多層的,那麼解析出來的資料在多層結里是乙個陣列,你可以使用ruby語法對他進行操作,最終把所有資料都裝換為平級的。
}
對應的解決方案為:
rubylogstash filter元件的外掛程式基本介紹到這裡了,這裡需要明白的是:
add_field、remove_field、add_tag、remove_tag 是所有 logstash 外掛程式都有。相關使用反法看欄位名就可以知道。不如你也試試吧。。。。
Logstash詳解之 output模組
logstash的output模組,相比於input模組來說是乙個輸出模組,output模組整合了大量的輸出外掛程式,可以輸出到指定檔案,也可輸出到指定的網路埠,當然也可以輸出資料到es.在這裡我只介紹如何輸出到es,至於如何輸出到埠和指定檔案,有很多的文件資料可查詢.elasticsearch d...
logstash 配置詳解
摘要 logstash配置總結和例項 這裡記錄logstash配置中注意的事項 整個配置檔案分為三部分 input,filter,output。參考這裡的介紹 1 在windows中,檔案路徑中分隔符要使用 而不是 如果使用了 那麼 匹配將會失敗。2 預設的 timestamp是使用utc時間表示的...
Logstash 使用詳解
logstash是一款輕量級的日誌蒐集處理框架,可以方便的把分散的 多樣化的日誌蒐集起來,並進行自定義的處理,然後傳輸到指定的位置,比如某個伺服器或者檔案。本文針對官方文件進行翻譯以及實踐,希望有更多的有使用者了解 使用這款工具。通過命令列,進入到logstash bin目錄,執行下面的命令 log...