ソフトウェア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

これを追加すれば監視ができるようになると思う。