Webシステムの構成から、Pandora FMSによる監視設計を検討する

2014年7月15日(火)
株式会社アールワークス

監視・情報収集設計の実際

ここまで、Pandora FMSについて簡単に説明をしてきたが、Pandora FMSを使った監視設計の実際を見ていこう。ここでは、図1のような構成のWebシステムを考えよう。

図1 Webシステムの例
図1 Webシステムの例

このシステムの監視ポイントは、次のように整理できる。

  1. システム全体的な正常性の確認
  2. ネットワーク機器の正常性確認
  3. Webサーバーの監視
  4. DBサーバーの監視
  5. サービス監視

以降は、監視ポイントについて順番に見ていこう。

システム全体的な正常性の確認

最も重要なことは、「システムがエンドユーザーにサービスを提供できているかどうか」である。

この確認としては、

  1. Webサイトそのものへのインターネットからの到達性監視
  2. エンドユーザーの操作を再現するシナリオ監視

が必要になる。Pandora FMSでは、それぞれについて、Webサーバーとネットワークサーバーを使った監視が可能である(表1)。

表1 システムの正常稼働確認のための監視項目
項目 監視手法 Pandora FMS サーバー
サイトへのネットワーク到達性 ping による疎通確認 ネットワークサーバー
サイトの正常稼働確認 シナリオ監視 Webサーバー

Pandora FMSでは、監視項目は必ずエージェントに持たせる必要がある。サイト全体のように、物理的に対応する機器がない場合には、例えばwww.example.comのような名前のエージェントを作り、そこに各監視用のモジュールを作るとよい。

インターネットからシステムへのネットワーク到達性は、インターネット経由のping疎通監視で実施できる。Pandora FMSでは、ネットワークサーバーにping疎通監視の機能がある。www.example.comへの疎通確認であれば、図2のようなping疎通監視用のネットワークサーバーモジュールを作成する。

図2 疎通監視を行うネットワークサーバーモジュール
図2 疎通監視を行うネットワークサーバーモジュール

一方のシナリオ監視にはWebサーバーを使う。例えば、[リスト1]のようなHTMLフォームへのログイン処理であれば、Webサーバーモジュールを作り、Webチェック覧に[リスト2]のような内容を設定する(図3)。

図3 Webサーバーモジュールの例
図3 Webサーバーモジュールの例
[リスト1]ログインフォームの例
<form method="post" action="index.php?login=1">
<table cellpadding="4" cellspacing="1" width="420">
<tr><td>ログイン:<br /><input type="text" class="login"
name="nick" id="nick" /></td></tr>
<tr><td><br>パスワード:<br/><input  type="password"
class="login" name="pass" id="pass" /></td></tr>
<tr><td align="center">
  <br><input type="submit" id="submit-unnamed" name="unnamed" value="Login" class="sub next"/>
</td></tr>
</table>
</form>
[リスト2] Webチェック覧設定内容
task_begin
post http://sonar.rworks-ms.jp/demo/index.php?login=1
variable_name nick
variable_value demo
variable_name pass
variable_value demo
cookie 1
resource 1
task_end

ネットワーク機器の正常性確認

ネットワーク機器の役割は、「通信を通すか、遮断するか」であるため、ネットワーク機器に直接問い合わせてサービスの正常性確認を行うことは難しい。

そこで、ネットワーク機器に関するサービスの正常性確認は、サイトに対するシナリオ監視など、ネットワーク機器を通る通信を行う別の監視に任せておく。そのため、ネットワーク機器自体の監視は、pingによる死活監視を基本とし、必要であればネットワーク機器への不正アクセスなどの監視を追加で行うような場合が多い。

Pandora FMSでのping監視は、前述の通り、ネットワークサーバーモジュールによって行う。まずネットワーク機器ごとにエージェントを作成し、各エージェントに、ネットワーク機器の持つIPアドレスに対するping疎通監視用のネットワークサーバーモジュールを登録する。

Webサーバーの監視

Webサーバーの監視ポイントは、「HTTPサービスが正常に稼働しているかどうか」である。

この最も確実な監視方法は、サイト全体の監視として行っている「シナリオ監視」と同じ監視を、個々のWebサーバーに対しても行うことであるが、内部の監視では、そこまで重厚な監視は不要と考える向きもあるだろう。そういう場合は、監視サーバーからのHTTPサービスの応答を確認したり、あるいはサーバーローカルからHTTPサービスの応答を確認したりすることになる。

Pandora FMSで監視を行う場合、監視サーバーからのHTTPサービスの応答確認であれば、ネットワークサーバーのTCP監視機能を利用する。例えば、‘/’をGETした際の応答コードが‘200’であることを確認する場合、ネットワークサーバーモジュールの種類を「Remote TCP network agent, boolean data」とし、TCP送信文字列に「GET/HTTP/1.0」、TCP受信文字列に「200」を設定する(図4)。

図4 HTTPリクエストを行いレスポンスを確認するネットワークモジュール
図4 HTTPリクエストを行いレスポンスを確認するネットワークモジュール

このように、監視対象サーバーローカルから監視を行う場合には、ソットウェアエージェントをインストールしたうえで、[リスト3]のような設定を行う。

[リスト3]HTTP応答確認用モジュール設定例
module_begin
module_name HTTP応答
module_type generic_proc
module_exec wget -q http://localhost/ -O /dev/null && echo 1 || echo 0
module_end

また、httpdプロセスの存在確認であれば、[リスト4]のようなhttpdプロセス数を数えるモジュールを作成し、Pandoraサーバー側でモジュールの値が‘1’未満になった場合に、「障害」にするといった設定を行う。

[リスト4]プロセス数カウント用モジュール設定例
module_begin
module_name httpd プロセス数
module_type generic_data
module_exec ps acx | grep -c httpd || true
module_end

なお、ソフトウェアエージェントでは、実行に失敗したモジュールのデータはサーバーに渡されないので、注意が必要だ。例えば、"grep-c"でカウントを行う場合、検索文字列が見つからないとgrepは異常終了してしまうため、grepが異常終了した場合にもモジュール自体は正常終了するよう、調整する必要がある。

DBサーバーの監視

DBサーバーの監視ポイントは、「データベースが正常に応答しているかどうか」である。

監視サーバーからMySQLの応答を確認する場合、TCPレベルの接続チェックで構わなければ、ネットワークサーバーが使える。「クエリーを発行して応答文字列を監視する」といった、より高度な監視を実現するには、プラグインを用意してプラグインサーバーに実行させる必要がある。

例として、Nagiosプラグインのcheck_mysql_queryコマンドを監視に使う場合を考えよう。この場合、まず、システム管理メニューの「サーバー管理」にある「プラグイン管理」から、check_mysql_queryコマンドをプラグイン登録する(図5)。プラグイン登録が済んだら、登録したプラグインを利用するプラグインサーバーモジュールを作成する(図6)。

図5 check_mysql_query をプラグインとして登録
図5 check_mysql_query をプラグインとして登録
図6 登録したプラグインを使ったプラグインサーバーモジュールを作成
図6 登録したプラグインを使ったプラグインサーバーモジュールを作成

また、WebサーバーからDBサーバーへの接続を確認する場合には、Webサーバーのソフトウェアエージェントに、[リスト5]のようなモジュールを追加する。

[リスト5] DB接続確認用モジュール設定例
module_begin
module_name DB connect check
module_type generic_proc
module_exec if mysqlshow -u "ユーザー名" -p "パスワード" >/dev/null;then echo 1; else echo 0; fi
module_end

DBサーバーローカルでの応答確認であれば、[リスト5]のようなモジュールを、DBサーバーにインストールしたソフトウェアエージェントの設定に追加する。また、mysqldプロセスの存在確認であれば、[リスト6]のようなモジュールを、DBサーバーのソフトウェアエージェントに追加する。

[リスト6] mysqlプロセス存在確認用モジュール設定例
module_begin
module_name mysqld process count
module_type generic_data
module_exec ps acx | grep -c mysqld || true
module_end
著者
株式会社アールワークス
1985年に株式会社アステックとして創業。2000年10月の株式会社アールワークス設立を経て、2005年6月より現在の1社体制に移行。同時に、社名を(株)アールワークス(Rworks, Inc.)に変更。
設立以来、IDC事業やITマネージドサービスを行い、そこで培ったネットワークインフラの運用ノウハウや、さまざまなソフトウェアを開発した技術力を結集し、現在、ITシステムのリモート運用サービスをはじめとして、インフラ構築、ハウジングやホスティングサービス、SaaS/ASP型のシステム監視基盤の提供を行う。単純なオペレーターではない技術提供をベースにした24時間365日の統合的なフルマネージドサービスを提供している。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています