ESXiが勝手に再起動してしまう件(Munin)

ESXiが勝手に再起動してしまう状態になったので調査する

ESXiがある日を境に再起動してしまう

数年間常時稼働していたESXiマシンが急に再起動をしはじめた

構成としてはUSBブートでESXi 6.0 Update2(Build 3620759)を起動
ローカルSATA接続のWD4003FZEXにデータストアを配置

ここ最近CentOSのVMを増やしてたのでどれが原因かがはっきりわからない
しかし増やしたVMの中に悪さしているのは確実なようで
それらを起動せずに他のVMを動かしていると問題は発生しない

ここで厄介なのは問題特定のためのログが消えているということ
VMの自動起動は使ってないので気付いた時には再起動が終わって
VMが全部オフ状態になっている

WindowsでいうブルスクであるESXiの紫画面も出ていない

そこでsyslogサーバを別に用意し一時的にsyslogサーバへログを送ることにした
再起動はいつくるかもわからないので放置
そうすると案の定再起動がされておりログを漁るとそれっぽいのを発見

<182>2016-04-24T07:30:36.505Z esxi01.pc vmkernel: cpu6:32786)WARNING: ScsiDeviceIO: 1243: Device t10.ATA_____WDC_WD4003FZEX performance has deteriorated. I/O latency increased from average value of 1702 microseconds to 525$

<180>2016-04-24T07:30:36.505Z esxi01.pc vmkwarning: cpu6:32786)WARNING: ScsiDeviceIO: 1243: Device t10.ATA_____WDC_WD4003FZEX performance has deteriorated. I/O latency increased from average value of 1702 microseconds to 525$

<14>2016-04-24T07:30:36.505Z esxi01.pc vobd:  [scsiCorrelator] 309538738689us: [vob.scsi.device.io.latency.high] Device t10.ATA_____WDC_WD4003FZEX performance has deteriorated. I/O latency increased from average value of 1702 microseconds to 52562 microseconds.

<14>2016-04-24T07:30:36.505Z esxi01.pc vobd:  [scsiCorrelator] 309534193630us: [esx.problem.scsi.device.io.latency.high] Device t10.ATA_____WDC_WD4003FZEX performance has deteriorated. I/O latency increased from average value of 1702 microseconds to 52562 microseconds.

一部加工しているが
要はデータストアのディスクアクセスが追い付いてない
この通知は何回か通知が記録されていて通知→すぐ再起動ってわけではないっぽいけど

怪しいのがこれしかなかったのでIO負荷をかけているVMを探すとそれがMuninだった
他のVMでもCentOSだとmunin-nodeを入れて監視できるようにしているけど
munin-nodeの方は全然問題ない IOは当然でCPUも許容範囲内

問題なのはmunin-node端末から情報集めて記録する側のmuninサーバ側
試しにmuninの情報収集やグラフ生成のcronを停止させるとiowaitはなくなり
数日稼働させてもESXiが再起動することはなかった

まさかデータストアへの過負荷で勝手にホストOSまで再起動するとは思ってなかったが
こうして原因が特定できた

Muninの負荷軽減を図る

現状はMuninサーバで計9台のmunin-nodeを監視
1台あたり大体で監視項目は45前後

ぐぐると負荷軽減でまずやることは
グラフ生成を動的生成にするのとrrdcachedの導入

それぞれやり方は
「munin graph_strategy cgi」
「munin rrdcached」で検索するといろいろ出てくると思うので省略して
ここでは効果について記録しておく

グラフの動的生成に関しては多少の軽減は確認できたので
効果がないとは言わないけどこれだけでは解決できなかった
今は9台x45グラフで少ないが台数が増えていくとまた違うかもしれない
効果が少ないが5分毎のグラフ生成は無駄に変わりないので
やっておくべき設定ではあると思う

効果が大きかったのはrrdcachedの方
これは正直かなり効果的iowaitがほぼ解消され
以前のようにsyslogでwarningが出ることはなくなった

まとめ

ESXiのようにディスクアクセスがボトルネックになりやすい環境で
Muninサーバを導入する際はぜひグラフの動的生成とrrdcachedを設定しよう
(もちろん普通の余裕あるサーバでもMunin導入するならやった方がいい)

ESXiはデータストアへのIO負荷が限界を超えると勝手に再起動するので
ディスクアクセスが多いサービスをVMに入れる場合は十分注意する

今回の9台監視程度ならこのままMuninサーバは運用できそうだけど
今後もVMなどで監視ノード数は増えていくわけで
そうなるとどこまでがセーフかを地雷みたいに気にすることになる

MuninサーバVMだけを落としてくれるならまだしも
ホストOSを巻き込んで再起動させるまでいくなら
MuninサーバVM用に高速のSSDデータストアを追加するか
可能ならMuninサーバは別の安物サーバなどで運用した方がいいかもしれない