LoginSignup
0
1

More than 5 years have passed since last update.

NagiosでDisk容量アラート発砲時にFree upするeventhandlerを作ってみた

Posted at

株式会社オズビジョン@terra_yuccoです。

イマドキWebサービスの監視について考えてみるのエントリで、メインプロダクトの監視を2016年下期に実施する、と書きました。
その中で、監視をしているといろいろな不具合にも気づくわけで。
Diskがいっぱいになりやすいなら定期的に消せばいいじゃない!とか、
Nagios使ってるなら将来的にはeventhandlerも使えたらいいじゃない!とか、
色々なことを日々考えていたりするわけです。

今回、cronからも起動でき、eventhandlerからも使えそうなfree upスクリプトを書いたので、
試しにコードをQiita上に晒すという暴挙に出てみようと思います。

※どうでもいいけど「ディスクを空ける」が"free up"なのも今回知りました。

作成スクリプト

Bashの猛者な皆様の厳しいご指摘をお待ちしています。
なお、保存日数とpathを内部に持っているのは、注入できるようにすると、権限によっては大事故になるからです。

起動方法

  • cronから
    • /path/to/nagios-plugins/eventhandlers/free_up_local_disk.sh --from-cron
  • Nagiosから
    • /path/to/nagios-plugins/eventhandlers/free_up_local_disk.sh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$

実コード

free_up_local_disk.sh
#!/bin/bash -u
#
# Event handler script for free up local disk
#
# Note: This script will only free up the server if the service is
#       retried 3 times (in a "soft" state) or if the service somehow
#       manages to fall into a "hard" error state.
#

#---------------------------------------
# constants
#---------------------------------------
path=/path/to/target
mtime=200


#---------------------------------------
# for free up
#---------------------------------------
freeup()
{
    echo "Free up disk space by removing junk files..."
    find ${path} -type f -mtime +${mtime} -exec rm -rf {} \;
    return 0
}


#---------------------------------------
# from cron
#---------------------------------------
if [ $# -eq 1 ] && [ "${1}" = "--from-cron" ]; then
    freeup
    exit 0
fi


#---------------------------------------
# arguments
#---------------------------------------
# invalid
if [ $# -lt 3 ]; then
    echo "Nothing to do..."
    exit 0
fi

# valid
SERVICESTATE=${1}
STATETYPE=${2}
SERVICEATTEMPT=${3}

case "${SERVICESTATE}" in
OK)
    ;;
UNKNOWN)
    ;;
*)
    case "${STATETYPE}" in
    SOFT)
        if [ ${SERVICEATTEMPT} -ge 3 ]; then
            freeup
        fi
        ;;
    HARD)
        freeup
        ;;
    esac
    ;;
esac

exit 0

おしまい。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1