前書き

実稼働アプリケーションサーバーのセットアップ、復旧計画、およびバックアップができたので、サーバーとサービスの状態に対する認識を向上させるために、監視の追加を検討しましょう。 Nagios、Icinga、Zabbixなどの監視ソフトウェアを使用すると、アプリケーションセットアップのどのコンポーネントに注意が必要かを示すダッシュボードとアラートを作成できます。 これの目的は、セットアップの問題を検出し、ユーザーが問題に遭遇する前に修正を開始できるようにすることです。

image:https://assets.digitalocean.com/articles/architecture/production/monitoring.png [監視図]

このチュートリアルでは、監視ソフトウェアとしてNagios 4をセットアップし、アプリケーションを構成するサーバーにNRPEエージェントをインストールします。

セットアップ内の各サーバーについて、サーバーが起動しているかどうか、およびプライマリプロセス(つまり、 apache、mysql、またはhaproxy)が実行されています。 この監視ガイドは包括的なものではありませんが、ここでは説明しない追加のチェックを設定することをお勧めします。開始するには最適な場所です。

前提条件

ドメイン名を使用してロギングダッシュボードにアクセスする場合は、* monitoring サーバーのパブリックIPアドレスを指す「monitoring.example.com」などのドメインの下に A Record *を作成します。 または、パブリックIPアドレス経由で監視ダッシュボードにアクセスできます。 HTTPSを使用するように監視Webサーバーを設定し、VPNの背後に配置することでアクセスを制限することをお勧めします。

監視サーバーにNagiosをインストールする

次のチュートリアルに従って、*監視*サーバーでNagiosをセットアップします:https://www.digitalocean.com/community/tutorials/how-to-install-nagios-4-and-monitor-your-servers-on-ubuntu- 14-04 [Ubuntu 14.04でNagios 4をインストールしてサーバーを監視する方法]。 必要に応じて、https://www.digitalocean.com/community/tutorials/how-to-use-icinga-to-monitor-your-servers-and-services-on-ubuntu-14-04 [ Icinga]、これはNagiosのフォークです。

  • NRPEでUbuntuホストを監視する*セクションに到達したら停止します。

サーバーをNagiosに追加する

セットアップ内の各サーバー(db1、app1、app2、lb1)で、https://www.digitalocean.com/community/tutorials/how-to-install-nagios-4-and-monitor-your- Nagiosチュートリアルのservers-on-ubuntu-14-04#monitor-an-ubuntu-host-with-nrpe [NRPEでUbuntuホストを監視]セクション。

*モニタリング*サーバーのプライベートホスト名またはIPアドレスをNRPE設定ファイルの `+ allowed_hosts +`設定に必ず追加してください。

各ホストの追加が完了したら、監視するサーバーごとに個別のファイルがあるはずです: + db1.cfg ++ app1.cfg ++ app2.cfg +、および `+ lb1.cfg + `。 各ファイルには、それぞれのホスト名とアドレス(サーバーのホスト名またはIPアドレス)を参照するホスト定義が含まれている必要があります。

ホストとサービスの監視を設定する

すべてのサーバーで監視する一般的なもののリストを作成しましょう。 サーバーごとに、次の*サービス*を監視しましょう。

  • Ping

  • SSH

  • 現在の負荷

  • 現在のユーザー

  • ディスク使用率

それを設定しましょう。

Common Servicesを定義する

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                       ,,,
       service_description             PING
       check_command                   check_ping!100.0,20%!500.0,60%
}

define service {
       use                             generic-service
       host_name                       ,,,
       service_description             SSH
       check_command                   check_ssh
       notifications_enabled           0
}

define service {
       use                             generic-service
       host_name                       ,,,
       service_description             Current Load
       check_command                   check_nrpe!check_load
}

define service {
       use                             generic-service
       host_name                       ,,,
       service_description             Current Users
       check_command                   check_nrpe!check_users
}

define service{
       use                             generic-service
       host_name                       ,,,
       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

保存して終了。 これにより、NRPEは「mysqld」という名前のプロセスをチェックし、その名前で実行されているプロセスが1つ未満の場合にクリティカルステータスを報告できます。

NRPE設定をリロードします。

sudo service nagios-nrpe-server reload
サービス定義の作成(サーバー上)

Nagiosサーバー* monitoring *で、NRPEを使用して `+ check_mysqld +`コマンドを実行する新しいサービスを定義する必要があります。

データベースホストを定義する定義ファイルを開きます。 この例では、「db1.cfg」という名前です。

sudo vi /usr/local/nagios/etc/servers/.cfg

ファイルの最後に、このサービス定義を追加します( `+ host_name +`値がホスト定義の名前と一致することを確認してください):

db1.cfg-check_mysql

define service {
       use                             generic-service
       host_name
       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/.cfg

ファイルの最後に、このサービス定義を追加します( `+ host_name +`値がホスト定義の名前と一致することを確認してください):

app1.cfgおよびapp2.cfg-check_apache2

define service {
       use                             generic-service
       host_name
       service_description             Check Apache2 Process
       check_command                   check_nrpe!check_apache2
}

保存して終了。 これにより、NRPEを使用してアプリケーションサーバーでcheck_apache2コマンドを実行するように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/.cfg

ファイルの最後に、このサービス定義を追加します( `+ host_name +`値がホスト定義の名前と一致することを確認してください):

lb1.cfg-check_haproxy

define service {
       use                             generic-service
       host_name
       service_description             Check HAProxy Process
       check_command                   check_nrpe!check_haproxy
}

これにより、NRPEを使用してロードバランサーサーバーでcheck_haproxyコマンドを実行するようにNagiosが構成されます。

この変更を有効にするには、Nagiosをリロードする必要があります。

Nagios設定をリロードする

Nagiosをリロードして、すべての変更を有効にするには、次のコマンドを入力します。

sudo service nagios reload

構成に構文エラーがない場合は、設定する必要があります。

Nagiosサービスを確認する

次に進む前に、Nagiosが定義したすべてのホストとサービスを監視していることを確認する必要があります。 パブリックホスト名またはIPアドレスを介してNagiosサーバーにアクセスします。 + http:// monitoring。/ nagios / +。 Nagiosサーバーのインストール中に設定したログインを入力します。

サイドメニューで、*サービス*リンクをクリックします。 次のようなページに移動する必要があります。

画像:https://assets.digitalocean.com/articles/architecture/production/lamp/services.png [Nagios Services]

理想的には、各ホストが表示され、すべてのサービスが「OK」ステータスになります。 スクリーンショットでは、最新のステータスチェック中に電源がオフになったため、* app2 *サーバーに問題があることがわかります。 サービスのいずれかが「OK」ではない場合、それらを修正するか、サービスが正常であれば、Nagiosの設定にエラーがないか確認します。

その他の考慮事項

ほとんどの場合、監視サーバーの復旧計画を作成し、Nagios構成ファイル( + / usr / local / nagios / etc +)をバックアップします。 バックアップを設定したら、追加のサービスと電子メール通知の監視を構成する必要があります。

結論

これで、監視ダッシュボードを一simplyするだけで、サーバーとサービスのステータスを確認できるようになります。 障害が発生した場合、監視システムは、どのサーバーとサービスが適切に実行されていないかを特定するのに役立ち、アプリケーションのダウンタイムを短縮するのに役立ちます。

次のチュートリアルに進んで、本番サーバーのセットアップ用に集中ログの設定を開始してください。 Webアプリケーション-集中ログ]。