実稼働用の構築:Webアプリケーション—監視
序章
本番アプリケーションサーバーのセットアップ、復旧計画、およびバックアップが完了したので、サーバーとサービスの状態の認識を向上させるための監視の追加について見ていきましょう。 Nagios、Icinga、Zabbixなどの監視ソフトウェアを使用すると、アプリケーションセットアップのどのコンポーネントに注意が必要かを示すダッシュボードとアラートを作成できます。 これの目的は、ユーザーが問題に遭遇する前に、セットアップの問題を検出し、修正を開始できるようにすることです。
このチュートリアルでは、監視ソフトウェアとしてNagios 4をセットアップし、アプリケーションを構成するサーバーにNRPEエージェントをインストールします。
セットアップ内のサーバーごとに、サーバーが稼働しているかどうか、およびそのプライマリプロセス(つまり、 apache、mysql、またはhaproxy)が実行されています。 この監視ガイドは包括的ではありませんが(ここでは取り上げない追加のチェックを設定することをお勧めします)、開始するのに最適な場所です。
前提条件
ドメイン名を介してロギングダッシュボードにアクセスする場合は、monitoring.example.comのようにドメインの下にARecordを作成します。これはmonitoringを指します。 サーバーのパブリックIPアドレス。 または、パブリックIPアドレスを介して監視ダッシュボードにアクセスすることもできます。 HTTPSを使用するように監視Webサーバーを設定し、VPNの背後に配置してアクセスを制限することをお勧めします。
モニタリングサーバーにNagiosをインストールする
次のチュートリアルに従って、MonitoringサーバーにNagiosをセットアップします。Ubuntu14.04にNagios4をインストールしてサーバーを監視する方法。 必要に応じて、NagiosのフォークであるIcingaを使用することもできます。
NRPEセクションでUbuntuホストを監視するに到達したら停止します。
Nagiosにサーバーを追加する
セットアップ内の各サーバー(db1、app1、app2、およびlb1)で、Nagiosチュートリアルの[NRPEを使用したUbuntuホストの監視]セクションを実行します。
監視サーバーのプライベートホスト名またはIPアドレスをNRPE構成ファイルのallowed_hosts
設定に必ず追加してください。
各ホストの追加が完了したら、監視するサーバーごとに、db1.cfg
、app1.cfg
、app2.cfg
、およびlb1.cfg
という個別のファイルが必要です。 ]。 各ファイルには、それぞれのホスト名とアドレス(サーバーのホスト名またはIPアドレスの場合があります)を参照するホスト定義が含まれている必要があります。
ホストとサービスの監視を設定する
すべてのサーバーで監視したい一般的なもののリストを作成しましょう。 サーバーごとに、次のサービスを監視してみましょう。
- ping
- SSH
- 現在の負荷
- 現在のユーザー
- ディスク使用率
それを設定しましょう。
共通サービスの定義
Nagiosセットアップチュートリアルでは、/usr/local/nagios/etc/servers
(またはIcingaの場合は/etc/icinga/objects/
)で.cfg
ファイルを検索するようにNagiosを構成しました。 整理するために、監視する共通サービス用の「common.cfg」という新しいNagios構成ファイルを作成します。
まず、編集用のホスト構成ファイルを開きます
sudo vi /usr/local/nagios/etc/servers/common.cfg
次のサービス定義を、各サーバーのhost_name(前述のホスト定義で定義)とともに追加します。
Nagios構成—共通サービス
define service { use generic-service host_name db1,app1,app2,lb1 service_description PING check_command check_ping!100.0,20%!500.0,60% } define service { use generic-service host_name db1,app1,app2,lb1 service_description SSH check_command check_ssh notifications_enabled 0 } define service { use generic-service host_name db1,app1,app2,lb1 service_description Current Load check_command check_nrpe!check_load } define service { use generic-service host_name db1,app1,app2,lb1 service_description Current Users check_command check_nrpe!check_users } define service{ use generic-service host_name db1,app1,app2,lb1 service_description Disk Utilization check_command check_nrpe!check_hda1 }
保存して終了。
これで、各サーバーに固有のサービスを定義する準備が整いました。 まず、データベースサーバーから始めます。
MySQLプロセスを定義する
NRPEコマンドの作成(クライアント上)
データベースサーバーdb1で、新しいNRPEコマンドを構成します。 新しいNRPE構成ファイル「commands.cfg」を開きます。
sudo vi /etc/nagios/nrpe.d/commands.cfg
次のコマンド定義を追加します。
NRPE構成(commands.cfg)— check_mysqld
command[check_mysqld]=/usr/lib/nagios/plugins/check_procs -c 1: -C mysqld
保存して終了。 これにより、NRPEは「mysqld」という名前のプロセスをチェックし、その名前で実行されているプロセスが1つ未満の場合はクリティカルステータスを報告できます。
NRPE構成をリロードします。
sudo service nagios-nrpe-server reload
サービス定義の作成(サーバー上)
Nagiosサーバーのmonitoringで、NRPEを使用してcheck_mysqld
コマンドを実行する新しいサービスを定義する必要があります。
データベースホストを定義するを定義するファイルを開きます。 この例では、「db1.cfg」と呼ばれています。
sudo vi /usr/local/nagios/etc/servers/db1.cfg
ファイルの最後に、次のサービス定義を追加します(host_name
の値がホスト定義の名前と一致することを確認してください)。
db1.cfg — check_mysql
define service { use generic-service host_name db1 service_description Check MySQL Process check_command check_nrpe!check_mysqld }
保存して終了。 これにより、NagiosはNRPEを使用してデータベースサーバーでcheck_mysqldコマンドを実行するように構成されます。
この変更を有効にするには、Nagiosをリロードする必要があります。 ただし、最初にApacheプロセスの監視に移ります。
Apacheプロセスを定義する
NRPEコマンドの作成(クライアント上)
アプリケーションサーバーapp1およびapp2で、新しいNRPEコマンドを構成します。 新しいNRPE構成ファイル「commands.cfg」を開きます。
sudo vi /etc/nagios/nrpe.d/commands.cfg
次のコマンド定義を追加します。
NRPE構成(commands.cfg)— check_apache2
command[check_apache2]=/usr/lib/nagios/plugins/check_procs -c 1: -w 3: -C apache2
保存して終了。 これにより、NRPEは「apache2」という名前のプロセスをチェックし、実行中の一致するプロセスがない場合はクリティカルステータスを報告し、一致するプロセスが3つ未満の場合は警告ステータスを報告できます。
NRPE構成をリロードします。
sudo service nagios-nrpe-server reload
追加のアプリケーションサーバーでこれを繰り返すようにしてください。
サービス定義の作成(サーバー上)
Nagiosサーバーのmonitoringで、NRPEを使用してcheck_apache2
コマンドを実行する新しいサービスを定義する必要があります。
アプリケーションホストを定義するを定義するファイルを開きます。 この例では、これらは「app1.cfg」および「app2.cfg」と呼ばれます。
sudo vi /usr/local/nagios/etc/servers/app1.cfg
ファイルの最後に、次のサービス定義を追加します(host_name
の値がホスト定義の名前と一致することを確認してください)。
app1.cfgおよびapp2.cfg— check_apache2
define service { use generic-service host_name app1 service_description Check Apache2 Process check_command check_nrpe!check_apache2 }
保存して終了。 これにより、アプリケーションサーバーでcheck_apache2コマンドを実行するためにNRPEを使用するようにNagiosが構成されます。 アプリケーションサーバーごとにこれを繰り返してください。
この変更を有効にするには、Nagiosをリロードする必要があります。 ただし、その前にHAProxyプロセスの監視に移ります。
HAProxyプロセスを定義する
NRPEコマンドの作成(クライアント上)
ロードバランサーサーバーlb1で、新しいNRPEコマンドを構成します。 新しいNRPE構成ファイル「commands.cfg」を開きます。
sudo vi /etc/nagios/nrpe.d/commands.cfg
次のコマンド定義を追加します。
NRPE構成(commands.cfg)— check_haproxy
command[check_haproxy]=/usr/lib/nagios/plugins/check_procs -c 1: -C haproxy
保存して終了。 これにより、NRPEは「haproxy」という名前のプロセスをチェックし、その名前で実行されているプロセスが1つ未満の場合はクリティカルステータスを報告できます。
NRPE構成をリロードします。
sudo service nagios-nrpe-server reload
追加のアプリケーションサーバーでこれを繰り返すようにしてください。
サービス定義の作成(サーバー上)
Nagiosサーバーのmonitoringで、NRPEを使用してcheck_haproxy
コマンドを実行する新しいサービスを定義する必要があります。
データベースホストを定義するを定義するファイルを開きます。 この例では、「lb1.cfg」と呼ばれています。
sudo vi /usr/local/nagios/etc/servers/lb1.cfg
ファイルの最後に、次のサービス定義を追加します(host_name
の値がホスト定義の名前と一致することを確認してください)。
lb1.cfg — check_haproxy
define service { use generic-service host_name lb1 service_description Check HAProxy Process check_command check_nrpe!check_haproxy }
これにより、NagiosはNRPEを使用してロードバランサーサーバーでcheck_haproxyコマンドを実行するように構成されます。
この変更を有効にするには、Nagiosをリロードする必要があります。
Nagios構成をリロード
Nagiosをリロードし、すべての変更を有効にするには、次のコマンドを入力します。
sudo service nagios reload
構成に構文エラーがない場合は、設定する必要があります。
Nagiosサービスを確認してください
先に進む前に、Nagiosが定義したすべてのホストとサービスを監視していることを確認する必要があります。 パブリックホスト名またはIPアドレスを介してNagiosサーバーにアクセスします。 http://monitoring.example.com/nagios/
。 Nagiosサーバーのインストール中に設定したログインを入力します。
サイドメニューで、サービスリンクをクリックします。 次のようなページが表示されます。
理想的には、各ホストが表示され、すべてのサービスが「OK」ステータスになります。 スクリーンショットでは、 app2 サーバーに問題があることがわかります。これは、最新のステータスチェック中に電源がオフになっているためです。 いずれかのサービスが「OK」でない場合は、それらを修正するか、サービスに問題がない場合は、Nagiosの構成でエラーを確認します。
その他の考慮事項
ほとんどの場合、監視サーバーのリカバリプランを作成し、Nagios構成ファイル(/usr/local/nagios/etc
)をバックアップすることをお勧めします。 バックアップを設定したら、監視、追加サービス、および電子メール通知を構成することをお勧めします。
結論
これで、監視ダッシュボードを一瞥するだけで、サーバーとサービスのステータスを確認できるはずです。 停止が発生した場合、監視システムは、どのサーバーとサービスが適切に実行されていないかを特定するのに役立ち、アプリケーションのダウンタイムを減らすのに役立ちます。
次のチュートリアルに進んで、本番サーバーのセットアップ用に集中ログの設定を開始します:本番用のビルド:Webアプリケーション—集中ログ。