>
ProductionでLinuxシステムを実行したことがある場合、またはパーソナルサーバーを維持した場合でも、ディスクスペースが不足していることが最も困難な問題の1つであることがわかります。突然、アプリケーションが動作を停止し、データベースは新しいデータを記述せず、ログファイルは暴走列車のようにいっぱいになり続けます。
良いニュースは、 linux が驚くほど簡単にすることです df-h -h フラグは「人間の読み取り可能」を意味するため、データの生ブロックを表示する代わりに、 gb および mb の出力をフォーマットします。
<図aria-describedby = “caption-attachment-60900” class = “wp-caption aligncenter” id = “attachment_60900” style = “width:753px”> 上記の例では、root code>/(/sda1 80%を登ると、それが私たちの赤い旗です。スペースがなくなっていることを意味します。
ステップ2:ディスク使用量を監視するスクリプトを作成
ディスク使用量を手動で確認する方法がわかったので、シェルスクリプトを使用して自動に変えましょう。これは、通常実行して、少しロジックと一緒に結び付けるコマンドを取得できるため、そのようなことに最適です。
ルート(/)パーティションを監視するための非常に簡単なスクリプトです:
#!/bin/bash #しきい値を設定する(パーセンテージ)
しきい値= 80 #ルートファイルシステムの使用率を抽出します
usage = $(df-h/| awk ‘nr == 2 {$ 5}’ | sed ‘s/%//’) #しきい値との使用法を比較します
[“$ usage” -ge “$しきい値”];それから echo “警告:ディスク使用量は$(hostname)” on $ {usage}% “}” |になりますMail-S “ディスクアラート:$(hostname)” [電子メールプロテーション] ここで何が起こっているのかを分解しましょう: しきい値= 80 →これは私たちが気にする制限です、より高いものはあまりにも危険です。 df-h/→これは、ルートファイルシステムのみをチェックします。 awk ‘nr == 2 {$ 5}’ →df出力から、これは「」列をつかみます。 sed ‘s/%//’ →%サインを切り取り、数字として扱うことができます。 if block→ディスクの使用量がしきい値を超えた場合、アラートをトリガーします。 現在、スクリプトはメールコマンドを使用して電子メールを送信します。システムにメールをセットアップしていない場合は、心配しないでください。セットアップ方法をお勧めします。
ステップ3:すべてのパーティションディスク使用量を監視
ほとんどのサーバーは単一のパーティションに依存していません。代わりに、通常、/、/home 、/var 、または/data など、いくつかに分割されます。 root (/)パーティションに注意してください。たとえば、/var がログでいっぱいになった場合、/にはまだ十分なスペースがありますが、アプリケーションが失敗する可能性があります。
ここに、マウントされたすべてのファイルシステムをチェックするわずかに改善されたバージョンがあります:
#!/bin/bash しきい値= 80 #DFによってリストされている各ファイルシステムをループします
df-h | grep ‘^/dev/’ |読み取りライン。する usage = $(echo $ line | awk ‘{print $ 5}’ | sed ‘s/%//’) part = $(echo $ line | awk ‘{print $ 6}’) [“$ usage” -ge “$しきい値”];それから echo “警告:パーティション$パーツは$(hostname)” on $ {usage}%on $ {usage}%ですMail-S “ディスクアラート:$(hostname)” さて、Just /をチェックする代わりに、/dev/に基づくすべてのファイルシステムを実行し、パーティションが 80%を越えた場合、警告メールが表示されます。
ステップ4:cron でスクリプトを自動化します cron は、Linuxの簡単なスケジューリングサービスです。それを使用して、たとえば1時間ごとにディスク監視スクリプトを自動的に実行することができます。
セットアップするには、crontabを開きます: crontab-e 下部にこの線を追加します: 0 * * * */path/to/disk_check.sh これは、を意味します 0 →時間の開始時に実行します。 * * * * →毎日、毎日。 /path/to/disk_check.sh →これをスクリプトの実際の場所に置き換えます。 保存して終了すると、クロンが残りの世話をします。これから、スクリプトは背景のディスクの使用量を静かにチェックし、物事が悪く見える場合は警告します。
ステップ5:スクリプトのテスト
このスクリプトに頼る前に、テストするのは賢明です。結局のところ、アラートシステムが機能するかどうかを確認するために、ディスクが実際に80%フルになるまで待ちたくありません。
テストする最も簡単な方法は、しきい値を一時的に下げることです:
しきい値= 1 そのように、ほとんどのパーティションは少なくとも 1%フルであるため、スクリプトはほぼ確実にアラートをトリガーします。電子メールまたはログが機能していることを確認したら、 80 。に戻します。
電子メールを構成する準備ができていない場合は、メールコマンドをより簡単なものに置き換えることができます: echo “警告:パーティション$部品は$(hostname)” on $ {usage}%です
これは、端末にアラートを印刷するだけで、迅速なデバッグに役立ちます。
ステップ6:電子メール通知の設定
スクリプトはメールコマンドを使用してアラートを送信しますが、このツールは必ずしもデフォルトで使用できるとは限りません。最初にインストールする必要があります: sudo apt install mailutils [debian]
sudo yumインストールmailx [on rhel] インストールされたら、サーバーが実際に電子メールを送信できることを確認する必要があります。これには、 gmail smtp 、または sendgrid 。などのサードパーティサービス
今すぐ電子メールを扱いたくない場合でも、アラートをファイルにログすることでスクリプトを役立つことができます: echo “ディスクの使用アラート:$ $ usage%” >>/var/log/disk_alert.log そのように、ログを後で確認するか、次のコマンドを使用してリアルタイムでアラートを視聴できます。 tail-f/var/log/disk_alert.log ステップ7:シェルスクリプトを超える時期
シェルスクリプトは学習に最適で、単一のサーバーまたは小規模プロジェクトに十分な場合がありますが、複数のサーバーを実行しているか、より詳細な監視が必要な場合は、おそらく専用の監視ツールに移行する必要があります。 nagios xi “> nagios →最も信頼できる監視システム 。