Webシステムの構成から、Pandora FMSによる監視設計を検討する
ネットワーク機器の正常性確認
ネットワーク機器の役割は、「通信を通すか、遮断するか」であるため、ネットワーク機器に直接問い合わせてサービスの正常性確認を行うことは難しい。
そこで、ネットワーク機器に関するサービスの正常性確認は、サイトに対するシナリオ監視など、ネットワーク機器を通る通信を行う別の監視に任せておく。そのため、ネットワーク機器自体の監視は、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)。
このように、監視対象サーバーローカルから監視を行う場合には、ソットウェアエージェントをインストールしたうえで、[リスト3]のような設定を行う。
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’未満になった場合に、「障害」にするといった設定を行う。
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)。
また、WebサーバーからDBサーバーへの接続を確認する場合には、Webサーバーのソフトウェアエージェントに、[リスト5]のようなモジュールを追加する。
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サーバーのソフトウェアエージェントに追加する。
module_begin
module_name mysqld process count
module_type generic_data
module_exec ps acx | grep -c mysqld || true
module_end
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Pandra FMSならではの便利な監視設定
- 統合運用管理システムとしてのPandora FMSの実力を探る
- Ansible:さらにPlaybookをきわめる
- Pandora FMSを使った具体的な監視運用設計の実装
- Ansibleのインストールとサンプルコードの実行
- Rancherのカスタムカタログの作成
- Pandora FMSによるカスタムグラフ、カスタムレポートの作成
- Oracle Cloud Hangout Cafe Season7 #2「IaC のベストプラクティス」(2023年7月5日開催)
- スペイン発のオープンソース統合監視ツール「Pandra FMS」(1)
- KubernetesのConfig&Storageリソース(その1)