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