muninでファイルディスクリプタをモニタリングする
ファイルディスクリプタをモニタリングしたい
とある案件で、ファイルディスクリプタが枯渇して「Too many open files」が出ることがありました。
原因はjavaにある、ということでjavaで使用しているファイルディスクリプタの量を計測することにしました。
だがしかし、プラグインを探しても見当たらない。。。
「ないなら作ればええやん」と誰かが言っていたので、初めてプラグイン作ってみました(〃∇〃)
書いてみる
lsofコマンドをつかって、javaが開いているファイル数を返すだけです。
#!/bin/sh #%# family=auto #%# capabilities=autoconf if [ "$1" = "autoconf" ]; then if [ -x /usr/sbin/lsof ]; then echo yes exit 0 else echo "no" exit 0 fi fi if [ "$1" = "config" ]; then FDMAX=`ulimit -n` FDWARNING=`echo "$FDMAX * 0.8" | bc -l` echo 'graph_title FileDescriptors' echo 'graph_args --base 1000 -l 0 ' echo 'graph_vlabel open files' echo 'graph_category java' echo 'graph_info number of file descriptors in JAVA.' echo 'java_fd.label file descliptors in JAVA' echo 'java_fd.draw LINE2' echo 'java_fd.min 0' echo "java_fd.max $FDMAX" echo "java_fd.warning $FDWARNING" echo 'java_fd.info The number of FileDescriptors in JAVA.' exit 0 fi echo -n "java_fd.value " lsof | grep -i java | wc -l
追記
FDMAXがrootなので意味ない。直そう。