リモートマウント状態監視のトリガー

いつも参考にさせていただいております。

現在、

Zabbix Server 2.4 2台
監視サーバ50台(Agentリモートコマンド有効化済)

の状態でリモートマウントの監視を検討しています。

監視ディレクトリは

/share
/filedisk

など様々ありますので、アイテムには

system.run[mount -l | grep {$MOUNT} | wc -l]

 ※{$MOUNT}はユーザマクロでホストのマクロ内に/share /filediskなどを追加

でマウントされている場合は「1」を返し、トリガーとして

{01_Test_templete_ShareMount_Check:system.run[mount -l | grep {$MOUNT} | wc -l].last()}<>1

とし、最新値が1以外であればメール送信するよう設定しております。

しかしながら、監視ディレクトリが複数の場合、上記アイテムの値が「2」となってしまい
トリガーに検知されてしまいます。
また、監視ディレクトリの片方のマウントが外れた場合も検知したいので、
{$MOUNT}=-e /share -e /filedisk
というマクロも厳しいです。

何とか、ディレクトリが一つであっても複数であっても一つのトリガーで表現できるような
ベストプラクティスはありますでしょうか。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー heya の写真

試したことは無いんですが、マクロって、トリガーの条件式の右辺にも使えませんかね?
使えるなら、最後の 1 のところもマクロにしてしまえばいいと思うのですが。

ユーザー hurukichi の写真

heya 様

ご返信ありがとうございます。

> 試したことは無いんですが、マクロって、トリガーの条件式の右辺にも使えませんかね?
> 使えるなら、最後の 1 のところもマクロにしてしまえばいいと思うのですが。

右辺に使うというとどのような条件が良いのでしょうか。。

自分で以下を設定してみました。

{01_Test_templete_ShareMount_Check:system.run[mount -l | grep {$MOUNT} | wc -l].change()}>1
→前回の値から1以上変化があればトリガー

しかしながら、こうすると、次のチェックのときには「正常」になってしまうのです。。
(障害の値が継続するので。。)

何かご教示いただければ幸いです。

ユーザー TNK の写真

heyaさんが書かれているのは、ホストごとに行数が異なっているが
行数が決まっていて、その値とずれている時に障害とみなすのであ
れば、条件式の右辺をマクロで変更できるようにすることで、対応
できるのではないかということだと思います。

例えば、結果が1になるべきサーバーには、{$MOUNT_NUM}というホ
ストマクロを値1として登録します。
同様に結果が2になるべきサーバーでは、値を2として登録しておく
わけです。

そして、条件式としては、

{01_Test_templete_ShareMount_Check:system.run[mount -l | grep {$MOUNT} | wc -l].last()}<>{$MOUNT_NUM}

というようにするわけです。

テンプレート01_Test_templete_ShareMount_Checkには、デフォル
ト値としてテンプレートのマクロで{$MOUNT_NUM}の値は1とか何ら
かの値を設定しておくと良いでしょう。
ホストマクロでテンプレートマクロを上書きすることができます。

ユーザー TNK の写真

具体的にどのような設定をされているのか理解できていないので、
マクロ{$MOUNT}に具体的にどのような設定を行っているのかをお教
えください。

よろしくお願いします。

ユーザー hurukichi の写真

TNK 様

ご指摘ありがとうございます!

heya様のおっしゃっている意味がわかりました!これで解決できそうです。

> 具体的にどのような設定をされているのか理解できていないので、
> マクロ{$MOUNT}に具体的にどのような設定を行っているのかをお教
> えください。

TNK様の認識と相違はないかと思います。
{$MOUNT}には/share や /filediskなどディレクトリ名が異なるものが複数あり、統一されていないです。
複数の異なるディレクトリのマウント状態を監視するテンプレ、トリガーをどう作成するかがネックでした。。