【システム運用改善】LinuxサーバのCPU監視を簡単に自動化しよう!
サーバの運用保守はいろいろな作業があり苦労されている方も多いと思います。そこで今回は経費をほとんどかけずに運用保守作業を自動化するという点で記載していきます。
CPUの稼働状況監視を自動化
今回は有料ソフトウェアを入れる費用が無い場合や無料ソフトウェアでも設定・運用できる人材がいない場合などを想定し、シェルスクルプトで簡易的にCPUの閾値監視を行う方法を説明します。
処理内容
処理名:CPU_LIMIT_CHECK.sh
#!/bin/bash ############################################ # 関数定義 ############################################ #閾値超過時の通報先(メールアドレス) ML_SEND="****@sample.jp" #CPU閾値 100%=1.00で記載 CPU_LIMIT=0.80 #本処理用ログファイル CPU_LOG="/home/script/log/cpu_limit.txt" #日付取得用 YMD=`date +%y%m%d,%H:%M:%S'` ############################################ # メイン処理 ############################################ echo "`date`" >> $CPU_LOG uptime >> $CPU_LOG CPU_USED=`cat /proc/loadavg | cut -d ' ' -f 1` #閾値以上の場合は1を返す LIMIT=`echo "$CPU_USED >= $CPU_LIMIT" | bc` if [ $LIMIT -eq 1 ] then echo "$HOSTNAME CPU_LIMIT over $CPU_USED" | mail -s "$HOSTNAME CPU_LIMIT over" $ML_SEND echo "$HOSTNAME CPU_LIMIT over $CPU_USED" >> $CPU_LOG fi
解説および使用方法
この処理は、CPUの使用率が閾値(上記処理内では仮に80%と指定)を超えた場合、指定した宛先に対してメールで通知するというものです。
本シェルを本番環境へ配置後、cronにて制御します。システム要件により異なりますが、この処理を例えば5分毎に繰り返し処理するように設定します。(例えば夜間処理で負荷が高くなることが想定できる場合などは、日中帯のみ監視したり、夜間の監視間隔を広げるなど要件に併せてください)
また、実際のディレクトリ構成等に注意し、修正時は関数定義部分の修正を行ってください。
※なお、本処理ではログを作成していくのでログファイル整理用の処理も併せて設定することをオススメします。
【関連】
・メモリ閾値監視をシェルスクリプトで自動化
・ディスク使用量閾値監視をシェルスクリプトで自動化
・閾値監視用ログファイルの整理