zabbixでTB超えの大容量ディレクトリを監視するとタイムアウトに引っ掛かってしまい
Timeoutを最大の30まで伸ばしたりあれやこれやと調整しても
制限に引っかかってしまい上手く監視ができませんでした。
そこで、取得できないディレクトリの使用量をduで出力させ、そこからzabbixでデーターを取得し監視する事にしました。
スクリプトを作ります。
# cat dirsize.sh
#!/bin/bashdate >> /root/bin/dirsize.txt
du -b -s /mnt/storage/hoge >> /root/bin/dirsize.txt
du -b -s /mnt/storage/hage >> /root/bin/dirsize.txt
date >> /root/bin/dirsize.txt
こんな感じで監視対象のサーバーに対象のディレクトリと
テキストで見た際、実行時間の確認ができる様にdateを書いておきました。
実行権限を付け
# chmod +x dirsize.sh
適当にcronに登録してお好みの間隔で回すようにします。
次にzabbix_agentd.conf
# vim /etc/zabbix/zabbix_agentd.conf
#rootでコマンド実行できるように
AllowRoot=1
#取得対象のディレクトリをgrepでひっかけawkで値を取る
UserParameter=hoge.dirsize.size,grep hoge /root/bin/dirsize.txt | awk ‘{print $1}’ | tail -n1
UserParameter=hage.dirsize.size,grep hage /root/bin/dirsize.txt | awk ‘{print $1}’ | tail -n1
設定が出来たらzabbix-agentを再起動
# systemctl restart zabbix-agent
設定が正しいかzabbix-server側からテストしてみます。
# zabbix_get -s 監視対象のIP -k hoge.dirsize.size
855981517870
値が取得出来れば成功。
それでは、zabbixでアイテムを作ります。
名前:ディレクトリ名が分かる様に適当に
タイプ:zabbixエージェント
キー:今回はhoge.dirsize.sizeかhage.dirsize.size
単位:B
監視間隔:お好みで 1dとかでいいかと
アプリケーション: filesystemsを選択してみました。
こんな感じで値が取得出るようになりました。