簡單瞭解filebeat開發插件的流程,及插件工做的機制。 github源碼地址git
filebeat對於收集的每行日誌都封裝成event, event 發送到 output 以前,可在配置文件中定義processors去處理 event。 processor 做用:github
每一個 processor 會接收一個 event,將一些定義好的行爲應用到 event,而後返回 event,若是你在配置文件中定義了一系列 processors,那麼他會按定義的順序依次執行。golang
因此,能夠基於此機制進行filebeat功能擴展。測試
filebeat plugin processorui
基於URL維度計數,進行採樣收集spa
採樣率控制config.go中Sample插件
準確率要求不高的狀況下,可使用採樣的機制,好比,經過日誌,計算服務的可用性,基於統計計數的狀況,會存在偏差,服務波動狀況下,可能致使抽樣的數據都是正常的,異常的日誌漏掉。日誌
基於以上版本測試經過code
./filebeat -e -c filebeat_test.yml --plugin add_sample_data.so開發
// processor名稱定義用於filebeat.yml配置文件Processors配置
const (
processorName = "add_sample_data"
)
// 插件註冊
var Bundle = plugin.Bundle(
processors.Plugin(processorName, newSampleProcessor),
)
複製代碼
基於 github.com/elastic/bea… 源碼下進行編譯打包
cd libbeat/processors/add_sample_data
go build -buildmode=plugin
複製代碼
#================================ Processors =====================================
processors:
- add_sample_data: ~
複製代碼
因爲Mac系統(csrutil)保護系統完整性致使的問題,運行 csrutil status 查看結果,若是是 enable,關閉disable便可。具體操做步驟自行百度
plugin 編譯問題致使,解決方法,基於beats對應版本源代碼從新編譯,執行filebeat下make命令,替換原有 filebeat 二進制文件