編譯Filebeat源碼


項目使用了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環境下編譯成功了,撒花~~~~~~~~~~~~~~~~~~~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM