Logstash詳解之——filter模塊-grok插件


1. grok插件:能匹配一切數據,但是性能和對資源的損耗也很大。

  grok內置字段類型參見: https://blog.csdn.net/cui929434/article/details/94390617

filter{
    
    grok{
        #match屬性,可以從message 字段中把時間給摳出來,並且賦值給另個一個字段logdate。
        #首先要說明的是,所有文本數據都是在Logstash的message字段中中的,我們要在過濾器里操作的數據就是message。
        #第二點:grok插件是一個十分耗費資源的插件。
        #第三點:grok有超級多的預裝正則表達式,基本上夠用,不需要自己編寫正則,內置字段類型參見 https://blog.csdn.net/cui929434/article/details/94390617。
        #但是,我還是不建議使用它,因為他完全可以用別的插件代替,當然,對於時間這個屬性來說,grok是非常便利的。
        match => ['message','%{TIMESTAMP_ISO8601:logdate}']
    }
}
這里提供一個例子(kibana內置grok debugger可以測試grok字段):

2、mutate插件:
  mutate插件是用來處理數據的格式的,你可以選擇處理你的時間格式,或者你想把一個字符串變為數字類型(當然需要合法),同樣的你也可以返回去做。可以設置的轉換類型 包括: "integer", "float" 和 "string"。
3、ruby插件: https://yq.aliyun.com/articles/154341
4、date插件:這里需要合前面的grok插件剝離出來的值logdate配合使用(當然也許你不是用grok去做)。
filter{
    date{
        #還記得grok插件剝離出來的字段logdate嗎?就是在這里使用的。你可以格式化為你需要的樣子,至於是什么樣子。就得你自己取看啦。
        #為什什么要格式化?
        #對於老數據來說這非常重要,應為你需要修改@timestamp字段的值,如果你不修改,你保存進ES的時間就是系統但前時間(+0時區)
        #單你格式化以后,就可以通過target屬性來指定到@timestamp,這樣你的數據的時間就會是准確的,這對以你以后圖表的建設來說萬分重要。
        #最后,logdate這個字段,已經沒有任何價值了,所以我們順手可以吧這個字段從event對象中移除。
        match=>["logdate","dd/MMM/yyyy:HH:mm:ss Z"]
        target=>"@timestamp"
        remove_field => 'logdate'
        #還需要強調的是,@timestamp字段的值,你是不可以隨便修改的,最好就按照你數據的某一個時間點來使用,
        #如果是日志,就使用grok把時間摳出來,如果是數據庫,就指定一個字段的值來格式化,比如說:"timeat", "%{TIMESTAMP_ISO8601:logdate}"
        #timeat就是我的數據庫的一個關於時間的字段。
        #如果沒有這個字段的話,千萬不要試着去修改它。

    }
}

 





引用自:https://yq.aliyun.com/articles/154341


免責聲明!

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



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