最新のハードドライブには、S.M.A.R.Tと呼ばれる内部メカニズムがあります。これにより、ハードディスクに障害が発生する時期を知ることができます。そのような失敗の前にあなたに電子メールを送るのはサーバーにとって素晴らしいことではないでしょうか?
概要概要
「mdadm」(ソフトウェアRAID管理用)や「PalimpsestDisk Utility」(Ubuntu LiveCDで使用)などのプログラムは、S.M.A.R.T情報を使用して、ディスクが故障しそうなとき、または故障したときに通知します。ただし、ヘッドレスサーバー(GUIなし)では、手遅れになる前に保留中の運命を通知するサービスはありません。さらに、サーバーに手動でログインせずに、どのようにしてそれを知ることができますか?
このスクリプトは、cronを使用して1日1回実行すると、システムのハードドライブの不良セクタ数のいずれかが「ディスクが不良」のしきい値よりも意図的に低い制限に達した場合に警告し、警告をマシンの管理者に電子メールで送信します。
前提条件と前提条件
- 「」を使用してサーバーの電子メールサポートをすでに設定しています LinuxでEメールアラートを設定する方法 」ガイド。
- Debianベースのシステムを使用しています。
- *ハードウェアRAIDコントローラーを使用していません。
- 私がVIMをエディタプログラムとして使っているのがわかるでしょう。これは私が慣れているからです…他の好きなエディタを使ってもかまいません。
*ハードウェアRAIDコントローラーがシステムによるこの情報へのアクセスをブロックする可能性が非常に高いため。
セットアップ
ハードドライブコントローラーからS.M.A.R.T情報を読み取り、それを提示する「smartmontools」パッケージをインストールします。
sudo aptitude install smartmontools
モニタースクリプトを作成します。
sudo vim /root/smart-monitor.sh
これをコンテンツにします。
#!/ビン/バッシュ
########メール機能########
email_admin_func()
{
echo "宛先:[email protected]"> $ temp_email_file
echo "From:[email protected]" >> $ temp_email_file
echo "件名:S.M.A.R.Tモニターのしきい値に違反しました" >> $ temp_email_file
エコー "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t <$ temp_email_file
echo "管理者にメールを送信しました"
}
smartc_func()
{
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s '' | cut -d '' -f11
}
########関数の終了########
########作業パラメータを設定する########
temp_email_file = / tmp / smart_monitor.txt
allowed_threshold = 5#一緒に住むことをいとわない不良セクタの量を設定します。推奨5。
########エンジン########
sdasdbのiの場合; do#セットアップに応じて、このリストからディスク名を追加または削除します。
[[ "`smartc_func $i`" -ge $allowed_threshold ]の場合];その後
管理者に電子メールを送信するecho
email_admin_func "" `hostname`"のHDの1つがしきい値の上限に達しました!!! nしきい値は$ allowed_thresholdに設定され、$ iディスクのステータスは "` smartc_func $ i` ""でした。
されます
完了
注意すべき重要なポイントは次のとおりです。
- メール機能–マシン名や管理者のメールなどの適切な情報を設定します。
- 許可されるしきい値–このパラメーターを適切と思われる値に設定します。使用した「サーバーグレード」のハードドライブに設定された制限が10だったため、5を使用しました(「コンシューマーグレード」のドライブのしきい値は140まで高くする)。
- 「for」ループでディスク名の列挙を調整して、監視するデバイスを設定します。現在、2つのディスク(sdaとsdb)が含まれているため、セットアップに合わせて調整してください。何らかの理由でディスクを*除外する必要がある場合は、すべてのディスクを含めることも、一部だけを含めることもできます。
*私の元の設定では、最初のディスクはフラッシュドライブだったので、可能な限りその情報を読み取ることはあまり役に立ちません。
スクリプトを実行可能にします。
すど chもd +x /ろおt/sまrtーもにとr。sh
セットアップが完了しました。
スクリプトが自動的に実行されるようにスケジュールします
スクリプトを自動的に実行して、新しいCronジョブを作成します。
「
LinuxでEメールアラートを設定する方法
」は、そうすることの結果を導きます。スクリプト自体でエラーが発生した場合、cronは、エラーが発生するとすぐに電子メールで自動的に通知します。
cronジョブスケジューラを開きます。
すど cろんたb ーえ
これをコンテンツに追加します。
0 7 * * * /ろおt/sまrtーもにとr。sh > /tmp/ぁst_sまrt_もにとr_るん。ぉg
これにより、スクリプトが毎朝午前7時に実行されるように設定されます。
あなたのセクターはすべて私たちのものです:)