您好,登錄后才能下訂單哦!
Windows服務器重啟導致filebeat無法啟動怎么辦,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
早上6點鐘, 收到zabbix的告警, 說一臺服務器重啟了, 回到公司馬上查看系統日志,發現只有這些記錄:
這不是坑爹么! 肯定是意外關閉啊, 但是為什么會是意外關閉呀?
這個問題后續需要再跟進, 現在暫不討論, 因為有個更加急迫的故障需要處理: filebeat無法啟動.
既然系統無法啟動, 咱們去服務管理那邊試下:
運行 - 輸入services.msc
找到filebeat的服務后, 手動啟動失敗, 得到錯誤:
在谷歌上搜索一番之后, 找到一個解決辦法:
我的電腦-->右鍵-->管理-->本地用戶和組; 選擇“組”-->雙擊Administrators-->單擊“添加”-->單擊“高級”-->單擊“立即查找”-->在下面的列表中選擇Network Service用戶-->兩次單擊“確定”-->加入
但是并沒有什么卵用, 去filebeat的根目錄, 嘗試手動運行 filebeat.exe, 發現是可以執行的, 這代表程序沒有問題, 于是懷疑是機器重啟導致服務管理報錯了, 于是嘗試重裝filebeat服務, 但是服務啟動還是失敗
查看filebeat的日志, 發現有段報錯:
Error decoding old state: invalid character '\x00' looking for beginning of value
大意就是: 在解碼舊狀態時, 有無效的字符'\x00', 這個很像json解析失敗的報錯! 難道這個跟json有關系么?
這個json肯定是和日志的json無關的, 應該是某些配置的json有關, 但是會改動的配置不多, 那應該就是存放記錄文件偏移量的配置: registery.
于是在去根目錄的data目錄檢查下面的registery. old 和 registery, 但是都是很正常的兩個json文件, 并沒有所謂的 '\x00', 這就尷尬了..
考慮到手動執行沒問題, 但是通過服務管理器啟動卻失敗, 難道是啟動方式的姿勢不對導致? 事不宜遲, 將服務器啟動的方式拷貝出來試下: filebeat-右鍵屬性-可執行文件的路徑
在黑漆漆的CMD窗口運行下:
雖然得到同樣的報錯, 不過我們好像發現有點問題了, -path.data "c"\\ProgramData\\filebeat", 這個目錄應該就是存放文件偏移位置的目錄, 但是為什么不是filebeat的根目錄下呢?
難道說這個是服務注冊時, 默認的? 那可能出問題的json文件就是在這里了, 于是直接去目錄查看, 還真的有registry文件, 用notepadd++ 打開, 終于找到原因了:
文件內容全都是亂碼, 原因應該是, 系統異常關閉, 程序沒有正常退出, 導致寫入了亂碼, 使得filbeat重新讀取時, 無法解析.
將文件刪除后, filebeat啟動正常! 這次故障排查暫告一段落,感謝大家.
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。