基於filebeat processor開發日誌採樣功能

說明

簡單瞭解filebeat開發插件的流程,及插件工做的機制。 github源碼地址git

Processors 說明

filebeat對於收集的每行日誌都封裝成event, event 發送到 output 以前,可在配置文件中定義processors去處理 event。 processor 做用:github

  • 減小導出的字段
  • 添加其餘的 metadata
  • 執行額外的處理和解碼

每一個 processor 會接收一個 event,將一些定義好的行爲應用到 event,而後返回 event,若是你在配置文件中定義了一系列 processors,那麼他會按定義的順序依次執行。golang

因此,能夠基於此機制進行filebeat功能擴展。測試

filebeat-plugin

filebeat plugin processorui

add_sample_data

  • 基於URL維度計數,進行採樣收集spa

  • 採樣率控制config.go中Sample插件

add_sample_data使用場景

準確率要求不高的狀況下,可使用採樣的機制,好比,經過日誌,計算服務的可用性,基於統計計數的狀況,會存在偏差,服務波動狀況下,可能致使抽樣的數據都是正常的,異常的日誌漏掉。日誌

版本信息

  • os: mac 10.14.6
  • golang: go1.12.7
  • filebeat: 7.4.2

基於以上版本測試經過code

測試運行

./filebeat -e -c filebeat_test.yml --plugin add_sample_data.so開發

開發

  • 下載beats源碼 github.com/elastic/bea…
  • 能夠選擇filebeat對應版本的分支
  • libbeat/processors下新建add_sample_data目錄(下面有自帶processor)
  • 插件編譯打包在當前目錄下
// 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
複製代碼

filebeat.yml配置

#================================ Processors =====================================
processors:
  - add_sample_data: ~
複製代碼

問題

  1. 啓動運行命令簽名錯誤

因爲Mac系統(csrutil)保護系統完整性致使的問題,運行 csrutil status 查看結果,若是是 enable,關閉disable便可。具體操做步驟自行百度

  1. 啓動 plugin was built with a different version of package errors

plugin 編譯問題致使,解決方法,基於beats對應版本源代碼從新編譯,執行filebeat下make命令,替換原有 filebeat 二進制文件

參考

github.com/zhonglongbo…

相關文章
相關標籤/搜索