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

前書き

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

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

前提条件

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

  • https://www.digitalocean.com/community/tutorials/how-to-create-your-first-digitalocean-droplet#step-6-%E2%80%94-selecting-additional-options [プライベートネットワーキング]を構成し、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 [Ubuntu 16.04初期サーバーセットアップガイド]に従って設定します。sudonon -rootユーザーとファイアウォール。 最初のサーバーを使用してNagiosを実行し、2番目のサーバーをNagiosが監視できるリモートホストとして構成します。

  • Nagiosを実行するサーバーには、ApacheとPHPもインストールする必要があります。これはhttps://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stackに従って実行できます-on-ubuntu-16-04 [Ubuntu 16.04にLinux、Apache、MySQL、PHP(LAMPスタック)をインストールする方法]。 そのチュートリアルのMySQLステップをスキップできます。

  • 通常、NagiosはハードウェアファイアウォールまたはVPNの背後で実行されます。 Nagiosサーバーがパブリックインターネットに公開されている場合は、TLSでNagios Webインターフェイスを保護する必要があります。 これを行うには、次のいずれかを実行する必要があります。

  • サーバーを指すようにドメイン名を構成します。 https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [設定方法]に従って、ドメインをDigitalOcean Dropletsにポイントする方法を学習できます。ホスト名とDigitalOcean]チュートリアル、およびhttps://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-16-04[How To Ubuntu 16.04でLet’s Encryptを使用してApacheを保護し、HTTPSサポートをセットアップします

  • https://www.digitalocean.com/community/tutorials/how-to-create-a-self-signed-ssl-certificate-for-apache-in-ubuntu-16-に従って、自己署名証明書でApacheを保護します04 [Ubuntu 16.04でApacheの自己署名SSL証明書を作成する方法]

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

ステップ1-Nagios 4のインストール

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

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

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

sudo useradd
sudo groupadd

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

sudo usermod -a -G

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

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

sudo apt-get update

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

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

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

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

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

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

tar zxf nagios-*.tar.gz

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

cd nagios-*

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

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

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

Output*** Configuration summary for nagios  ***:

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をコンパイルします。

make all

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

sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config

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

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

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

sudo usermod -G nagcmd

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

ステップ2-check_nrpeプラグインのインストール

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

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

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

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

Nagios ExchangeサイトでNRPEの最新の安定したリリースのダウンロードURLを見つけます。 。

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

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

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

tar zxf nrpe-*.tar.gz

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

cd nrpe-*

`+ check_nrpe +`プラグインを設定します:

./configure

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

make check_nrpe
sudo make install-plugin

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

ステップ3-Nagiosの構成

次に、Nagiosの初期構成を実行します。これには、構成ファイルの編集と、Nagios Webインターフェースを提供するためのApacheの構成が含まれます。 Nagiosサーバーでこのセクションを実行する必要があるのは一度だけです。

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

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

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

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

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
                                          ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
...

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

次に、Nagiosサービス定義で `+ check_nrpe `コマンドを使用できるようにする新しいコマンドをNagios設定に追加します。 エディターでファイル ` / 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$
}

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

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

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

sudo a2enmod rewrite
sudo a2enmod cgi

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

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

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

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

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

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

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

HTTPS経由でページを提供するようにApacheを構成した場合、次の両方の行を見つけます。

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

#  SSLRequireSSL

`#`記号を削除して、両方の出現のコメントを外します。

特定のIPアドレスのみがインターフェースにアクセスできるように、Nagios Webインターフェースにアクセスできる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

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

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

Order deny,allow
Deny from all
Allow from 127.0.0.1

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

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

sudo systemctl restart apache2

Apacheの設定が完了したら、Nagiosのサービスをセットアップできます。 Nagiosは、サービスを管理するためのSystemdユニットファイルを提供していませんので、作成してみましょう。 `+ nagios.service +`ファイルを作成し、エディターで開きます。

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

ファイルに次の定義を入力します。 この定義は、Nagiosをいつ開始し、SystemdがNagiosアプリケーションを検索できる場所を指定します。 Systemdユニットファイルの詳細については、チュートリアルhttps://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files[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を起動し、サーバーの起動時に起動できるようにします。

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

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

手順4-Nagios Webインターフェイスへのアクセス

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

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

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

image:https://assets.digitalocean.com/articles/nagios/hosts_link.png [Nagios Hosts Page]

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

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

手順5-ホストへのNRPEのインストール

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

2番目のサーバーにログインします。これを*監視対象サーバー*と呼びます。

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

sudo useradd

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

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

NRPEでは、https://www.nagios.org/downloads/nagios-plugins/ [Nagios plugins]がリモートホストにインストールされている必要があります。 このパッケージをソースからインストールしましょう。

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

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

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

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

tar zxf nagios-plugins-*.tar.gz

抽出されたディレクトリに変更します。

cd nagios-plugins-*

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

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

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

make

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

sudo make install

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

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

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

tar zxf nrpe-*.tar.gz

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

cd nrpe-*

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

./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とその起動スクリプトをビルドしてインストールします。

make all
sudo make install
sudo make install-config
sudo make install-init

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

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

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

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

allowed_hosts=127.0.0.1,::1

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

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

sudo systemctl start nrpe.service

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

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接続を許可するように設定します:

sudo ufw allow 5666/tcp

UFWの詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-16-04 [セットアップ方法Ubuntu 16.04でのUFWを使用したファイアウォール]。

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

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

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

OutputNRPE v3.2.1

次に、Nagiosが監視できる基本的なチェックをいくつか設定します。

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

df -h /

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

OutputFilesystem      Size  Used Avail Use% Mounted on
udev            490M     0  490M   0% /dev
tmpfs           100M  3.1M   97M   4% /run

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 +`ファイルを開きます:

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

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

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

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

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

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

...
server_address=
...
command[check_vda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p
...

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

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

sudo systemctl restart nrpe.service

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

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

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

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

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

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

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

/usr/local/nagios/etc/servers/your_monitored_server_host_name.cfg

define host {
       use                             linux-server
       host_name
       alias
       address
       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
       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
       service_description             /dev/vda1 free space
       check_command                   check_nrpe!check_vda1
}

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

sudo systemctl restart nagios

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

画像:https://assets.digitalocean.com/articles/nagios_ubuntu_1604/W1nmJKH.png [Nagiosサービスページ]

結論

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

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

Related