Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

ポート監視やwatchdogで簡易サーバ監視@CentOS 5

      2011/10/08

アカウント共有型のレンタルサーバならサーバが落ちても、管理者の方が監視してくれていて、再起動なり修理なりしてくれますが、専用サーバやVPSだと、ハード故障以外の管理は基本的に自分でやらなければなりません。

本格的に監視し、ダウンタイムを短くしたいならば、HAクラスタリングや監視ツールなどを入れておく方法が有効ですが、個人でそこまで本格的な物はいらない場合の簡易サーバ監視方法をご紹介します。

今回主に使用する機能は、

  • カーネル異常寺の再起動
  • サーバのポート定期監視
  • watchdog(softdog) によるサーバ高負荷・無応答寺の再起動

の3つです。もちろん全ての故障は救えないので、ご了承ください。

カーネル異常時の再起動

まずは、カーネル異常時にサーバを自動起動させる設定を行います。これは、カーネルパニックや Ooops時に自動再起動する仕組みを設定します。

設定方法はいたって簡単。以下のようにprocのパラメータを変更してあげます。

echo 60 > /proc/sys/kernel/panic
echo 1 > /proc/sys/kernel/panic_on_oops

上記の場合、カーネルパニックやOops時発生60秒後に、再起動がかかります。Ooopsは除外したい場合は2行目の設定を行わないでください。この設定はサーバ再起動後元に戻ってしまいますので、起動時に自動的に有効にしたい場合は /etc/sysctl.conf に設定を書いてあげます。

kernel.panic = 60
kernel.panic_on_oops = 1

サーバのポート定期監視

次はサーバのポート監視です。ポート監視には、”nc” というコマンドを使います。例えば、Apacheを監視したいならば、80番ポートを定期的にスクリプトで監視し、異常はhttpサーバを再起動してあげます。

・スクリプト例 (/root/check_server.sh)

#!/bin/bash
nc -z localhost 80 > /dev/null
   if [ $? != 0 ]; then
   echo "Restarting httpd"
   /etc/init.d/httpd restart
   echo "done $?"
fi

今回はncでのポート監視でしたが、もっと監視制度を上げたいならば、wgetを使うのもありだと思います。
これを、定期的にcrond で動かしてあげます。今回は5分間隔

# crontab -e
*/5      *       *       *       *       /root/check_server.sh

これでポート監視設置完了です。異常時は、デフォルトだとスクリプト内のechoの文字列などは、rootにメールで送られるはずです。よって、これを外部にメールで知らせたい場合は、メールのエイリアスを送信先のメールに書き換えてあげます。

# vi /etc/aliases
~ 省略 ~
root:           abcd@・・・・     ← root宛をabcd@・・・宛に送る
# newaliases     ← 設定反映

メールサーバも落ちていると、メール送信できないので、ついでに、メールサーバのポートも監視してあげます。

・スクリプト例  : 25番ポート監視追加

#!/bin/bash
nc -z localhost 80 > /dev/null
   if [ $? != 0 ]; then
   echo "Restarting httpd"
   /etc/init.d/httpd restart
   echo "done $?"
fi

nc -z localhost 25 > /dev/null
   if [ $? != 0 ]; then
   echo "Restarting Postfix"
   /etc/init.d/postfix restart
   echo "done $?"
fi

以上で、ポート監視関連の作業はおしまい。

次ページは、watchdog(softdog)の設定です。

ページ: 1 2

 - IT技術, サーバ構築

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
すでに同名のdebパッケージがインストールされているか確認する@Ubuntu 14.04

リポジトリにはまだ登録されていないパッケージを手動でdpkgを使ってアップデート …

no image
VNC上の文字化け解消@CentOS 5

一部のアプリケーション、例えばJavaやOracleのインストーラーなどは、VN …

no image
シェルスクリプトでファイル内の文字列を置換する

== 2012/11/8 追記 == 以下ではedコマンドでの文字列置換を紹介し …

no image
Mercurial 覚え書き@Fedora 13

分散型のバージョン管理システムである、Mercurial を使ってみました。 最 …

no image
Googleブック検索

まだβ版ですが、いつの間にかGoogleのブック検索というサービスが動いています …

no image
Apacheのプロキシ(proxy)機能

Apacheにはフォワードプロキシやリバースプロキシの機能があります。 フォワー …

no image
PC電源ユニット ENERMAX MODU82+ EMD525AWT購入

PCのATX電源として、Seasonic の”SS-300FS&#8 …

no image
CodeReadingWiki 改造版でソースコード解読

etherさん作成のCodeReadingWiki が、ソースコードを読むのにす …

no image
オフラインファイルの削除@Windows XP

Windowsにはオフラインフォルダといって、ネットワーク共有のファイルをネット …

no image
Windows bashを使ってみた

Windows10 の Anniversary Updateで、Ubuntu が …