幫助中心
技術運維百科
Windows服務器重啟導致filebeat無法啟動
2017-02-28 14:35:59
  早上6點鐘, 收到zabbix的告警, 說一臺服務器重啟了, 回到公司馬上查看系統(tǒng)日志,發(fā)現(xiàn)只有這些記錄:
  這不是坑爹么! 肯定是意外關閉啊, 但是為什么會是意外關閉呀?
  這個問題后續(xù)需要再跟進, 現(xiàn)在暫不討論, 因為有個更加急迫的故障需要處理: filebeat無法啟動.
  既然系統(tǒng)無法啟動, 咱們?nèi)シ展芾砟沁呍囅?   運行 - 輸入services.msc   找到filebeat的服務后, 手動啟動失敗, 得到錯誤:
  在谷歌上搜索一番之后, 找到一個解決辦法:   我的電腦-->右鍵-->管理-->本地用戶和組; 選擇“組”-->雙擊Administrators-->單擊“添加”-->單擊“高級”-->單擊“立即查找”-->在下面的列表中選擇Network Service用戶-->兩次單擊“確定”-->加入   但是并沒有什么卵用, 去filebeat的根目錄, 嘗試手動運行 filebeat.exe, 發(fā)現(xiàn)是可以執(zhí)行的, 這代表程序沒有問題, 于是懷疑是機器重啟導致服務管理報錯了, 于是嘗試重裝filebeat服務, 但是服務啟動還是失敗   查看filebeat的日志, 發(fā)現(xiàn)有段報錯:
  Error decoding old state: invalid character '\x00' looking for beginning of value   大意就是: 在解碼舊狀態(tài)時, 有無效的字符'\x00', 這個很像json解析失敗的報錯! 難道這個跟json有關系么?   這個json肯定是和日志的json無關的, 應該是某些配置的json有關, 但是會改動的配置不多, 那應該就是存放記錄文件偏移量的配置: registery.   于是在去根目錄的data目錄檢查下面的registery. old 和 registery, 但是都是很正常的兩個json文件, 并沒有所謂的 '\x00', 這就尷尬了..   考慮到手動執(zhí)行沒問題, 但是通過服務管理器啟動卻失敗, 難道是啟動方式的姿勢不對導致? 事不宜遲, 將服務器啟動的方式拷貝出來試下: filebeat-右鍵屬性-可執(zhí)行文件的路徑:
  在黑漆漆的CMD窗口運行下:
  雖然得到同樣的報錯, 不過我們好像發(fā)現(xiàn)有點問題了, -path.data "c"\\ProgramData\\filebeat", 這個目錄應該就是存放文件偏移位置的目錄, 但是為什么不是filebeat的根目錄下呢?   難道說這個是服務注冊時, 默認的? 那可能出問題的json文件就是在這里了, 于是直接去目錄查看, 還真的有registry文件, 用notepadd++ 打開, 終于找到原因了:
  文件內(nèi)容全都是亂碼, 原因應該是, 系統(tǒng)異常關閉, 程序沒有正常退出, 導致寫入了亂碼, 使得filbeat重新讀取時, 無法解析.   將文件刪除后, filebeat啟動正常! 這次故障排查暫告一段落,感謝大家.
新客優(yōu)惠
特價 酷睿i3系列
性價比熱銷推薦,年銷量第一
1180/月起
USA-IDC為您提供免備案服務器 0元試用
立即聯(lián)系在線客服,即可申請免費產(chǎn)品試用服務
立即申請