実稼働用の構築: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ホストの監視]セクションを実行します。
必ずmonitoringサーバーのプライベートホスト名またはIPアドレスをに追加してください allowed_hosts
NRPE構成ファイルの設定。
各ホストの追加が完了したら、監視するサーバーごとに個別のファイルを用意する必要があります。 db1.cfg
, app1.cfg
, app2.cfg
、 と lb1.cfg
. 各ファイルには、それぞれのホスト名とアドレス(サーバーのホスト名またはIPアドレスの場合があります)を参照するホスト定義が含まれている必要があります。
ホストとサービスの監視を設定する
すべてのサーバーで監視したい一般的なもののリストを作成しましょう。 サーバーごとに、次のサービスを監視してみましょう。
- ping
- SSH
- 現在の負荷
- 現在のユーザー
- ディスク使用率
それを設定しましょう。
共通サービスの定義
Nagiosセットアップチュートリアルでは、Nagiosが検索するように構成しました .cfg
のファイル /usr/local/nagios/etc/servers
(また /etc/icinga/objects/
Icingaの場合)。 整理するために、監視する共通サービス用の「common.cfg」という新しいNagios構成ファイルを作成します。
まず、編集用のホスト構成ファイルを開きます
- sudo vi /usr/local/nagios/etc/servers/common.cfg
次のサービス定義を、各サーバーのhost_name(前述のホスト定義で定義)とともに追加します。
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
次のコマンド定義を追加します。
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
値はホスト定義の名前と一致します):
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
次のコマンド定義を追加します。
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
値はホスト定義の名前と一致します):
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
次のコマンド定義を追加します。
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
値はホスト定義の名前と一致します):
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アプリケーション—集中ログ。