⛰️
[Zabbix] mountしているディレクトリの実体存在監視
published_at: 2015-12-06
はじめに
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]
Trigger
- 妥当な Name を設定
- 例)Failed mount_directory_access (/mnt/data/sample)
- Expression に 追加した Item を選択
- 例){[mountingHost]:vfs.directory.exists[/mnt/data/sample].last()}=0
テスト
監視対象ディレクトリをリネームしてみる → イイ感じ
(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]#
↓
NFSプロセスを止める → おや?
[root@target data]# systemctl stop nfs-server
↓
期待していた「Failed mount_directory_access (/mnt/data/sample)」ではなく、「NFS Procces Down」の Alertが出ました。
Check mount_directory_access は、「Not supported」となってしまっていました。
まとめ
- mountしているディレクトリの実体存在監視をZabbixで行う場合(Linux系OS)
- UserParameter を利用した監視アイテム追加で実現可能
- ただし、NFSの場合、NFSプロセス自体も監視が必要
備考
- ZABBIX-JPフォーラム「ディレクトリの存在チェックのアイテム設定」
- 検証時参照情報
- CentOSにZabbix 2.2をインストールする
- CentOS7にZabbix2.2をインストール
- CentOS7.1 64bitのyumリポジトリにMySQLを追加し、最新バージョンをインストール
- CentOS7でzabbix-server-mysqlが起動しなかったときの処置
- NFS サーバ/クライアント設定メモ(CentOS7.1.1503)
おわりに
UserParameter は非常に活用の幅が広く、様々な応用が可能に思えます。
次は halchiyo さん、よろしくお願いします。
Discussion