序章

本番アプリケーションサーバーのセットアップ、復旧計画、およびバックアップが完了したので、サーバーとサービスの状態の認識を向上させるための監視の追加について見ていきましょう。 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構成ファイルを作成します。

まず、編集用のホスト構成ファイルを開きます

  1. 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」を開きます。

  1. 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構成をリロードします。

  1. sudo service nagios-nrpe-server reload

サービス定義の作成(サーバー上)

Nagiosサーバーmonitoringで、NRPEを使用して実行する新しいサービスを定義する必要があります check_mysqld 指図。

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

  1. 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」を開きます。

  1. 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構成をリロードします。

  1. sudo service nagios-nrpe-server reload

追加のアプリケーションサーバーでこれを繰り返すようにしてください。

サービス定義の作成(サーバー上)

Nagiosサーバーmonitoringで、NRPEを使用して実行する新しいサービスを定義する必要があります check_apache2 指図。

アプリケーションホストを定義するを定義するファイルを開きます。 この例では、これらは「app1.cfg」および「app2.cfg」と呼ばれます。

  1. 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」を開きます。

  1. 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構成をリロードします。

  1. sudo service nagios-nrpe-server reload

追加のアプリケーションサーバーでこれを繰り返すようにしてください。

サービス定義の作成(サーバー上)

Nagiosサーバーmonitoringで、NRPEを使用して実行する新しいサービスを定義する必要があります check_haproxy 指図。

データベースホストを定義するを定義するファイルを開きます。 この例では、「lb1.cfg」と呼ばれています。

  1. 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アプリケーション—集中ログ