filebeat 啟動流程

2021-09-25 12:53:22 字數 2221 閱讀 6307

因為各種各樣的原因,好久沒有寫部落格了,還是希望能夠堅持下來

講解一下filebeat的啟動流程吧,核心功能先不描述了0.0

filebeat啟動入口在main.go檔案內,cmd.rootcmd.execute()啟動filebeat;

func

main()

}

filebeat/cmd/root.go檔案內,載入&初始化相關的配置,以及構建filebeat物件。下面**裡的beater.new方法會構建了filebeat物件。genrootcmdwithsettings方法內會構建啟動filebeat相關命令。

var rootcmd *cmd.beatsrootcmd

func

init()

)...

}

genrootcmdwithsettings函式在filebeat/libbeat/cmd/root.go檔案內。此函式內會呼叫filebeat/libbeat/cmd/run.go檔案內的func genruncmd(settings instance.settings, beatcreator beat.creator) *cobra.command方法。

func

genruncmd

(settings instance.settings, beatcreator beat.creator)

*cobra.command },

}...

}

根據方法名字就能關注到重點

instance.

run(settings, beatcreator)

run方法內會構建beat物件,並呼叫launch方法。ps:go裡面物件的命名真是蛋疼

b, err :=

newbeat

(name, idxprefix, version)

...return b.

launch

(settings, bt)

launch方法內又構建了beater物件(beater是個介面),並且在最後呼叫了beater介面的run方法啟動。這個介面有多個實現,但是我們這裡只需要關注乙個,檔案filebeat/beater/filebeat.go檔案內的run方法,這裡就是啟動filebeat的實現。

func

(b *beat)

launch

(settings settings, bt beat.creator)

error

run方法內,會構建乙個crawler物件,此物件用來採集資料,工作原理其實是對inputs的包裝,inputs就是filebeat官網介紹的核心元件之一。

// run allows the beater to be run as a beat.

func

(fb *filebeat)

run(b *beat.beat)

error

... err = crawler.

start

(b.publisher, registrar, config.configinput, config.configmodules, pipelineloade***ctory, config.overwritepipelines)

if err !=

nil...

}

至此整個filebeat啟動流程基本清晰了。

filebeat 資料採集流程

filebeat啟動流程 講解了filebeat的啟動流程,filebeat在構建完crawler物件,開始採集流程。crawler的start方法內,會啟動inputs func c crawler start pipeline beat.pipeline,r registrar.registra...

uboot啟動流程概述 uboot啟動流程

u boot系統啟動流程 大多數bootloader都分為stage1和stage2兩大部分,u boot也不例外。依賴於cpu體系結構的 如裝置初始化 等 通常都放在stage1,且可以用組合語言來實現,而stage2則通常用c語言來實現,這樣可以實現複雜的功能,而且有更好的可讀性和移植性。2.1...

activity啟動流程 App啟動流程三問

裡面涉及到哪些重要的成員呢?都分別負責了什麼,比如ams?啟動流程了解後,對我們開發有什麼幫助呢?1 比如啟動優化,分析啟動過程,其實可以優化啟動速度的地方有三個地方 activity的oncreate方法,同樣進行執行緒處理,懶載入。或者預建立activity,提前類載入等等。2 又比如外掛程式化...