logstash filter plugin


1. 基本語法
%{NUMBER:duration} %{IP:client}  

2. 支持的數據類型
默認會把全部的匹配都看成字符串,好比0.043, 想要轉成浮點數,能夠%{NUMBER:num:float}匹配,目前只支持int和float兩種。

3. 舉例說明
有下面一段http日誌:
55.3.244.1 GET /index.html 15824 0.043

匹配模式:
%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}

在logstash中配置以下:
input {
  file {
    path => "/var/log/http.log"
  }
}
filter {
  grok {
    match => { "message" => "%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }
  }
}

這樣匹配過濾後,將會額外增長下面的字段:
client: 55.3.244.1
method: GET
request: /index.html
bytes: 15824
duration: 0.043

4. 自定義模式
有時候logstash沒有適合的模式,就須要自定義以下,格式以下:
(?<field_name>the pattern here)

如匹配nginx中的訪問時間:2017/07/29 12:12:04
自定義模式:(?<DateTime>%{YEAR}[./]%{MONTHNUM}[./]%{MONTHDAY} %{TIME})
匹配過濾後就會增長字段:DateTime: 2017/07/29 12:12:04

5. 自定義pattern文件
咱們都知道logstash自帶了許多匹配模式(/home/elk/logstash/vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.0/patterns/grok-patterns),
可是咱們也能夠自定義本身的pattern模式
  5.1 建立目錄patterns
  5.2 建立一個文件,名字隨意,好比extra
  5.3 好比咱們要匹配一個字段queue_id,那extra文件的內容以下
      POSTFIX_QUEUEID [0-9A-F]{10,11}
  5.4 而後咱們在filter中就能夠引用POSTFIX_QUEUEID模式來匹配了
      filter {
        grok {
               patterns_dir => ["./patterns"]
               match => { "message" => "%{SYSLOGBASE} %{POSTFIX_QUEUEID:queue_id}: %{GREEDYDATA:syslog_message}" }
                }
      }
        
            日誌:Jan  1 06:25:43 mailserver14 postfix/cleanup[21403]: BEF25A72965: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>
            匹配過濾後將輸出下面字段:
            timestamp: Jan 1 06:25:43
            logsource: mailserver14
            program: postfix/cleanup
            pid: 21403
            ueue_id: BEF25A72965
            syslog_message: message-id=<20130101142543.5828399CCAF@mailserver14.example.com>
    html

相關文章
相關標籤/搜索