前書き
Nagiosは、人気のあるオープンソースの監視システムです。 サーバーのインベントリを保持して監視するため、重要なサービスが稼働していることがわかります。 Nagiosのような監視システムを使用することは、稼働時間、CPU使用率、またはディスク容量を監視することで、問題が発生する前、またはユーザーが電話する前に問題を回避できるため、あらゆる運用環境に不可欠なツールです。
このチュートリアルでは、Nagios 4をインストールして構成し、Nagiosのウェブインターフェースを介してホストリソースを監視できるようにします。 また、Nagios Remote Plugin Executor(NRPE)をセットアップします。これは、リモートホスト上でエージェントとして実行されるため、リソースを監視できます。
前提条件
このチュートリアルを完了するには、次のものが必要です。
-
private networkingが構成された2つのUbuntu 16.04サーバー。これは、sudo非rootユーザーとファイアウォールを含むthe Ubuntu 16.04 initial server setup guideをフォローすることによってセットアップされます。 最初のサーバーを使用してNagiosを実行し、2番目のサーバーをNagiosが監視できるリモートホストとして構成します。
-
Nagiosを実行するサーバーには、ApacheとPHPもインストールする必要があります。これは、How To Install Linux, Apache, MySQL, PHP (LAMP stack) on Ubuntu 16.04に従って実行できます。 そのチュートリアルのMySQLステップをスキップできます。
-
-
通常、NagiosはハードウェアファイアウォールまたはVPNの背後で実行されます。 Nagiosサーバーがパブリックインターネットに公開されている場合は、TLSでNagios Webインターフェイスを保護する必要があります。 これを行うには、次のいずれかを実行する必要があります。
-
サーバーを指すようにドメイン名を構成します。 How To Set Up a Host Name with DigitalOceanチュートリアルに従ってドメインをDigitalOceanドロップレットにポイントする方法を学び、次にHow To Secure Apache with Let’s Encrypt on Ubuntu 16.04に従ってHTTPSサポートを設定する方法を学ぶことができます。
-
How To Create a Self-Signed SSL Certificate for Apache in Ubuntu 16.04に従って、自己署名証明書でApacheを保護します
-
このチュートリアルでは、サーバーでprivate networkingが有効になっていることを前提としているため、監視はパブリックネットワークではなくプライベートネットワークで行われます。 プライベートネットワーキングを有効にしていない場合でも、プライベートIPアドレスへのすべての参照をパブリックIPアドレスに置き換えることにより、このチュートリアルに従うことができます。
[[step-1 -—- installing-nagios-4]] ==ステップ1— Nagios4のインストール
Nagiosをインストールする方法は複数ありますが、Nagiosとそのコンポーネントをソースからインストールして、最新の機能、セキュリティアップデート、バグ修正を確実に取得します。
Apacheを実行するサーバーにログインします。 これをNagios serverと呼びます。
ssh sammy@your_nagios_server_ip
nagiosユーザーとnagcmdグループを作成します。 これらを使用して、Nagiosプロセスを実行します。
sudo useradd nagios
sudo groupadd nagcmd
次に、ユーザーをグループに追加します。
sudo usermod -a -G nagcmd nagios
Nagiosとそのコンポーネントをソースから構築しているため、コンパイラ、開発ヘッダー、OpenSSLなど、いくつかの開発ライブラリをインストールしてビルドを完了する必要があります。
パッケージリストを更新して、前提条件の最新バージョンをダウンロードできるようにします。
sudo apt-get update
次に、必要なパッケージをインストールします。
sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev unzip
前提条件をインストールしたら、Nagios自体をインストールできます。 Nagios Coreの最新の安定版リリースのソースコードをダウンロードします。 Nagios downloads pageに移動し、フォームの下にあるSkip to downloadリンクをクリックします。 Nagiosサーバーにダウンロードできるように、最新の安定版リリースのリンクアドレスをコピーします。
curl
コマンドを使用して、リリースをホームディレクトリにダウンロードします。
cd ~
curl -L -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.3.4.tar.gz
Nagiosアーカイブを抽出します。
tar zxf nagios-*.tar.gz
次に、抽出したディレクトリに移動します。
cd nagios-*
Nagiosをビルドする前に、configure
スクリプトを実行して、Nagiosで使用するユーザーとグループを指定します。 作成したnagiosユーザーとnagcmdグループを使用します。
./configure --with-nagios-group=nagios --with-command-group=nagcmd
[.note] #NagiosがPostfixを使用してメールを送信するようにするには、install Postfixを作成し、--with-mail=/usr/sbin/sendmail
をconfigure
コマンドに追加してそれを使用するように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をコンパイルします。
make all
次に、これらのmake
コマンドを実行して、Nagios、そのinitスクリプト、およびそのデフォルトの構成ファイルをインストールします。
sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config
Apacheを使用してNagiosのWebインターフェースを提供するため、サンプルのApache構成ファイルを/etc/apache2/sites-available
フォルダーにコピーします。
sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sites-available/nagios.conf
Webインターフェイスを介してNagiosに外部コマンドを発行するには、Webサーバーユーザーwww-dataをnagcmdグループに追加します。
sudo usermod -G nagcmd www-data
Nagiosがインストールされました。 Nagiosがさまざまなホストからデータを収集できるプラグインをインストールしましょう。
[[step-2 -—- installing-the-check_nrpe-plugin]] ==ステップ2—check_nrpeプラグインのインストール
Nagiosは、Nagios Remote Plugin Executor(NRPE)を使用してリモートホストを監視します。 次の2つの部分で構成されます。
-
Nagiosサーバーによって使用される
check_nrpe
プラグイン。 -
NRPEデーモン。リモートホストで実行され、Nagiosサーバーにデータを送信します。
Nagiosサーバーにcheck_nrpe
プラグインをインストールしましょう。
NRPEの最新の安定版リリースのダウンロードURLをNagios Exchange siteで見つけます。
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-*.tar.gz
次に、抽出したディレクトリに移動します。
cd nrpe-*
check_nrpe
プラグインを構成します。
./configure
次に、check_nrpe
をビルドしてインストールします。
make check_nrpe
sudo make install-plugin
次に、Nagiosサーバーを構成しましょう。
[[step-3 -—- configuring-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
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$
}
これにより、名前が定義され、プラグインを実行するためのコマンドラインオプションが指定されます。 このコマンドはステップ5で使用します。
保存してエディタを終了します。
次に、Nagiosユーザーインターフェイスを提供するようにApacheを構成します。 a2enmod
コマンドを使用して、Apacherewrite
およびcgi
モジュールを有効にします。
sudo a2enmod rewrite
sudo a2enmod cgi
htpasswd
コマンドを使用して、Nagios Webインターフェイスにアクセスできるnagiosadminという管理者ユーザーを作成します。
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
プロンプトでパスワードを入力します。 Nagios Webインターフェースにアクセスするために必要になるため、このパスワードを覚えておいてください。
[.warning]#Note:nagiosadmin以外の名前でユーザーを作成する場合は、/usr/local/nagios/etc/cgi.cfg
を編集し、すべてのnagiosadmin参照をユーザーに変更する必要があります。作成されました。
#
次に、sites-enabled
ディレクトリへのnagios.conf
のシンボリックリンクを作成します。 これにより、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 your_ip_address
これらの行は構成ファイルに2回出現するため、両方の出現箇所を必ず変更してください。 次に、エディターを保存して終了します。
Apacheを再起動して、新しいApache設定をロードします。
sudo systemctl restart apache2
Apacheの設定が完了したら、Nagiosのサービスをセットアップできます。 Nagiosは、サービスを管理するためのSystemdユニットファイルを提供していませんので、作成してみましょう。 nagios.service
ファイルを作成し、エディターで開きます。
sudo nano /etc/systemd/system/nagios.service
次の定義をファイルに入力します。 この定義は、Nagiosをいつ開始し、SystemdがNagiosアプリケーションを検索できる場所を指定します。 チュートリアル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が実行されているので、Webインターフェースにログインしましょう。
[[step-4 -—- accessing-the-nagios-web-interface]] ==ステップ4— NagiosWebインターフェイスへのアクセス
お気に入りのWebブラウザーを開き、http://nagios_server_public_ip/nagios
にアクセスしてNagiosサーバーに移動します。
表示されるポップアップにWebインターフェースのログイン資格情報を入力します。 ユーザー名にはnagiosadminを使用し、そのユーザー用に作成したパスワードを使用します。
認証後、デフォルトのNagiosホームページが表示されます。 左側のナビゲーションバーのHostsリンクをクリックして、Nagiosが監視しているホストを確認します。
ご覧のとおり、Nagiosは「localhost」またはそれ自体のみを監視しています。
Nagiosで他のサーバーを監視しましょう。
[[step-5 -—- installing-npre-on-a-host]] ==ステップ5—ホストへのNPREのインストール
Nagiosが監視できるように、新しいホストを追加しましょう。 Nagios Remote Plugin Executor(NRPE)をリモートホストにインストールし、いくつかのプラグインをインストールしてから、このホストを監視するようにNagiosサーバーを構成します。
2番目のサーバーにログインします。これをmonitored serverと呼びます。
ssh sammy@your_monitored_server_ip
最初に、NRPEエージェントを実行する「nagios」ユーザーを作成します。
sudo useradd nagios
ソースからNRPEをインストールします。つまり、ステップ1でNagiosサーバーにインストールしたのと同じ開発ライブラリが必要になります。 パッケージソースを更新し、NRPEの前提条件をインストールします。
sudo apt-get update
sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev unzip
NRPEでは、Nagios pluginsがリモートホストにインストールされている必要があります。 このパッケージをソースからインストールしましょう。
Nagios Plugins DownloadページからNagiosプラグインの最新リリースを見つけます。 最新バージョンのリンクアドレスをコピーし、リンクアドレスをコピーして、Nagiosサーバーにダウンロードできるようにします。
Nagiosプラグインをcurl
でホームディレクトリにダウンロードします。
cd ~
curl -L -O http://nagios-plugins.org/download/nagios-plugins-2.2.1.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をインストールします。 手順1と同じように、Nagios Exchange siteで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-*.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,your_nagios_server_private_ip
これにより、プライベート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の詳細については、How To Set Up a Firewall with UFW on Ubuntu 16.04を参照してください。
これで、リモートNRPEサーバーとの通信を確認できます。 Nagiosサーバーで次のコマンドを実行します。
/usr/local/nagios/libexec/check_nrpe -H remote_host_ip
次の出力が表示されます。
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
/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
ファイルを開きます。
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=monitored_server_private_ip
...
command[check_vda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda1
...
保存してエディタを終了します。
NRPEサービスを再起動して、変更を有効にします。
sudo systemctl restart nrpe.service
監視する追加のサーバーごとに、このセクションの手順を繰り返します。
監視したいホストにNRPEのインストールと設定が完了したら、これらのホストをNagiosサーバー設定に追加してから監視を開始する必要があります。 次はそれをしましょう。
[[step-6 -–- monitoring-hosts-with-nagios]] ==ステップ6–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はホストが稼働中か停止中かを通知するだけです。 監視するサービスをいくつか追加しましょう。
まず、このブロックを追加して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サービスを再起動して、変更を有効にします。
sudo systemctl restart nagios
数分後、Nagiosは新しいホストを確認し、Nagiosのウェブインターフェースに表示されます。 左側のナビゲーションバーのServicesリンクをクリックして、監視対象のすべてのホストとサービスを表示します。
結論
サーバーにNagiosをインストールし、少なくとも1台のリモートマシンのCPUとディスクの使用率を監視するように構成しました。
ホストとそのサービスの一部を監視しているので、Nagiosを使用してミッションクリティカルなサービスの監視を開始できます。 Nagiosを使用して、重要なイベントの通知を設定できます。 たとえば、ディスク使用率が警告またはクリティカルのしきい値に達したときに電子メールを受信したり、メインWebサイトがダウンしたときに通知を受信したりできます。 この方法で、状況を迅速に、または問題が発生する前であっても解決できます。