ELK之Logstash配置文件詳解


  Logstash 是一個開源的數據收集引擎,它具有備實時數據傳輸能力。它可以統一過濾來自不同源的數據,並按照開發者的制定的規范輸出到目的地。它以插件的形式來組織功能,通過配置文件來描述需要插件做什么,配置文件主要由input、filter和output三部分組成。

一、input

  負責從數據源提取數據,由於我提取的是日志文件,所以使用的是file插件,該插件常用的幾個參數是:

  • path:指定日志文件路徑。
  • type:指定一個自定義名稱,設置type后,可以在后面的filter和output中對不同的type做不同的處理,適用於需要消費多個日志文件的場景。
  • start_position:指定起始讀取位置,“beginning”表示第一次啟動從文件頭開始讀取,后面動態讀取;“end”表示從文件尾開始(類似tail -f)。
  • sincedb_path:sincedb_path 指定sincedb文件的路徑。sincedb保存每個日志文件已經被讀取到的位置,如果Logstash重啟,對於同一個文件,會繼續從上次記錄的位置開始讀取。如果想重新從頭讀取文件,需要刪除sincedb文件。如果設置為“/dev/null”,即不保存位置信息。

二、 output

  負責輸出數據,改部分也有提供豐富的插件。 以es為例,需要指定es接收數據的地址和端口,以及日志存入的index 名稱。
# 輸出到es
output{
        elasticsearch{
            hosts => ["192.168.1.3:9200"]
            index => "log-%{+YYYY.MM.dd}"
        }
}

三、filter

  負責通過配置插件來解析、處理日志數據。插件介紹

  •  grok:用於將非結構化的文本數據轉化為結構化的數據,內部使用正則語法對文本數據進行匹配,為了降低使用復雜度,其提供了一組pattern,我們可以直接調用pattern而不需要自己寫正則表達式,參考源碼grok-patterns。也可以使用工具Grok Debugger可以對解析語法進行調試。
  • kv:用於將某個字段的值進行分解,類似於編程語言中的字符串Split。在下面的配置中,我們將request_args字段值按照“&”進行分解,分解后的字段名稱以“request_args_”作為前綴,並且丟棄重復的字段。            
  • geoip:用於根據IP信息生成地理位置信息,默認使用自帶的一份GeoLiteCity database,也可以自己更換為最新的數據庫,但是需要數據格式需要遵循Maxmind的格式(參考GeoLite),似乎目前只能支持legacy database,數據類型必須是.dat。下載GeoLiteCity.dat.gz后解壓, 並將文件路徑配置到source中即可。        
  •  translate,用於檢測某字段的值是否符合條件,如果符合條件則將其翻譯成新的值,寫入一個新的字段,匹配pattern可以通過YAML文件來配置。


免責聲明!

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



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