BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

メモリが少なくなったときに電子メールアラートを送信するシェルスクリプト

bashなどのUnix/Linuxシェルプログラムの強力な側面 は、意思決定、コマンドの繰り返し実行、新しい関数の作成などを可能にする一般的なプログラミング構造に対する驚くべきサポートです。シェルスクリプトと呼ばれるファイルにコマンドを記述して、まとめて実行することができます。

これにより、信頼性が高く効果的なシステム管理手段が提供されます。スクリプトを記述して、タスクを自動化できます。たとえば、毎日のバックアップ、システムの更新などです。新しいカスタムコマンド/ユーティリティ/ツール以降を作成します。サーバーで展開されている内容に対応するためのスクリプトを作成できます。

サーバーの重要なコンポーネントの1つは、メモリ( RAM )です。 )、システムの全体的なパフォーマンスに大きく影響します。

この記事では、サーバーのメモリが不足している場合に1人以上のシステム管理者にアラートメールを送信するための、小さいながらも便利なシェルスクリプトを共有します。

これは、 Linux VPSを監視するのに特に役立つスクリプトです。 (仮想プライベートサーバー )メモリの量が少ない場合、たとえば約 1GB (約 990MB )。

テスト環境のセットアップ

  1. CentOS / RHEL 7 mailxを備えた本番サーバー 動作中のPostfixメールサーバーとともにインストールされたユーティリティ。

これがalertmemory.shの方法です スクリプトは機能します。最初に空きメモリサイズをチェックし、次に空きメモリの量が指定されたサイズ( 100 )以下かどうかを判断します。 このガイドの目的ではMB)、最小許容空きメモリサイズのベンチマークとして使用されます。

この条件が真の場合、サーバーRAMを消費している上位10プロセスのリストが生成され、指定された電子メールアドレスにアラート電子メールが送信されます。

注 :Linuxディストリビューションの要件を満たすには、スクリプトにいくつかの変更を加える必要があります(特に、メール送信者ユーティリティ、適切なフラグを使用します)。

サーバーメモリをチェックするシェルスクリプト
#!/bin/bash 
#######################################################################################
#Script Name    :alertmemory.sh
#Description    :send alert mail when server memory is running low
#Args           :       
#Author         :Aaron Kili Kisinga
#Email          :[email protected]
#License       : GNU GPL-3	
#######################################################################################
## declare mail variables
##email subject 
subject="Server Memory Status Alert"
##sending mail as
from="[email protected]"
## sending mail to
to="[email protected]"
## send carbon copy to
also_to="[email protected]"

## get total free memory size in megabytes(MB) 
free=$(free -mt | grep Total | awk '{print $4}')

## check if free memory is less or equals to  100MB
if [[ "$free" -le 100  ]]; then
        ## get top processes consuming system memory and save to temporary file 
        ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head >/tmp/top_proccesses_consuming_memory.txt

        file=/tmp/top_proccesses_consuming_memory.txt
        ## send email if system memory is running low
        echo -e "Warning, server memory is running low!\n\nFree memory: $free MB" | mailx -a "$file" -s "$subject" -r "$from" -c "$to" "$also_to"
fi

exit 0

スクリプトを作成した後/etc/scripts/alertmemory.sh 、実行可能にし、cron.hourlyにシンボリックリンクします。

# chmod +x /etc/scripts/alertmemory.sh
# ln -s -t /etc/cron.hourly/alertmemory.sh /etc/scripts/alertmemory.sh

これは、サーバーが実行されている限り、上記のスクリプトが1時間ごとに実行されることを意味します。

ヒント :意図したとおりに機能しているかどうかをテストし、ベンチマーク値を少し高く設定して、電子メールの送信を簡単にトリガーし、約5分の短い間隔を指定できます。

次に、スクリプトで提供されているfreeコマンドを使用して、コマンドラインからチェックを続けます。動作していることを確認したら、使用する実際の値を定義します。

以下は、アラートメールのサンプルを示すスクリーンショットです。

メモリが少なくなったときに電子メールアラートを送信するシェルスクリプト

それで全部です!この記事では、サーバーメモリ(RAM)が不足している場合に、シェルスクリプトを使用してシステム管理者にアラートメールを送信する方法について説明しました。このトピックに関するご意見は、以下のフィードバックフォームからお知らせください。


  1. Excel で条件が満たされたときに電子メールを自動的に送信する方法

    メールの自動送信 フリーサイズのメッセージをデザインし、ユーザーに届けることができます。自動メールを生成して送信することで、時間を節約できます。特定の時間に電子メールを送信できるため、電子メールの自動化は潜在的な消費者と関わるための優れたアプローチです.適切なタイミングで適切な人に電子メール通知を送信できる機能は、電子メール自動化の最も価値のある機能です。この記事では、さまざまな VBA マクロのデモを行います。 条件が満たされたときに自動的に電子メールを送信する Excel の。 ワークブックをダウンロードして練習できます。 Excel で条件が満たされたときに自動的にメールを送信する 3

  2. 匿名でメールを送信する方法

    市場には、Gmail、Outlook、Yahoo! などの機能豊富な電子メール クライアントがたくさんあります。メールは、最も評判の良いインターネット企業の一部が所有しています。多くのユーザーは、オンライン プライバシーに関していまだに安全を感じていません。これらのプラットフォームはすべて、ユーザーをスパイしてユーザーの行動を見つけ出し、他のオンライン アクティビティを追跡しようとするためです。 私たちは通常、双方向のコミュニケーションに電子メールを使用しますが、特定されずに電子メールを送受信する必要があると感じる場合があり、その理由は完全に正当です. プライバシーが好きなだけかもしれません