Edited at
ZabbixDay 6

[Zabbix] mountしているディレクトリの実体存在監視

More than 3 years have passed since last update.


はじめに

Zabbix Advent Calendar 2015 6日目のエントリです。

Zabbix初級者(自分もこの域と思ってます)から活用いただければ幸いです。


ユースケース


  • 複数台の(Web)サーバーからNFSで共有するディレクトリ(実体が別のサーバー)があり、そのディレクトリの存在がアプリケーションとして重要であるケース


前提


  • Webサーバー・NFSサーバーともOSはLinux

  • Zabbix Server・Agent インストール済み(おそらく既存全バージョンで利用できる)


監視される側(mountしているサーバー)の設定 [UserParameter]


初期状態

[root@server ~]# df

Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/centos-root 8775680 1778724 6996956 21% /
・・・
none 479525884 148412768 331113116 31% /vagrant
192.168.33.97:/exports/data 8775680 1114112 7661568 13% /mnt/data


zabbix_agentd.conf に UserParameter を追記

以下のようなコマンドで(コマンドで書き込む場合、$ をエスケープする点に注意が必要。vi 等で「手書き」するときは \ 不要)

echo "UserParameter=vfs.directory.exists[*],if [ -d \$1 ]; then echo 1; else echo 0; fi" >> /etc/zabbix/zabbix_agentd.conf


zabbix-agent 再起動

systemctl restart zabbix-agent


Zabbix Server 側の設定(アイテム・トリガー)

Web UI で Item と Trigger を設定します。


Item


  • 妥当な Name を設定


    • 例)Check mount_directory_access



  • Key に UserParameter で追記した vfs.directory.exists を利用した定義を設定


    • 例)vfs.directory.exists[/mnt/data/sample]



02_item_configuration.jpg


Trigger


  • 妥当な Name を設定


    • 例)Failed mount_directory_access (/mnt/data/sample)



  • Expression に 追加した Item を選択


    • 例){[mountingHost]:vfs.directory.exists[/mnt/data/sample].last()}=0



03_trriger_configuration.jpg


テスト


監視対象ディレクトリをリネームしてみる → イイ感じ

(NFSサーバー側)

[root@target ~]# exportfs -v
/exports/data 192.168.33.0/24(rw,wdelay,root_squash,all_squash,no_subtree_check,sec=sys,rw,secure,root_squash,all_squash)
[root@target ~]# cd /exports/data
[root@target data]# ls -la
total 0
drwxr-xr-x 3 nfsnobody nfsnobody 19 Dec 6 00:05 .
drwxr-xr-x 3 root root 17 Dec 5 15:06 ..
drwxrwxrwx 2 root root 6 Dec 5 16:01 sample
[root@target data]# mv sample sample1
[root@target data]#



11_failed_mount_directory_access.jpg


NFSプロセスを止める → おや?

[root@target data]# systemctl stop nfs-server



12_NFS_Process_down.jpg

期待していた「Failed mount_directory_access (/mnt/data/sample)」ではなく、「NFS Procces Down」の Alertが出ました。

Check mount_directory_access は、「Not supported」となってしまっていました。

13_Not_supported_Item.jpg


まとめ


  • mountしているディレクトリの実体存在監視をZabbixで行う場合(Linux系OS)


    • UserParameter を利用した監視アイテム追加で実現可能

    • ただし、NFSの場合、NFSプロセス自体も監視が必要




備考


おわりに

UserParameter は非常に活用の幅が広く、様々な応用が可能に思えます。

次は halchiyo さん、よろしくお願いします。