Ubuntu 18.04でNagios 4をインストールしてサーバーを監視する方法

著者は、Write for DOnationsプログラムの一部として寄付を受け取るためにthe Open Source Initiativeを選択しました。

前書き

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

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

前提条件

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

  • sudo権限を持つ非rootユーザーとufwで構成されたファイアウォールを含む、Initial Server Setup Guide for Ubuntu 18.04に従ってセットアップされた2つのUbuntu18.04サーバー。 1つのサーバーに、Nagiosをインストールします。このチュートリアルでは、これをNagios serverと呼びます。 2番目のサーバーを監視します。この2番目のサーバーはsecond Ubuntu serverと呼ばれます。

  • Nagiosサーバーを実行するサーバーには、ApacheとPHPがインストールされている必要があります。 this guideに従って、サーバーの1つでそれらを構成します。 そのチュートリアルのMySQLステップをスキップできます。

通常、NagiosはハードウェアファイアウォールまたはVPNの背後で実行されます。 Nagiosサーバーがパブリックインターネットに公開されている場合は、TLS / SSL証明書をインストールして、Nagios Webインターフェイスを保護する必要があります。 これはオプションですが、strongly encouragedです。 Let’s Encrypt on Ubuntu 18.04ガイドに従って、無料のTLS / SSL証明書を取得できます。

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

[[step-1 -—- installing-nagios-4]] ==ステップ1— Nagios4のインストール

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

Apacheを実行するサーバーにログインします。 このチュートリアルでは、これをNagios serverと呼びます。

ssh sammy@your_nagios_server_ip

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

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

sudo apt update

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

sudo apt install autoconf gcc make unzip libgd-dev libmcrypt-dev libssl-dev dc snmp libnet-snmp-perl gettext

前提条件をインストールしたら、Nagios自体をインストールできます。 Nagios Coreの最新の安定版リリースのソースコードをダウンロードします。 Nagios downloads pageに移動し、フォームの下にあるSkip to downloadリンクをクリックします。 Nagiosサーバーにダウンロードできるように、最新の安定版リリースのリンクアドレスをコピーします。

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

cd ~
curl -L -O https://github.com/NagiosEnterprises/nagioscore/archive/nagios-4.4.4.tar.gz

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

tar zxf nagios-4.4.4.tar.gz

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

cd nagioscore-nagios-4.4.4

Nagiosをビルドする前に、configureスクリプトを実行し、Apacheconfigsディレクトリを指定します。

./configure --with-httpd-conf=/etc/apache2/sites-enabled

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

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

Output*** Configuration summary for nagios 4.4.4 2019-07-29 ***:

 General Options:
 -------------------------
        Nagios executable:  nagios
        Nagios user/group:  nagios,nagios
       Command user/group:  nagios,nagios
             Event Broker:  yes
        Install ${prefix}:  /usr/local/nagios
    Install ${includedir}:  /usr/local/nagios/include/nagios
                Lock file:  /run/nagios.lock
   Check result directory:  /usr/local/nagios/var/spool/checkresults
           Init directory:  /lib/systemd/system
  Apache conf.d directory:  /etc/apache2/sites-enabled
             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をコンパイルします。

make all

次に、nagiosユーザーとnagiosグループを作成します。 Nagiosプロセスを実行するために使用されます。

sudo make install-groups-users

次に、次のmakeコマンドを実行して、Nagiosバイナリファイル、サービスファイル、およびそのサンプル構成ファイルをインストールします。

sudo make install
sudo make install-daemoninit
sudo make install-commandmode
sudo make install-config

Apacheを使用してNagiosのウェブインターフェースを提供するので、次を実行してApache構成ファイルをインストールし、その設定を構成します。

sudo make install-webconf

a2enmodコマンドを使用して、Apacherewriteおよびcgiモジュールを有効にします。

sudo a2enmod rewrite
sudo a2enmod cgi

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

sudo usermod -a -G nagios www-data

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

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

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

[.warning]#Warning:nagiosadmin以外の名前でユーザーを作成する場合は、/usr/local/nagios/etc/cgi.cfgを編集し、すべてのnagiosadmin参照をユーザーに変更する必要があります。作成されました。

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

sudo systemctl restart apache2

これでNagiosがインストールされました。 ただし、これが機能するには、Nagiosプラグインをインストールする必要があります。これについては、次のステップで説明します。

[[step-2 -—- installing-the-nagios-plugins]] ==ステップ2—Nagiosプラグインのインストール

Nagiosが適切に動作するにはプラグインが必要です。 公式のNagiosプラグインパッケージには、アップタイム、ディスク使用量、スワップ使用量、NTPなどの基本的なサービスを監視できるプラグインが50個以上含まれています。

プラグインバンドルをインストールしましょう。

Nagiosプラグインの最新バージョンはofficial siteにあります。

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

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

NRPEアーカイブを抽出し、抽出したディレクトリに移動します。

tar zxf nagios-plugins-<^>2.2.1<^.tar.gz
cd nagios-plugins-2.2.1

次に、インストールを構成します。

./configure

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

make
sudo make install

これでプラグインがインストールされましたが、リモートサーバーを監視するためにもう1つのプラグインが必要です。 次にインストールしましょう。

[[step-3 -—- installing-the-check_nrpe-plugin]] ==ステップ3—check_nrpeプラグインのインストール

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

  • Nagiosサーバーが使用するcheck_nrpeプラグイン。

  • NRPEデーモン。リモートホストで実行され、Nagiosサーバーにデータを送信します。

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

NRPEの最新の安定版リリースのダウンロードURLをGitHub pageで見つけます。

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

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

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

tar zxf nrpe-3.2.1.tar.gz

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

cd nrpe-3.2.1

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

./configure

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

make check_nrpe
sudo make install-plugin

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

[[step-4 -—- configuring-nagios]] ==ステップ4—Nagiosの構成

それでは、いくつかの構成ファイルの編集を含む、Nagiosの初期構成を実行しましょう。 Nagiosサーバーでこのセクションを実行する必要があるのは一度だけです。

お好みのテキストエディターでメインのNagios構成ファイルを開きます。 ここでは、nanoを使用します。

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

CTRL+XYENTERnanoを使用している場合)の順に押して、nagios.cfgを保存して閉じます。

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

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

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

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

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$
}

これにより、名前が定義され、プラグインを実行するためのコマンドラインオプションが指定されます。

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

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

sudo systemctl start nagios

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

[[step-5 -—- accessing-the-nagios-web-interface]] ==ステップ5— NagiosWebインターフェイスへのアクセス

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

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

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

Nagios Hosts Page

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

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

[[step-6 -—- installing-nagios-plugins-and-nrpe-daemon-on-a-host]] ==ステップ6—ホストへのNagiosプラグインとNRPEデーモンのインストール

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

2番目のサーバーにログインします。これをsecond Ubuntu serverと呼びます。

ssh sammy@your_monitored_server_ip

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

sudo useradd nagios

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

sudo apt update
sudo apt install autoconf gcc libmcrypt-dev make libssl-dev wget dc build-essential gettext

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

downloadsページからNagiosプラグインの最新リリースを見つけます。

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

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

Nagiosプラグインアーカイブを抽出し、抽出したディレクトリに変更します。

tar zxf nagios-plugins-2.2.1.tar.gz
cd nagios-plugins-2.2.1

Nagiosプラグインを構築する前に、次のコマンドでそれらを構成します。

./configure

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

make

次に、次を実行してインストールします。

sudo make install

次に、NRPEデーモンをインストールします。 手順3で行ったように、GitHub pageでNRPEの最新の安定版リリースのダウンロードURLを見つけます。 NRPEの最新の安定版リリースを、監視対象サーバーのホームディレクトリにcurlでダウンロードします。

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

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

tar zxf nrpe-3.2.1.tar.gz

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

cd nrpe-3.2.1

NRPEを構成します。

./configure

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

make nrpe
sudo make install-daemon
sudo make install-config
sudo make install-init

それでは、NRPE構成ファイルを更新し、Nagiosが監視できる基本的なチェックを追加しましょう。

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

df -h /

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

OutputFilesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  1.4G   23G   6% /

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

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

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

  • server_address:監視対象サーバーのプライベートIPアドレスに設定します。

  • allowed_hosts:NagiosサーバーのプライベートIPアドレスをコンマ区切りのリストに追加します。

  • command[check_hda1]/dev/hda1をルートファイルシステムが呼び出されるものに変更します。

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

/usr/local/nagios/etc/nrpe.cfg

...
server_address=second_ubuntu_server_private_ip
...
allowed_hosts=127.0.0.1,::1,your_nagios_server_private_ip
...
command[check_vda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/vda1
...

保存してエディタを終了します。 これで、NRPEを開始できます。

sudo systemctl start nrpe.service

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

sudo systemctl status nrpe.service

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

Output...
Aug 01 06:28:31 client systemd[1]: Started Nagios Remote Plugin Executor.
Aug 01 06:28:31 client nrpe[8021]: Starting up daemon
Aug 01 06:28:31 client nrpe[8021]: Server listening on 0.0.0.0 port 5666.
Aug 01 06:28:31 client nrpe[8021]: Server listening on :: port 5666.
Aug 01 06:28:31 client nrpe[8021]: Listening for connections on port 5666
Aug 01 06:28:31 client nrpe[8021]: Allowing connections from: 127.0.0.1,::1,165.22.212.38

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

sudo ufw allow 5666/tcp

UFWの詳細については、How To Set Up a Firewall with UFW on Ubuntu 18.04を参照してください。

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

/usr/local/nagios/libexec/check_nrpe -H second_ubuntu_server_ip

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

OutputNRPE v3.2.1

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

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

[[step-7 -—- monitoring-hosts-with-nagios]] ==ステップ7—Nagiosを使用したホストの監視

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

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

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はホストが稼働中か停止中かを通知するだけです。 監視するサービスをいくつか追加しましょう。

まず、このブロックを追加して負荷平均を監視します。

/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             Load average
        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サービスを再起動して、変更を有効にします。

sudo systemctl restart nagios

数分後、Nagiosは新しいホストを確認し、Nagiosのウェブインターフェースに表示されます。 左側のナビゲーションバーのServicesリンクをクリックして、監視対象のすべてのホストとサービスを表示します。

Nagios Services Page

結論

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

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

Related