sar -u 1 | awk '{print $ 9}'
これにより、毎秒「CPUアイドル」値が得られます。この場合、メールを受け取りたいのですが、値が10回続けて「0」になりますか?
それを行うための適切な方法は何でしょうか?
予備的な解決策を見つけた
sar -u 1 | awk '{ if (int($9)==0) {
i=i+1; {
print i, $9
}
}
if (int($9)>=0) {
i=0
}
if (i>=10) print "sending email"
}'
しかし、「送信メール」を印刷する最後の行では、このようにmuttを呼び出すことができません。
sar -u 1 | awk '{ if (int($9)==0) {
i=i+1; {
print i, $9
}
}
if (int($9)>=0) {
i=0
}
if (i>=10) mutt -s "VPNC Problem" [email protected] < /home/semenov/strace.output
}'
問題は、muttコマンド呼び出しで「構文」エラーが表示されることです。何か案は?
大丈夫正しいコマンドはこれです
sar -u 1 | awk '{ if (int($9)==0) {
i=i+1; {
print i, $9
}
}
if (int($9)>=0) {
i=0
}
if (i>=10) {
print "Sending email";
cmd="mutt -s \"test\" [email protected] < /home/semenov/strace.output";
system(cmd)
}
}'
それを行う適切な方法は、それを行わないことです。
CPU使用率(%usedまたは%idleのいずれか)は、監視するのに偽の値です。通常の動作中のさまざまな時点で100%になる可能性があります(SHOULD)。監視システムがCPU使用率をチェックすると同時に5〜10のWebリクエストを取得したため、本当に大量のアラートが必要ですか?私は答えがノーだと賭けています。
代わりに、Load Average(他のツールの中でuptime
によって報告される)を監視する必要があります。今すぐ実行(OSスケジューリング用語でのRunQ
の長さ)。
値は通常、1分間の負荷平均(「現在」)、5分間の負荷平均、および15分間の負荷平均の3つの値として報告されます。
1未満の負荷平均は、「アンロードされた」システムを示します(空きCPU時間が多く、プログラムの実行を待機していません)。
高い平均負荷(「高い」は、使用しているCPUの数と、負荷がかかった状態でのシステムのインタラクティブなパフォーマンスに関連しています)が問題の原因であり、調査する必要があります。
私は通常、負荷平均アラームのしきい値として10を使用します。この値は、通常は本番環境では表示されないはずですが、アラームが作動したら状況に対応する時間があるほど十分に低い値です。
どちらの場合でも監視するスクリプトは簡単です。
# [get your value and stuff it into $value
# Pick an appropriate threshold and stuff it into $threshold
if [ $value -gt $threshold ]; then # (-gt or -lt as appropriate)
echo "`hostname` needs attention!" | \
mail -s "`hostname` monitoring alert" user@Host
fi
取得とスタッフィングの部分は、読者の演習として残します。
本当に実行したい場合は、調査する必要があります 一部の監視システム およびSNMP ...