(二)logstash之插件的簡單介紹

一、codec

1、簡介

codec plugin 作用於input 和output plugin,負責將數據在原始與logstash event之間切換,常見的 codec如下:

  • plain 讀取原始數據
  • dots 將內容簡化爲點進行輸出
  • rubydebug 將 logstash event 按照ruby 格式輸出,方便調試
  • line 處理帶有換行符的內容
  • json 處理json 格式的內容
  • multiline 處理多行數據的內容,將其作爲一條數據輸出(多行變一條)

2、multiline 介紹

當一個event 的 message 有多行組成時,需要使用multiline,常見的場景是堆棧日誌信息的處理,如:

// 此種數據特點:一是多行二是開頭有空格
Caused by: java.net.SocketTimeoutException: connect timed out
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

主要設置參數如下:

  • pattern: 設置行匹配的正則表達式,可以使用 grok
  • what:取值爲previous或next,如果匹配成功,那麼匹配行是歸屬於上一個事件還是下一個事件
  • negate:取值爲true或false,意爲是否對 pattern 的結果取反

舉例:收集時間開頭的數據

input {
    stdin {
        codec => multiline {
            pattern => "^\[%{TIMESTAMP_ISO8601}\]"
            negate => true
            what => "previous"
        }
    }
}

二、filter

1、簡介

filter 是 logstash 功能強大的主要原因,他可以對logstash event 進行豐富的處理,比如解析數據、刪除字段、類型轉換等等,常見如下:

  • date 日期解析
  • grok 正則匹配解析
  • dissect 分隔符解析
  • mutate 對字段進行處理,如重命名、刪除、替換等
  • json 按照json 解析字段內容到指定字段
  • geoip 增加地理位置數據
  • ruby 利用ruby 代碼來動態修改 logstash event

2、date 介紹

將日期字符串解析爲日期類型,然後替換@timestamp 字段或者指定的其他字段。

參數:

  • match:類型爲數組,用於指定日期匹配的格式,可設置多個
  • target:類型爲字符串,用於指定賦值的字段名,默認是@timestamp
  • timezone:類型爲字符串,用於指定時區

3、grok 介紹

參數:

  • match:匹配多種樣式
  • overwrite:替換目標字段值(區別於追加)
  • tag_on_fail

補充:熱加載

啓動命令加上 -r 即可。此時修改配置文件,就會被加載,無需重啓。

4、dissect 介紹

基於分隔符原理解析數據,解決 grok 解析時消耗過多 cpu 資源的問題。

語法:

  • %{}:大括號之間的是字段
  • %{}:這個格式之間的是分隔符
  • %{}:如果大括號之間什麼也不寫,就相當於佔位符,但是不輸出到結果
  • +:追加到某個字段
  • /:設置字段的順序

參數:

dissect分割後的字段值都是字符串類型,可以使用convert_datatype 屬性進行類型轉化,如下:

filter {
    dissect {
        convert_datatype => {
            age => "int"
        }
    }
}

5、mutate 介紹

可以對字段進行各種操作,如重命名、刪除、替換、更新等,主要操作如下:

  • convert:類型轉換
  • gsub:字符串替換,清洗數據
  • split/join/merge:字符串切割 / 數組合併爲字符串 /2個 數組合併爲1個數組
  • rename:字段重命名
  • update/replace:字段內容更新或替換
  • remove_field:刪除字段

6、json 介紹

將字段內容爲json 格式的數據進行解析

參數:

  • source:需要解析的字段
  • target:解析完成的數據存儲的字段
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章