メモリが不足したときにEメールアラートを送信するシェルスクリプト


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

これはあなたにシステム管理の信頼できるそして効果的な手段を提供します。毎日のバックアップ、システムの更新など、タスクを自動化するスクリプトを書くことができます。新しいカスタムコマンド/ユーティリティ/ツールなどを作成します。サーバー上で展開されているものに追いつくのに役立つスクリプトを書くことができます。

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

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

これは、 1GB 程度の容量のメモリで、 Linux VPS 仮想プライベートサーバー)を監視するのに特に便利なスクリプトです。約 990MB

  1. A CentOS/RHEL 7 production server with mailx utility installed with working postfix mail server.

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

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

<強いスタイル=色:赤

サーバのメモリをチェックするシェルスクリプト

#!/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時間ごとに実行されます。

<強いスタイル=色:赤

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

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

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