微服務框架(二十八)Logstash 使用文檔

此係列文章將會描述Java框架Spring Boot、服務治理框架Dubbo、應用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等開源框架,其中穿插着Spring Boot中日誌切面等技術的實現,然後通過gitlab-CI以持續集成爲Docker鏡像。

本文爲Logstash 使用文檔

本系列文章中所使用的框架版本爲Spring Boot 2.0.3-RELEASE,Spring 5.0.7-RELEASE,Dubbo 2.6.2。

Logstash

Logstash 是開源的服務器端數據處理管道,能夠同時從多個來源採集數據,轉換數據,然後將數據發送到存儲庫中。(ELK套件中存儲庫爲ES)

Logstash 啓動

pipelines目錄下存放了logstash所有的數據處理管道配置文件,故會啓動所有流水線

--config.reload.automatic參數,自動重載配置

nohup ./bin/logstash --config.reload.automatic -f ./pipelines/ &

!> 目前爲nohup實現後臺啓動,後續可考慮統一至supervisor管理

Logstash input

爲了接收到日誌信息,需要配置input插件

tcp

若日誌信息爲json格式,則codecjson,文本爲plain

input {
  tcp {
    host => "172.16.7.7"
    port => "5045"
    codec => "json"
  }
}

beat

input{
  beats {
    host => "172.16.7.7"
    port => "5044"
    add_field => ["log_channel", "nginx"]
  }
}

Logstash filter

Logstash filter插件在事件執行的中間過程進行相關的數據處理,通常根據事件的特徵選擇性地使用相應的過濾器。

Filter插件列表詳見Logstash Filter

grok

簡述

Grok可以將非結構化日誌數據解析爲結構化和可查詢的內容。

此工具非常適用於syslog日誌,apache和其他Web服務器日誌,mysql日誌,以及通常爲人類而非計算機使用而編寫的任何日誌格式。

Logstash默認提供約120種模式。詳見grok原生正則,亦可在patterns_dir參數使用自定義的正則模式串

工作原理

Grok的工作原理是將文本模式組合成與日誌匹配的內容。grok模式的語法是 %{SYNTAX:SEMANTIC}

示例

55.3.244.1 GET /index.html 15824 0.043

上述HTTP日誌可使用以下模式匹配

%{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}" }
  }
}

經過grok過濾後,日誌事件解析爲以下字段

  • client: 55.3.244.1
  • method: GET
  • request: /index.html
  • bytes: 15824
  • duration: 0.043

json

  • skip_on_invalid_json:允許對無效json不進行過濾操作
  • source:進行json轉換的字段
  • remove_field:刪除字段(可用於剔除轉換前的字段)
 json {
    skip_on_invalid_json => true
    source => "message"
    remove_field => ["message"]
 }

詳細配置見Json filter plugin

geoip

geoip過濾器根據Maxmind geolite2數據庫的數據,轉換相應IP地址地理位置的信息。

geoip {
    source => "client_ip"
}

詳細配置見Geoip filter plugin

FAQ

  1. 數據處理管道配置文件會在啓動時自動merge,注意各pipeline中的操作會應用在所有流水線中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章