Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Linux

Linux:サーバ死活管理スクリプト

投稿日:2017年6月11日 更新日:

システム構築では「運用」の中で死活監視を行いますが、その概要と簡単なLinuxでの例を紹介します。

●死活監視とは
サーバーが止まらずに動いているか?のチェックを行うことです。 最も身近な死活チェックでは、サーバーに対してpingを飛ばしたりする事で確認を行います。システム構築における死活監視は人手では行わずに自動で行いますが、サーバーから一定時間の正常応答が無かった場合にサーバーがダウンしていると判定し、システム管理者に連絡を入れたり、自動的に再起動を行ったりするケースが多いです。

●死活監視の方式
①ping疎通監視(ICMP=Internet Control Message Protocol)
該当のサーバーにpingを送り、疎通チェックを行う方式です。利点としては手軽さが挙げられるが、pingはファイアウォールでブロックされる可能性が高いため、実運用には不向きです。ちなみにpingはICMPプロトコルを用いたNW診断ツールで、IP通信の状態を確認する事ができます。

②ポート監視 pingはOSI参照モデルにおける「第三層=ネットワーク層」の死活監視であるため、それより上位層の状態をチェックする事ができないという問題点があります(例えば、サーバー内の特定のアプリケーションが動作しているか否か、など)。 それを解消するためにポート監視(OSI参照モデルにおける「第四層=トランスポート層」の監視)という方法もあります。ポート監視ではTCPやUDPプロトコルのポートを監視します(例 21:ftp/25:smtp/80:http/115:sftp/443:httpsなど)

概説は以上で、ここからは簡単な「Linuxサーバの死活管理スクリプト」の例を紹介したいと思います。

1.事前準備・確認

内容としては、確認したいサーバにpingを飛ばし応答がない場合は管理者にメールをするというもの。メインは以下のコマンド。

ping ${IP} -c 1 /dev/null

(“-c n”(nは回数)は送付するパケットの回数)

そして、pingの戻り値は下記の通りです。
0 正常
1 不通
2 引数異常
これらを判定に利用します。
ping成功(例) ※”AA.BB.CC.DD”は確認したいサーバのIPアドレス

ping -c 1 AA.BB.CC.DD
PING AA.BB.CC.DD (AA.BB.CC.DD) 56(84) bytes of data.
64 bytes from AA.BB.CC.DD: icmp_seq=1 ttl=61 time=0.812 ms
--- AA.BB.CC.DD ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 1ms
rtt min/avg/max/mdev = 0.812/0.812/0.812/0.000 ms

戻り値確認

echo $?
0

ping失敗(例) ※”AA.BB.CC.DD”は確認したいサーバのIPアドレス

ping -c 1 AA.BB.CC.DD
PING AA.BB.CC.DD (AA.BB.CC.DD) 56(84) bytes of data.
--- AA.BB.CC.DD ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 10000ms

戻り値確認

echo $?
1

2.死活管理シェルスクリプトの作成

下記のスクリプトを/usr/bin配下に作成する。
参考:http://calcabrina.net/archives/53/

cd /usr/bin
vi ping_alert.sh

今回はping_alert.shと命名します。
下記例のXXXXX.XXXXX.XXXXX@gmail.comは各自のメールアドレス。

#! /bin/csh
IP_ADDR_ARRAY=("AA.BB.CC.DD");
NUM=0
for IP in ${IP_ADDR_ARRAY[@]}
do
/bin/ping ${IP} -c 1 >> /dev/null
if [ $? == 0 ] ;
then
 echo "${IP} : OK" | mail -s "Server is active"  XXXXX.XXXXX.XXXXX@gmail.com
else
 echo "${IP} : NG" | mail -s "Alert of server down"  XXXXX.XXXXX.XXXXX@gmail.com
fi
  NUM=`expr ${NUM} + 1`
done

3.etcの直下のcrontabに以下を記述

20 * * * * root sh /usr/bin/ping_alert.sh

4.結果確認

ping成功(例)
成功メールが届きました。
成功2

ping失敗(例)
失敗メールが届きました。
失敗2
以上です。

Adsense審査用広告コード


Adsense審査用広告コード


-Linux

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Linux基礎コマンド(第4回) viエディタの操作・ログの取得

初めてLinuxを触る人向けにTeraTermのログイン方法からコマンドを入力する方法まで数回にわたり解説していきます。本記事はその第4弾で、viエディタの使い方を簡単に紹介します。第1弾の記事はこち …

Linuxのprocディレクトリとは?用途や中身について

  <目次> (1) Linuxのprocディレクトリとは?用途や中身について  (1-1) procディレクトリとは?  (1-2) procディレクトリの中身 (1) Linuxのpro …

GNOMEのランチャー設定手順をEclipseを例にご紹介

<目次> (1) GNOMEのランチャー設定手順をEclipseを例にご紹介  (1-1) EclipseのGNOME用ランチャー作成手順  (1-2) 備考:上記対応で追加されない場合 GNOMEの …

scpコマンドを使った異なるLinuxサーバ間のファイル転送の方法

異なるLinuxサーバ間(サーバA⇔サーバB)でファイルを転送する方法について書きます。 (0)目次&概説 >(1) 転送コマンドの構文 >(2) 転送コマンドの実行  >(2-1) 転送元の転送前( …

パイプ通信とは?概要やサンプルプログラムをご紹介

  <目次> (1) パイプ通信とは?概要やサンプルプログラムをご紹介  (1-1) パイプ通信の概要  (1-2) パイプ通信の構文  (1-3) パイプ通信のサンプルプログラム①(単一プ …

  • English (United States)
  • 日本語
Top