ソフトウェアRAIDにこの前を手を出してZabbixでどうにかできないかと思ってたらこんな記事を見かけた。
Zabbixエージェントで LinuxのソフトウェアRAIDを監視する
egrepですごい正規表現をしてるけどイマイチ何やってるか分からないしもっといい方法がありそうだと思った。
mdadmでRAIDを作成すると、RAIDの状態が /proc/mdstat に保存される。
ディスクが2枚で、RAID1だとすると正常であれば
Personalities : [raid1] md0 : active raid1 sde1[1] sda1[0] 488253376 blocks super 1.2 [2/2] [UU] bitmap: 0/4 pages [0KB], 65536KB chunk unused devices: <none>
どっちかがぶっ壊れたりすると
Personalities : [raid1] md0 : active raid1 sde1[1] sda1[0] 488253376 blocks super 1.2 [2/2] [_U] bitmap: 0/4 pages [0KB], 65536KB chunk unused devices: <none>
UU → U だったり U になったりする。
ここでトリガーが起こせる。
$ cat /proc/mdstat | grep -o U | wc -l 2
“grep -o”を使うとマッチした文字数分の行が返ってくる。それをwcで行数を数えれば正規表現を使わずに監視できる。
トリガーの条件式としては2じゃないときに発生させればいいので
{file-server.luis.local:raid.healthy.last()}<>2
こうすれば多分発生する。
あとはZabbix agent側のconfに
UserParameter=raid.healthy,cat /proc/mdstat | grep -o U | wc -l
これを追加すれば監視ができるようになると思う。
Zabbixは詳しくなくサイトを参考にさせていただきました。
正規表現はまったくわかりませんでしたので、簡単にご説明頂きありがとうございました。
ようやくソフトウエアRaidを監視に追加できました。
トリガーの条件式は表記のものですとエラーになって登録できなかったので
下記のように変更しました。
last(/192.168.1.7/raid.healthy)10