序章

Nagios は、人気のあるオープンソースの監視システムです。 サーバーのインベントリを保持して監視するため、重要なサービスが稼働していることがわかります。 Nagiosのような監視システムを使用することは、稼働時間、CPU使用率、またはディスクスペースを監視することで、問題が発生する前、またはユーザーから電話がかかる前に問題を回避できるため、あらゆる実稼働環境に不可欠なツールです。

このチュートリアルでは、Nagios 4をインストールして構成し、NagiosのWebインターフェイスを介してホストリソースを監視できるようにします。 また、Nagios Remote Plugin Executor(NRPE)をセットアップします。これは、リモートホスト上でエージェントとして実行されるため、それらのリソースを監視できます。

前提条件

このチュートリアルを完了するには、次のものが必要です。

  • プライベートネットワークが構成された2台のUbuntu16.04サーバー。Ubuntu16.04初期サーバーセットアップガイドに従ってセットアップされます。これには、sudo非rootユーザーとファイアウォールが含まれます。 最初のサーバーを使用してNagiosを実行し、2番目のサーバーはNagiosが監視できるリモートホストとして構成されます。 Nagiosを実行するサーバーには、ApacheとPHPもインストールする必要があります。これは、Ubuntu 16.04にLinux、Apache、MySQL、PHP(LAMPスタック)をインストールする方法に従って実行できます。 そのチュートリアルのMySQLの手順はスキップできます。
  • 通常、NagiosはハードウェアファイアウォールまたはVPNの背後で実行されます。 Nagiosサーバーがパブリックインターネットに公開されている場合は、NagiosWebインターフェイスをTLSで保護する必要があります。 これを行うには、次のいずれかを実行する必要があります。 サーバーを指すようにドメイン名を構成します。 ドメインをDigitalOceanドロップレットにポイントする方法については、DigitalOceanチュートリアルでホスト名を設定する方法を学び、次にUbuntu16.04でLet’sEncryptを使用してApacheを保護する方法に従って、HTTPSサポートを設定する方法を学びます。自己署名証明書でApacheを保護します。 Ubuntu16.04でApacheの自己署名SSL証明書を作成する方法に従ってください

このチュートリアルでは、サーバーでプライベートネットワークが有効になっていることを前提としているため、監視はパブリックネットワークではなくプライベートネットワークで行われます。 プライベートネットワークを有効にしていない場合でも、プライベートIPアドレスへのすべての参照をパブリックIPアドレスに置き換えることで、このチュートリアルに従うことができます。

ステップ1—Nagios4をインストールする

Nagiosをインストールする方法は複数ありますが、最新の機能、セキュリティアップデート、バグ修正を確実に入手できるように、ソースからNagiosとそのコンポーネントをインストールします。

Apacheを実行しているサーバーにログインします。 これをNagiosサーバーと呼びます。

  1. ssh sammy@your_nagios_server_ip

nagiosユーザーとnagcmdグループを作成します。 これらを使用して、Nagiosプロセスを実行します。

  1. sudo useradd nagios
  2. sudo groupadd nagcmd

次に、ユーザーをグループに追加します。

  1. sudo usermod -a -G nagcmd nagios

Nagiosとそのコンポーネントをソースからビルドしているため、ビルドを完了するには、コンパイラ、開発ヘッダー、OpenSSLなどのいくつかの開発ライブラリをインストールする必要があります。

パッケージリストを更新して、前提条件の最新バージョンをダウンロードできるようにします。

  1. sudo apt-get update

次に、必要なパッケージをインストールします。

  1. sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev unzip

前提条件がインストールされたら、Nagios自体をインストールできます。 NagiosCoreの最新の安定したリリースのソースコードをダウンロードします。 Nagiosダウンロードページに移動し、フォームの下にあるスキップしてダウンロードリンクをクリックします。 最新の安定版リリースのリンクアドレスをコピーして、Nagiosサーバーにダウンロードできるようにします。

curlコマンドを使用して、リリースをホームディレクトリにダウンロードします。

  1. cd ~
  2. curl -L -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.4.tar.gz

Nagiosアーカイブを抽出します。

  1. tar zxf nagios-*.tar.gz

次に、抽出したディレクトリに移動します。

  1. cd nagios-*

Nagiosをビルドする前に、configureスクリプトを実行して、Nagiosで使用するユーザーとグループを指定します。 作成したnagiosユーザーとnagcmdグループを使用します。

  1. ./configure --with-nagios-group=nagios --with-command-group=nagcmd

NagiosがPostfixを使用してメールを送信するようにするには、 Postfix をインストールし、--with-mail=/usr/sbin/sendmailconfigureコマンドに追加してそれを使用するようにNagiosを構成する必要があります。 このチュートリアルではPostfixについては説明しませんが、後でPostfixとNagiosを使用する場合は、Postfixサポートを使用するためにNagiosを再構成して再インストールする必要があります。

configureコマンドから次の出力が表示されます。

Output
*** Configuration summary for nagios 4.3.4 2017-08-24 ***: General Options: ------------------------- Nagios executable: nagios Nagios user/group: nagios,nagios Command user/group: nagios,nagcmd Event Broker: yes Install ${prefix}: /usr/local/nagios Install ${includedir}: /usr/local/nagios/include/nagios Lock file: /run/nagios.lock Check result directory: ${prefix}/var/spool/checkresults Init directory: /etc/init.d Apache conf.d directory: /etc/apache2/sites-available Mail program: /bin/mail Host OS: linux-gnu IOBroker Method: epoll Web Interface Options: ------------------------ HTML URL: http://localhost/nagios/ CGI URL: http://localhost/nagios/cgi-bin/ Traceroute (used by WAP): Review the options above for accuracy. If they look okay, type 'make all' to compile the main program and CGIs.

次に、次のコマンドでNagiosをコンパイルします。

  1. make all

次に、これらのmakeコマンドを実行して、Nagios、そのinitスクリプト、およびそのデフォルトの構成ファイルをインストールします。

  1. sudo make install
  2. sudo make install-commandmode
  3. sudo make install-init
  4. sudo make install-config

Apacheを使用してNagiosのWebインターフェイスを提供するため、サンプルのApache構成ファイルを/etc/apache2/sites-availableフォルダーにコピーします。

  1. sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf

Webインターフェイスを介してNagiosに外部コマンドを発行するには、Webサーバーユーザーwww-datanagcmdグループに追加します。

  1. sudo usermod -G nagcmd www-data

Nagiosがインストールされました。 Nagiosがさまざまなホストからデータを収集できるようにするプラグインをインストールしましょう。

ステップ2—check_nrpeプラグインをインストールする

Nagiosは、Nagios Remote Plugin Executor(NRPE)を使用してリモートホストを監視します。 それは2つの部分で構成されています:

  • Nagiosサーバーで使用されるcheck_nrpeプラグイン。
  • リモートホスト上で実行され、Nagiosサーバーにデータを送信するNRPEデーモン。

Nagiosサーバーにcheck_nrpeプラグインをインストールしましょう。

NagiosExchangeサイトでNRPEの最新の安定したリリースのダウンロードURLを見つけてください。

curlを使用してホームディレクトリにダウンロードします。

  1. cd ~
  2. curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

NRPEアーカイブを抽出します。

  1. tar zxf nrpe-*.tar.gz

次に、抽出したディレクトリに移動します。

  1. cd nrpe-*

check_nrpeプラグインを構成します。

  1. ./configure

次に、check_nrpeをビルドしてインストールします。

  1. make check_nrpe
  2. sudo make install-plugin

次に、Nagiosサーバーを構成しましょう。

ステップ3—Nagiosを設定する

次に、Nagiosの初期構成を実行します。これには、いくつかの構成ファイルの編集と、NagiosWebインターフェースを提供するようにApacheを構成することが含まれます。 このセクションを実行する必要があるのは、Nagiosサーバーで1回だけです。

テキストエディタでメインのNagios設定ファイルを開きます。

  1. sudo nano /usr/local/nagios/etc/nagios.cfg

ファイルで次の行を見つけます。

/usr/local/nagios/etc/nagios.cfg
...
#cfg_dir=/usr/local/nagios/etc/servers
...

行の先頭から#文字を削除して、この行のコメントを解除します。

/usr/local/nagios/etc/nagios.cfg
cfg_dir=/usr/local/nagios/etc/servers

ファイルを保存して、エディターを終了します。

次に、監視する各サーバーの構成ファイルを格納するディレクトリを作成します。

  1. sudo mkdir /usr/local/nagios/etc/servers

テキストエディタでNagiosの連絡先設定を開きます。

  1. sudo nano /usr/local/nagios/etc/objects/contacts.cfg

emailディレクティブを見つけて、その値を自分の電子メールアドレスに置き換えます。

/usr/local/nagios/etc/objects/contacts.cfg
...
define contact{
        contact_name                    nagiosadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of user
        email                           your_email@your_domain.com        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
...

エディターを保存して終了します。

次に、Nagios構成に新しいコマンドを追加して、Nagiosサービス定義でcheck_nrpeコマンドを使用できるようにします。 エディターでファイル/usr/local/nagios/etc/objects/commands.cfgを開きます。

  1. sudo nano /usr/local/nagios/etc/objects/commands.cfg

ファイルの最後に以下を追加して、check_nrpeという新しいコマンドを定義します。

/usr/local/nagios/etc/objects/commands.cfg
...
define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

これは名前を定義し、プラグインを実行するためのコマンドラインオプションを指定します。 このコマンドはステップ5で使用します。

エディターを保存して終了します。

次に、Nagiosユーザーインターフェイスを提供するようにApacheを構成します。 a2enmodコマンドを使用して、Apacherewriteおよびcgiモジュールを有効にします。

  1. sudo a2enmod rewrite
  2. sudo a2enmod cgi

htpasswdコマンドを使用して、NagiosWebインターフェイスにアクセスできるnagiosadminという管理ユーザーを作成します。

sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

プロンプトでパスワードを入力します。 Nagios Webインターフェースにアクセスするために必要になるため、このパスワードを覚えておいてください。

注: nagiosadmin 以外の名前のユーザーを作成する場合は、/usr/local/nagios/etc/cgi.cfgを編集し、すべてのnagiosadmin参照を次のように変更する必要があります。作成したユーザー。

次に、nagios.confsites-enabledディレクトリへのシンボリックリンクを作成します。 これにより、Nagios仮想ホストが有効になります。

  1. sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/

次に、NagiosのApache構成ファイルを開きます。

  1. sudo nano /etc/apache2/sites-available/nagios.conf

HTTPSを介してページを提供するようにApacheを構成した場合は、次の行の両方のオカレンスを見つけます。

/etc/apache2/sites-available/nagios.conf
#  SSLRequireSSL

#記号を削除して、両方のオカレンスのコメントを解除します。

Nagios WebインターフェイスにアクセスできるIPアドレスを制限して、特定のIPアドレスのみがインターフェイスにアクセスできるようにする場合は、次の2行を見つけます。

/etc/apache2/sites-available/nagios.conf
Order allow,deny
Allow from all

それらの前に#記号を追加して、コメントアウトします。

/etc/apache2/sites-available/nagios.conf
# Order allow,deny
# Allow from all

次に、次の行を見つけます。

/etc/apache2/sites-available/nagios.conf
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1

#記号を削除してコメントを解除し、Allow from行に許可するIPアドレスまたは範囲(スペース区切り)を追加します。

/etc/apache2/sites-available/nagios.conf
Order deny,allow
Deny from all
Allow from 127.0.0.1 your_ip_address

これらの行は構成ファイルに2回表示されるため、両方の出現箇所を変更してください。 次に、エディターを保存して終了します。

Apacheを再起動して、新しいApache構成をロードします。

  1. sudo systemctl restart apache2

Apacheの構成が整ったら、Nagiosのサービスをセットアップできます。 Nagiosはサービスを管理するためのSystemdユニットファイルを提供していないので、作成しましょう。 nagios.serviceファイルを作成し、エディターで開きます。

  1. sudo nano /etc/systemd/system/nagios.service

次の定義をファイルに入力します。 この定義は、Nagiosを起動するタイミングと、SystemdがNagiosアプリケーションを見つけることができる場所を指定します。 Systemdユニットファイルの詳細については、チュートリアルSystemdユニットとユニットファイルについてをご覧ください。

/etc/systemd/system/nagios.service
[Unit]
Description=Nagios
BindTo=network.target

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=nagios
Group=nagios
ExecStart=/usr/local/nagios/bin/nagios /usr/local/nagios/etc/nagios.cfg

ファイルを保存して、エディターを終了します。

次に、Nagiosを起動し、サーバーの起動時に起動できるようにします。

  1. sudo systemctl enable /etc/systemd/system/nagios.service
  2. sudo systemctl start nagios

Nagiosが実行されているので、そのWebインターフェイスにログインしてみましょう。

ステップ4—NagiosWebインターフェースへのアクセス

お気に入りのWebブラウザーを開き、http://nagios_server_public_ip/nagiosにアクセスしてNagiosサーバーに移動します。

表示されるポップアップにWebインターフェイスのログインクレデンシャルを入力します。 ユーザー名にはnagiosadminを使用し、そのユーザー用に作成したパスワードを使用します。

認証後、デフォルトのNagiosホームページが表示されます。 左側のナビゲーションバーにあるHostsリンクをクリックして、Nagiosが監視しているホストを確認します。

Nagios Hosts Page

ご覧のとおり、Nagiosは「localhost」またはそれ自体のみを監視しています。

Nagiosで他のサーバーを監視しましょう。

ステップ5—ホストへのNPREのインストール

Nagiosが監視できるように、新しいホストを追加しましょう。 Nagios Remote Plugin Executor(NRPE)をリモートホストにインストールし、いくつかのプラグインをインストールしてから、このホストを監視するようにNagiosサーバーを構成します。

監視対象サーバーと呼ばれる2番目のサーバーにログインします。

  1. ssh sammy@your_monitored_server_ip

まず、NRPEエージェントを実行する「nagios」ユーザーを作成します。

  1. sudo useradd nagios

ソースからNRPEをインストールします。つまり、ステップ1でNagiosサーバーにインストールしたものと同じ開発ライブラリが必要になります。 パッケージソースを更新し、NRPEの前提条件をインストールします。

  1. sudo apt-get update
  2. sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev unzip

NRPEでは、Nagiosプラグインがリモートホストにインストールされている必要があります。 このパッケージをソースからインストールしましょう。

Nagiosプラグインのダウンロードページから、Nagiosプラグインの最新リリースを見つけてください。 最新バージョンのリンクアドレスをコピーし、リンクアドレスをコピーして、Nagiosサーバーにダウンロードできるようにします。

curlを使用して、Nagiosプラグインをホームディレクトリにダウンロードします。

  1. cd ~
  2. curl -L -O http://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

Nagiosプラグインアーカイブを抽出します。

  1. tar zxf nagios-plugins-*.tar.gz

抽出したディレクトリに移動します。

  1. cd nagios-plugins-*

Nagiosプラグインを構築する前に、 nagios ユーザーとグループを使用するようにプラグインを構成し、OpenSSLサポートを構成します。

  1. ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl

次に、プラグインをコンパイルします。

  1. make

次に、それらをインストールします。

  1. sudo make install

次に、NRPEをインストールします。 手順1と同じように、NagaosExchangeサイトでNRPEの最新の安定したリリースのダウンロードURLを見つけます。 curlを使用して、NRPEの最新の安定したリリースを監視対象サーバーのホームディレクトリにダウンロードします。

  1. cd ~
  2. curl -L -O https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-3.2.1/nrpe-3.2.1.tar.gz

次のコマンドを使用してNRPEアーカイブを抽出します。

  1. tar zxf nrpe-*.tar.gz

次に、抽出したディレクトリに移動します。

  1. cd nrpe-*

Nagiosユーザーとグループを指定してNRPEを構成し、SSLサポートが必要であることを伝えます。

  1. ./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu

次に、次のコマンドを使用してNRPEとその起動スクリプトをビルドしてインストールします。

  1. make all
  2. sudo make install
  3. sudo make install-config
  4. sudo make install-init

次に、NRPE構成ファイルを更新しましょう。

  1. sudo nano /usr/local/nagios/etc/nrpe.cfg

allowed_hostsディレクティブを見つけて、NagiosサーバーのプライベートIPアドレスをコンマ区切りのリストに追加します。

/usr/local/nagios/etc/nrpe.cfg
  1. allowed_hosts=127.0.0.1,::1,your_nagios_server_private_ip

これにより、プライベートIPアドレスを介してNagiosサーバーからのリクエストを受け入れるようにNRPEが構成されます。

編集者を保存して終了します。 これで、NRPEを開始できます。

  1. sudo systemctl start nrpe.service

ステータスを確認して、サービスが実行されていることを確認します。

  1. sudo systemctl status nrpe.service

次の出力が表示されます。

Output
... Oct 16 07:10:00 nagios systemd[1]: Started Nagios Remote Plugin Executor. Oct 16 07:10:00 nagios nrpe[14653]: Starting up daemon Oct 16 07:10:00 nagios nrpe[14653]: Server listening on 0.0.0.0 port 5666. Oct 16 07:10:00 nagios nrpe[14653]: Server listening on :: port 5666. Oct 16 07:10:00 nagios nrpe[14653]: Listening for connections on port 5666 Oct 16 07:10:00 nagios nrpe[14653]: Allowing connections from: 127.0.0.1,::1,207.154.249.232

次に、ファイアウォールを介したポート5666へのアクセスを許可します。 UFWを使用している場合は、ポート5666へのTCP接続を許可するように設定します。

  1. sudo ufw allow 5666/tcp

UFWの詳細については、 Ubuntu16.04でUFWを使用してファイアウォールを設定する方法をご覧ください。

これで、リモートNRPEサーバーとの通信を確認できます。 Nagiosサーバーで次のコマンドを実行します。

  1. /usr/local/nagios/libexec/check_nrpe -H remote_host_ip

次の出力が表示されます。

Output
NRPE v3.2.1

次に、Nagiosが監視できるいくつかの基本的なチェックを構成しましょう。

まず、このサーバーのディスク使用量を監視しましょう。 df -hコマンドを使用して、ルートファイルシステムを探します。 このファイルシステム名は、NRPE構成で使用します。

  1. df -h /

次のような出力が表示されます。

Output
Filesystem Size Used Avail Use% Mounted on udev 490M 0 490M 0% /dev tmpfs 100M 3.1M 97M 4% /run /dev/vda1 29G 1.4G 28G 5% / tmpfs 497M 0 497M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/vda15 105M 3.4M 102M 4% /boot/efi tmpfs 100M 0 100M 0% /run/user/0

/に関連付けられているファイルシステムを見つけます。 ドロップレットでは、必要なファイルシステムはおそらく/dev/vda1です。

次に、エディターで/usr/local/nagios/etc/nrpe.cfgファイルを開きます。

  1. sudo nano /usr/local/nagios/etc/nrpe.cfg

NRPE構成ファイルは非常に長く、コメントでいっぱいです。 見つけて変更する必要がある行がいくつかあります。

  • server_address :監視対象サーバーのプライベートIPアドレスに設定します
  • コマンド[check_hda1]/dev/hda1をルートファイルシステムと呼ばれるものに変更します

これらの設定を見つけて、適切に変更します。

/usr/local/nagios/etc/nrpe.cfg
...
server_address=monitored_server_private_ip
...
command[check_vda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda1
...

エディターを保存して終了します。

NRPEサービスを再起動して、変更を有効にします。

  1. sudo systemctl restart nrpe.service

監視する追加のサーバーごとに、このセクションの手順を繰り返します。

監視するホストへのNRPEのインストールと構成が完了したら、監視を開始する前に、これらのホストをNagiosサーバー構成に追加する必要があります。 次にそれをしましょう。

ステップ6–Nagiosでホストを監視する

Nagiosでホストを監視するには、監視する対象を指定する各ホストの構成ファイルを追加します。 その後、NagiosWebインターフェイスでこれらのホストを表示できます。

Nagiosサーバーで、/usr/local/nagios/etc/servers/で監視するリモートホストごとに新しい構成ファイルを作成します。 強調表示された単語monitored_server_host_nameをホストの名前に置き換えます。

  1. sudo nano /usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg

次のホスト定義を追加し、host_name値をリモートホスト名に、alias値をホストの説明に、address値をのプライベートIPアドレスに置き換えます。リモートホスト:

/usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg
define host {
        use                             linux-server
        host_name                       your_monitored_server_host_name
        alias                           My client server
        address                         your_monitored_server_private_ip
        max_check_attempts              5
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
}

この構成では、Nagiosはホストが稼働しているか停止しているかのみを通知します。 監視するサービスをいくつか追加しましょう。

まず、次のブロックを追加してCPU使用率を監視します。

/usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg
define service {
        use                             generic-service
        host_name                       your_monitored_server_host_name
        service_description             CPU load
        check_command                   check_nrpe!check_load
}

use generic-serviceディレクティブは、Nagiosによって事前定義されたgeneric-serviceと呼ばれるサービステンプレートの値を継承するようにNagiosに指示します。

次に、このブロックを追加して、ディスク使用量を監視します。

/usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg
define service {
        use                             generic-service
        host_name                       your_monitored_server_host_name
        service_description             /dev/vda1 free space
        check_command                   check_nrpe!check_vda1
}

保存して終了します。 Nagiosサービスを再起動して、変更を有効にします。

  1. sudo systemctl restart nagios

数分後、Nagiosは新しいホストをチェックし、NagiosWebインターフェースにそれらが表示されます。 左側のナビゲーションバーにあるサービスリンクをクリックして、監視対象のすべてのホストとサービスを表示します。

Nagios Services Page

結論

サーバーにNagiosをインストールし、少なくとも1台のリモートマシンのCPUとディスクの使用状況を監視するように構成しました。

ホストとそのサービスの一部を監視しているので、Nagiosを使用してミッションクリティカルなサービスを監視し始めることができます。 Nagiosを使用して、重要なイベントの通知を設定できます。 たとえば、ディスク使用率が警告またはクリティカルのしきい値に達したときに電子メールを受信したり、メインのWebサイトがダウンしたときに通知を受信したりできます。 このようにして、状況を迅速に、または問題が発生する前に解決することができます。