Nagios4をインストールしてUbuntu18.04でサーバーを監視する方法
著者は、 Open Source Initiative を選択して、 Write forDOnationsプログラムの一環として寄付を受け取りました。
序章
Nagios は、人気のあるオープンソースの監視システムです。 サーバーのインベントリを保持して監視するため、重要なサービスが稼働していることがわかります。 Nagiosのような監視システムを使用することは、稼働時間、CPU使用率、またはディスクスペースを監視することで、問題が発生する前、またはユーザーから電話がかかる前に問題を回避できるため、あらゆる実稼働環境に不可欠なツールです。
このチュートリアルでは、Nagios 4をインストールして構成し、NagiosのWebインターフェイスを介してホストリソースを監視できるようにします。 また、Nagios Remote Plugin Executor(NRPE)をセットアップします。これは、リモートホスト上でエージェントとして実行されるため、それらのリソースを監視できます。
前提条件
このチュートリアルに従うには、次のものが必要です。
- 2つのUbuntu18.04サーバーは、 Ubuntu 18.04 の初期サーバーセットアップガイドに従ってセットアップされます。これには、sudo権限を持つroot以外のユーザーと、
ufw
で構成されたファイアウォールが含まれます。 1台のサーバーにNagiosをインストールします。 このチュートリアルでは、これをNagiosサーバーと呼びます。 2番目のサーバーを監視します。 この2番目のサーバーは2番目のUbuntuサーバーと呼ばれます。 - Nagiosサーバーを実行するサーバーには、ApacheとPHPがインストールされている必要があります。 このガイドに従って、サーバーの1つでそれらを構成します。 そのチュートリアルのMySQLの手順はスキップできます。
通常、NagiosはハードウェアファイアウォールまたはVPNの背後で実行されます。 Nagiosサーバーがパブリックインターネットに公開されている場合は、TLS/SSL証明書をインストールしてNagiosWebインターフェイスを保護する必要があります。 これはオプションですが、強くお勧めします。 Let’s Encrypt on Ubuntu 18.04 ガイドに従って、無料のTLS/SSL証明書を取得できます。
このチュートリアルでは、サーバーでプライベートネットワークが有効になっていることを前提としているため、監視はパブリックネットワークではなくプライベートネットワークで行われます。 プライベートネットワークを有効にしていない場合でも、プライベートIPアドレスへのすべての参照をパブリックIPアドレスに置き換えることで、このチュートリアルに従うことができます。
ステップ1—Nagios4をインストールする
Nagiosをインストールする方法は複数ありますが、Nagiosとそのコンポーネントをソースからインストールして、最新の機能、セキュリティアップデート、バグ修正を確実に入手できるようにします。
Apacheを実行しているサーバーにログインします。 このチュートリアルでは、これをNagiosサーバーと呼びます。
- 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自体をインストールできます。 NagiosCoreの最新の安定したリリースのソースコードをダウンロードします。 Nagiosダウンロードページに移動し、フォームの下にあるスキップしてダウンロードリンクをクリックします。 最新の安定版リリースのリンクアドレスをコピーして、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
注: NagiosがPostfixを使用してメールを送信するようにするには、 Postfix をインストールし、--with-mail=/usr/sbin/sendmail
をconfigure
に追加して使用するように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のWebインターフェイスを提供するため、以下を実行してApache構成ファイルをインストールし、その設定を構成します。
- sudo make install-webconf
a2enmod
コマンドを使用して、Apacherewrite
およびcgi
モジュールを有効にします。
- sudo a2enmod rewrite
- sudo a2enmod cgi
Webインターフェイスを介してNagiosに外部コマンドを発行するには、Webサーバーユーザーwww-dataをnagiosグループに追加します。
- sudo usermod -a -G nagios www-data
htpasswd
コマンドを使用して、NagiosWebインターフェイスにアクセスできるnagiosadminという管理ユーザーを作成します。
- sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
プロンプトでパスワードを入力します。 Nagios Webインターフェイスにアクセスするために必要になるため、このパスワードを覚えておいてください。
警告: nagiosadmin 以外の名前のユーザーを作成する場合は、/usr/local/nagios/etc/cgi.cfg
を編集し、すべてのnagiosadmin参照を次のように変更する必要があります。作成したユーザー。
Apacheを再起動して、新しいApache構成をロードします。
- sudo systemctl restart apache2
これでNagiosがインストールされました。 ただし、これを機能させるには、Nagiosプラグインをインストールする必要があります。これについては、次の手順で説明します。
ステップ2—Nagiosプラグインをインストールする
Nagiosが正しく動作するにはプラグインが必要です。 公式のNagiosプラグインパッケージには、稼働時間、ディスク使用量、スワップ使用量、NTPなどの基本的なサービスを監視できる50を超えるプラグインが含まれています。
プラグインバンドルをインストールしましょう。
Nagiosプラグインの最新バージョンは、公式サイトで見つけることができます。
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つ必要です。 次にインストールしましょう。
ステップ3—check_nrpeプラグインをインストールする
Nagiosは、Nagios Remote Plugin Executor(NRPE)を使用してリモートホストを監視します。 それは2つの部分で構成されています:
- Nagiosサーバーが使用する
check_nrpe
プラグイン。 - リモートホスト上で実行され、Nagiosサーバーにデータを送信するNRPEデーモン。
Nagiosサーバーにcheck_nrpe
プラグインをインストールしましょう。
GitHubページでNRPEの最新の安定したリリースのダウンロードURLを見つけてください。
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サーバーを構成しましょう。
ステップ4—Nagiosを設定する
次に、いくつかの構成ファイルの編集を含む、Nagiosの初期構成を実行しましょう。 このセクションを実行する必要があるのは、Nagiosサーバーで1回だけです。
お好みのテキストエディタでメインのNagios設定ファイルを開きます。 ここでは、nano
を使用します。
- sudo nano /usr/local/nagios/etc/nagios.cfg
ファイルで次の行を見つけます。
...
#cfg_dir=/usr/local/nagios/etc/servers
...
行の先頭から#
文字を削除して、この行のコメントを解除します。
cfg_dir=/usr/local/nagios/etc/servers
CTRL+X
、Y
、ENTER
(nano
を使用している場合)の順に押して、nagios.cfg
を保存して閉じます。
次に、監視する各サーバーの構成ファイルを格納するディレクトリを作成します。
- sudo mkdir /usr/local/nagios/etc/servers
テキストエディタでNagiosの連絡先設定を開きます。
- sudo nano /usr/local/nagios/etc/objects/contacts.cfg
email
ディレクティブを見つけて、その値を自分の電子メールアドレスに置き換えます。
...
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
という新しいコマンドを定義します。
...
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
これは名前を定義し、プラグインを実行するためのコマンドラインオプションを指定します。
エディターを保存して終了します。
次に、Nagiosを起動し、サーバーの起動時に起動できるようにします。
- sudo systemctl start nagios
Nagiosが実行されているので、そのWebインターフェイスにログインしてみましょう。
ステップ5—NagiosWebインターフェースへのアクセス
お気に入りのWebブラウザーを開き、http://nagios_server_public_ip/nagios
にアクセスしてNagiosサーバーに移動します。
表示されるポップアップにWebインターフェイスのログインクレデンシャルを入力します。 ユーザー名にはnagiosadminを使用し、そのユーザー用に作成したパスワードを使用します。
認証後、デフォルトのNagiosホームページが表示されます。 左側のナビゲーションバーにあるHostsリンクをクリックして、Nagiosが監視しているホストを確認します。
ご覧のとおり、Nagiosは「localhost」またはそれ自体のみを監視しています。
Nagiosで他のサーバーを監視しましょう。
ステップ6—ホストへのNagiosプラグインとNRPEデーモンのインストール
Nagiosが監視できるように、新しいホストを追加しましょう。 Nagios Remote Plugin Executor(NRPE)をリモートホストにインストールし、いくつかのプラグインをインストールしてから、このホストを監視するようにNagiosサーバーを構成します。
2番目のUbuntuサーバーと呼ぶ2番目のサーバーにログインします。
- 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プラグインがリモートホストにインストールされている必要があります。 このパッケージをソースからインストールしましょう。
ダウンロードページからNagiosプラグインの最新リリースを見つけてください。
curl
を使用して、Nagiosプラグインをホームディレクトリにダウンロードします。
- 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ページでNRPEの最新の安定したリリースのダウンロードURLを見つけます。 curl
を使用して、NRPEの最新の安定したリリースを監視対象サーバーのホームディレクトリにダウンロードします。
- 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アドレスをコンマ区切りのリストに追加します。
- コマンド[check_hda1]:
/dev/hda1
をルートファイルシステムと呼ばれるものに変更します。
これらの設定を見つけて、適切に変更します。
...
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の詳細については、 Ubuntu18.04でUFWを使用してファイアウォールを設定する方法をご覧ください。
これで、リモートNRPEサーバーとの通信を確認できます。 Nagiosサーバーで次のコマンドを実行します。
- /usr/local/nagios/libexec/check_nrpe -H second_ubuntu_server_ip
次の出力が表示されます。
OutputNRPE v3.2.1
監視する追加のサーバーごとに、このセクションの手順を繰り返します。
監視するホストへのNRPEのインストールと構成が完了したら、監視を開始する前に、これらのホストをNagiosサーバー構成に追加する必要があります。 次にそれをしましょう。
ステップ7—Nagiosでホストを監視する
Nagiosでホストを監視するには、監視する対象を指定する各ホストの構成ファイルを追加します。 その後、NagiosWebインターフェイスでこれらのホストを表示できます。
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アドレスに置き換えます。リモートホスト:
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はホストが稼働しているか停止しているかのみを通知します。 監視するサービスをいくつか追加しましょう。
まず、このブロックを追加して、負荷の平均を監視します。
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に指示します。
次に、このブロックを追加して、ディスク使用量を監視します。
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は新しいホストをチェックし、NagiosWebインターフェースにそれらが表示されます。 左側のナビゲーションバーにあるServicesリンクをクリックして、監視対象のすべてのホストとサービスを表示します。
結論
サーバーにNagiosをインストールし、少なくとも1台のリモートマシンの平均負荷とディスク使用量を監視するように構成しました。
ホストとそのサービスの一部を監視しているので、Nagiosを使用してミッションクリティカルなサービスを監視し始めることができます。 Nagiosを使用して、重要なイベントの通知を設定できます。 たとえば、ディスク使用率が警告またはクリティカルのしきい値に達したときに電子メールを受信したり、メインのWebサイトがダウンしたときに通知を受信したりできます。 このようにして、状況を迅速に、または問題が発生する前に解決できます。