編譯Filebeat原始碼
阿新 • • 發佈:2020-08-13
專案使用了Filebeat,現在需要執行在ARM架構的伺服器上,但是Filebeat官方沒有提供,需要自己編譯一份
filebeat等元件的原始碼地址https://github.com/elastic/beats ,可以選擇需要的版本,然後下載ZIP包來使用,也可以按照下面步驟直接git下載
編譯filebeat需要go語言環境,先安裝go環境
#建立工作目錄 mkdir -p /opt/gowork #安裝go和git 命令 yum install -y go git #設定環境變數 echo "export GOROOT=/usr/lib/golang" >> /etc/profile echo "export GOBIN=\$GOROOT/bin" >> /etc/profile echo "export GOPATH=/opt/gowork" >> /etc/profile echo "export PATH=\$PATH:\$GOROOT:\$GOBIN:\$GOPATH" >> /etc/profile #重新整理環境變數 . /etc/profile #測試go是否成功,檢視env中GOPATH是否生效 go version go env
然後下載原始碼(吐槽一下國內的破網,國外的什麼網站都遮蔽,下載程式碼費了好長時間)
mkdir -p ${GOPATH}/src/github.com/elastic cd ${GOPATH}/src/github.com/elastic # 我需要的6.8版本,根據實際情況確定分支 git clone -b 6.8 https://github.com/elastic/beats.git
下載完之後進入filebeat目錄,如果編譯其他元件就進其他目錄,然後執行編譯命令
cd beats/filebeat make
結果,不出意外的報錯了。。。。undefined: syscall.Dup2
應該是ARM平臺提供的Dup2不好用,好在之前瞭解了一點點go的知識,把他改成Dup3試試,直接根據錯誤資訊修改報錯的檔案,vi ../libbeat/common/file/stderr_other.go,將呼叫的地方改成Dup3
很幸運的編譯出了filebeat的可執行檔案
我們啟動一下試試,正常使用會根據需要修改filebeat.yml,我們現在只試試能不能正常啟動,簡單改了,將log的enabled改成true,其他都默認了
執行測試,可以看到索引模板已經生成,說明我們的filebeat在ARM環境下編譯成功了,撒花~~~~~~~~~~~~~~~~~~~~~