logstash常用外掛程式介紹

2021-09-12 15:36:00 字數 3447 閱讀 2372

在《使用efk快速搭建安全可靠的日誌服務》一文中,我們已經大致介紹了分布式日誌服務的各個元件。但是對於很多實現細節,並未涵蓋到。本文主要介紹logstash用到的外掛程式,以及對外掛程式的離線打包,避免每次手動安裝外掛程式。本文主要分為4部分:

外掛程式的離線打包

input外掛程式

filter外掛程式

output外掛程式

在使用外掛程式之前,我們先了解乙個概念:事件。logstash 每讀取一次資料的行為叫做事件。

在生產環境中,logstash可能是部署到多台機器上,如果每次logstash的安裝更新都需要手動更新一遍外掛程式成本是非常高的。那我們可以對用到的外掛程式進行offline打包。

製作logstash-offline-plugins-x.x.x.zip說明:

需要在一台已經安裝了logstash的機器上,先給logstash安裝好所需要的外掛程式

然後再匯出外掛程式,具體命令:

bin/logstash-plugin update logstash-filter-mutate 

bin/logstash-plugin install logstash-filter-json_encode

bin/logstash-plugin prepare-offline-pack logstash-filter-mutate logstash-filter-json_encode

參考elastic的官方文件:

在logstash安裝時通過如下命令進行外掛程式包的安裝:

bin/logstash-plugin install file://$(pwd)/logstash-offline-plugins.zip
安裝外掛程式後要及時觀察logstash的列印日誌,避免因為外掛程式版本衝突導致的logstash啟動失敗的情況。

輸入外掛程式允許乙個特定的事件源可以讀取到 logstash 管道中,配置在 input {} 中,且可以設定多個。 在《使用efk快速搭建安全可靠的日誌服務》一文中我們是分別將input、filter和output三部分的配置放到了不同的配置檔案中。input的配置在input.conf檔案中。

由於我們使用的是efk,因此需要beats外掛程式。可以參考官網:

input 

}

需要注意的是,在6.4版本以上的beats配置中,多了ssl_peer_metadata,可以拿到證書裡的meta資訊,可以便於我們後續在logstash上做一些鑑權校驗。

除了beats外掛程式,inputs型別外掛程式還有很多種,主要列舉如下:

更多外掛程式配置介紹參考官網:

filter外掛程式就比較多了。日誌接入之後要進行日誌的規則匹配、過濾等操作,配置filter是必不可少的。最長用到的filter外掛程式有以下幾種:

grok是logstash最主要的過濾外掛程式,grok是通過系統預定義的正規表示式或者通過自己定義正規表示式來匹配日誌中的各個值,安裝了logstash後缺省會有一些常用軟體的日誌匹配正則,在使用時自己可以根據自己的日誌格式或者對匹配正則進行調整或者直接呼叫。如果,自己想在其他目錄定義正則規則匹配日誌,在使用時需要指定正則的路徑。

對於以下一行日誌:

55.3.244.1 get /index.html 15824 0.043
使用如下的規則:

% % % % %
grok配置示例如下:

filter  % % % %" }

}}

那麼這行日誌經過grok之後會得到以下的field:

client: 55.3.244.1

method: get

request: /index.html

bytes: 15824

duration: 0.043

常用的配置選項:

date用於解析欄位中的日期,然後使用該日期或時間戳作為事件的logstash時間戳。

對於date外掛程式的介紹,在感覺是官網 的翻譯版本)中有非常詳細的介紹。我來列舉乙個自己在配置過程中遇到的示例:

對於給定的時間格式:

2019-01-10t18:11:28.699+08:00
需要進行配置的pattern應該如下:

date
需要注意的是,對於filter.conf配置是可以熱載入的,如果時間格式配置錯誤,會導致logstash程序掛掉,對於問題的排查,可以自行查詢logstash的日誌。

mutate 外掛程式可以在字段上執行變換,包括重新命名、刪除、替換和修改。這個外掛程式相當常用。

比如:你已經根據 grok 表示式將 tomcat 日誌的內容放到各個欄位中,想把狀態碼、位元組大小或是響應時間,轉換成整型;

你已經根據正規表示式將日誌內容放到各個欄位中,但是欄位的值,大小寫都有,這對於 elasticsearch 的全文檢索來說,顯然用處不大,那麼可以用該外掛程式,將字段內容全部轉換成小寫。

示例如下:

filter " }

}mutate

}

在筆者之前寫的《使用efk快速搭建安全可靠的日誌服務》一文中,主要使用mutate外掛程式來add_field, remove_field, convert,gsub等操作。其中covert可以將字串型別轉換為int/long/float等型別,便於進行聚合等操作。

例如:

mutate
關於更多filter型別外掛程式可以參考:

和前面介紹的input外掛程式一樣,output外掛程式也是最基礎最簡單的輸出外掛程式。在《使用efk快速搭建安全可靠的日誌服務》一文中我們使用的elasticsearch作為最終的輸出儲存,因此output外掛程式使用的是elasticsearch。對於grok解析失敗的檔案會寫入到本地檔案中,因此用了file外掛程式,通過分支進行判斷。示例如下:

output .log"

}} else -%"

document_id => "%"

ssl => true

ssl_certificate_verification => true

truststore => "/home/work/certificate/truststore.jks"

truststore_password => "adofkoe"

user => "logstash"

password => "dafodmfkamkefadfg"}}

}

除了elasticsearch,還支援以下輸出:

更多可以參考官網:

logstash的各種外掛程式極大豐富了其功能。在實際使用中,我們可以根據自己的實際需求進行相關配置,來構建自己的日誌服務系統。筆者此處主要是對自己使用過程中所用到內容的總結。遇到的很多實際問題,可以自行查詢官網進行解決。

logstash常用外掛程式介紹

在 使用efk快速搭建安全可靠的日誌服務 一文中,我們已經大致介紹了分布式日誌服務的各個元件。但是對於很多實現細節,並未涵蓋到。本文主要介紹logstash用到的外掛程式,以及對外掛程式的離線打包,避免每次手動安裝外掛程式。本文主要分為4部分 外掛程式的離線打包 input外掛程式 filter外掛...

logstash常用外掛程式介紹

在 使用efk快速搭建安全可靠的日誌服務 一文中,我們已經大致介紹了分布式日誌服務的各個元件。但是對於很多實現細節,並未涵蓋到。本文主要介紹logstash用到的外掛程式,以及對外掛程式的離線打包,避免每次手動安裝外掛程式。本文主要分為4部分 外掛程式的離線打包 input外掛程式 filter外掛...

Logstash常用外掛程式

logstash外掛程式 常用的流行外掛程式 input 外掛程式 filters 外掛程式 output 外掛程式 input 外掛程式 流行的logstash輸入外掛程式 file 檔案流 檔案輸入外掛程式從輸入的內容中流事件,每個事件都被假定為單行。它會自動檢測到旋轉的旋轉並處理它。它保留了讀...