Munin

穆寧的智能外掛過去一直報錯是因為退出碼

  • August 22, 2014

我的託管服務提供商在我的伺服器中插入了一個硬碟驅動器,該驅動器過去似乎出現過某種錯誤,但完整的離線智能檢查顯示目前一切正常。伺服器有一個 RAID1,所以我可以忍受這種情況。

問題是(根據手冊頁)如果過去有錯誤,smartctl 設置第 6 位,所以現在一切正常,退出程式碼是數字 64。

智能外掛預設配置為門檻值 0,雖然我知道我可以將門檻值設置為 64,但我會錯過更重要的第 3 位“磁碟出現故障”。

有沒有辦法以某種方式設置門檻值,以便 munin 對值進行按位比較?

最終我求助於修補智能外掛。根據您的版本,有一些類似這樣的程式碼:

       if exit_status!=None :
           # smartctl exit code is a bitmask, check man page.
           num_exit_status=int(exit_status/256)

用這個替換它

       if exit_status!=None :
           # smartctl exit code is a bitmask, check man page.
           num_exit_status=int(exit_status/256)
           # filter out bit 6
           num_exit_status &= 191
           if num_exit_status<=2 :
               exit_status=None

       if exit_status!=None :

最有趣的部分是對 191 進行按位運算的行:這是二進制的 0x11011111,因此對目前值進行 AND 運算只會將第 6 位設置為 0,而其他值保持不變。

因此,值 64(就像我的一樣)將報告為 0,而值 8 將保持為 8。而且,非常重要的是,值 72(始終設置為第 6 位,由於磁碟出現故障而設置為第 3 位) 它也會報告 8。

引用自:https://serverfault.com/questions/461456