2026年9月11日

2026年9月11日

Nagios Coreのインストールと基本設定|Ubuntuでのソース導入とNRPEでのリモート監視

Nagios Core は、サーバーやネットワーク機器、Web サイトの状態を定期的に確認し、異常があれば通知するオープンソースの監視ソフトウェアです。この記事では、監視する側のサーバー(以下「Nagios サーバー」)に Nagios Core を入れて Web 画面にログインするまでと、監視される側のサーバー(以下「監視対象」)に NRPE を入れてディスクや負荷を監視するまでを説明します。

手順は Nagios 公式のナレッジベースにある「Installing Nagios Core From Source」の Ubuntu 22.x・24.x 向けの手順に沿っています。バージョンは2026年11月時点の最新版で、Nagios Core 4.5.14、Nagios Plugins 2.5、NRPE 4.2.0 です。新しい版が出ていれば、各プロジェクトの GitHub のリリースページで番号を確認して読み替えてください。

Nagios の構成

部品 置く場所 役割
Nagios Core Nagios サーバー 監視の予定を管理し、結果を Web 画面に表示・通知する本体
Nagios Plugins Nagios サーバー(と監視対象) check_ping・check_http・check_disk など、実際に確認を行う小さなプログラム
NRPE 監視対象 Nagios サーバーから頼まれたプラグインを監視対象の上で実行して結果を返すデーモン
check_nrpe Nagios サーバー NRPE に実行を頼むためのプラグイン

Ping や HTTP のように外から確認できるものは Nagios サーバーだけで監視できます。ディスク使用量や負荷のように中に入らないと分からないものは、NRPE を通して監視対象の上でプラグインを実行します。

Nagios サーバーに Nagios Core を入れる

以下は Ubuntu 24.04 で実行します。

必要なパッケージ

sudo apt-get update
sudo apt-get install -y autoconf gcc libc6 make wget unzip apache2 php libapache2-mod-php libgd-dev ufw
sudo apt-get install -y openssl libssl-dev

ソースを取得してコンパイルする

cd /tmp
wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.5.14/nagios-4.5.14.tar.gz
tar xzf nagios-4.5.14.tar.gz
cd nagios-4.5.14
sudo ./configure --with-httpd-conf=/etc/apache2/sites-enabled
sudo make all

インストールする

# nagios ユーザーとグループを作り、Apache の実行ユーザーを nagios グループに加える
sudo make install-groups-users
sudo usermod -a -G nagios www-data

# 本体、起動用の systemd ユニット、外部コマンド用の設定、サンプル設定、Apache の設定を入れる
sudo make install
sudo make install-daemoninit
sudo make install-commandmode
sudo make install-config
sudo make install-webconf

# Web 画面の CGI に必要な Apache のモジュール
sudo a2enmod rewrite
sudo a2enmod cgi

本体は /usr/local/nagios/ 以下に入ります。設定ファイルは /usr/local/nagios/etc/ 、Apache の設定は /etc/apache2/sites-enabled/nagios.conf です。

Web 画面のログインユーザーを作る

Web 画面は Basic 認証で保護されます。管理用のユーザー nagiosadmin を作り、パスワードを設定します。

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

-c はファイルを新しく作るオプションです。2人目以降を追加するときは -c を付けずに実行します(付けると既存のユーザーが消えます)。

ファイアウォールと起動

sudo ufw allow Apache
sudo ufw reload

sudo systemctl restart apache2.service
sudo systemctl start nagios.service
sudo systemctl enable nagios.service

ブラウザで http://NagiosサーバーのIPアドレス/nagios/ を開き、nagiosadmin でログインします。この時点ではプラグインが無いため、監視項目はエラーになります。

Web 画面は監視対象の構成が見える管理画面です。インターネットに公開する場合は、HTTPS 化と接続元 IP アドレスの制限もしてください。

Nagios Plugins を入れる

sudo apt-get install -y autoconf gcc libc6 libmcrypt-dev make libssl-dev wget bc gawk dc build-essential snmp libnet-snmp-perl gettext iputils-ping

cd /tmp
wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.5/nagios-plugins-2.5.tar.gz
tar zxf nagios-plugins-2.5.tar.gz
cd nagios-plugins-2.5
sudo ./configure
sudo make
sudo make install

プラグインは /usr/local/nagios/libexec/ に入ります。設定ファイルの中では $USER1$ がこのディレクトリを指します。単体で実行して動作を確かめられます。

/usr/local/nagios/libexec/check_ping -H 127.0.0.1 -w 100,20% -c 500,60%

-w は警告(WARNING)、-c は危険(CRITICAL)のしきい値で、100,20% は「応答時間 100 ミリ秒、パケット損失 20%」を意味します。

Nagios を再起動すると、Web 画面の「Services」で localhost の監視項目が OK になります。

sudo systemctl restart nagios.service

監視対象に NRPE を入れる

ここからは監視対象のサーバー(Ubuntu の例)で作業します。NRPE と標準のプラグインは Ubuntu のパッケージで入れられます。

sudo apt-get update
sudo apt-get install -y nagios-nrpe-server monitoring-plugins

設定ファイルは /etc/nagios/nrpe.cfg、プラグインは /usr/lib/nagios/plugins/ に入ります。

接続を許可する Nagios サーバーを指定する

/etc/nagios/nrpe.cfg の allowed_hosts に Nagios サーバーの IP アドレスを加えます(例では 192.0.2.5)。ここに無いホストからの要求は拒否されます。

allowed_hosts=127.0.0.1,::1,192.0.2.5

実行してよいコマンドを定義する

NRPE は、設定ファイルに command[名前]= で定義したコマンドだけを実行します。/etc/nagios/nrpe.d/ に追加の設定ファイルを置けます。

# /etc/nagios/nrpe.d/local.cfg
command[check_load]=/usr/lib/nagios/plugins/check_load -r -w 2,1.5,1 -c 4,3,2
command[check_root_disk]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 250 -c 400

check_disk -w 20% -c 10% は、空き容量が 20% を下回ると WARNING、10% を下回ると CRITICAL になります。check_load -r は CPU の数で割った負荷で判定します。

反映とファイアウォール

NRPE は TCP 5666 番で待ち受けます。Nagios サーバーからだけ接続を許可します。

sudo systemctl restart nagios-nrpe-server
sudo ufw allow from 192.0.2.5 to any port 5666 proto tcp

Nagios サーバーに check_nrpe を入れる

Nagios サーバーに戻り、NRPE のソースから check_nrpe プラグインだけをインストールします。

cd /tmp
wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.2.0/nrpe-4.2.0.tar.gz
tar xzf nrpe-4.2.0.tar.gz
cd nrpe-4.2.0
sudo ./configure
sudo make all
sudo make install-plugin

監視対象の NRPE に届くかを確かめます。監視対象の IP アドレスを 192.0.2.10 とします。

# NRPE のバージョンが返れば接続できている
/usr/local/nagios/libexec/check_nrpe -H 192.0.2.10

# 定義したコマンドを実行させる
/usr/local/nagios/libexec/check_nrpe -H 192.0.2.10 -c check_root_disk

接続できないときは、監視対象の allowed_hosts、ファイアウォール、systemctl status nagios-nrpe-server を確認します。

監視対象を Nagios に登録する

check_nrpe をコマンドとして定義する

/usr/local/nagios/etc/objects/commands.cfg の末尾に追加します。

define command {
    command_name    check_nrpe
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

ホストとサービスを定義する

監視対象ごとの設定は別のディレクトリにまとめると管理しやすくなります。/usr/local/nagios/etc/nagios.cfg にある次の行の先頭の # を外します。

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

ディレクトリを作り、監視対象の設定を書きます。

sudo mkdir -p /usr/local/nagios/etc/servers
# /usr/local/nagios/etc/servers/web01.cfg
define host {
    use                     linux-server
    host_name               web01
    alias                   WordPress Web Server
    address                 192.0.2.10
}

define service {
    use                     generic-service
    host_name               web01
    service_description     PING
    check_command           check_ping!100.0,20%!500.0,60%
}

define service {
    use                     generic-service
    host_name               web01
    service_description     HTTP
    check_command           check_http
}

define service {
    use                     generic-service
    host_name               web01
    service_description     Root Disk
    check_command           check_nrpe!check_root_disk
}

define service {
    use                     generic-service
    host_name               web01
    service_description     Load
    check_command           check_nrpe!check_load
}

linux-server と generic-service は、make install-config で入るサンプルの templates.cfg に定義されているひな形で、確認の間隔や通知先の既定値が入っています。! の後ろはコマンド定義の $ARG1$、$ARG2$ に渡す値です。

設定を検証して反映する

設定を変えたら、反映する前に検証します。エラーがあると Nagios が起動しないためです。

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

最後に「Total Warnings: 0」「Total Errors: 0」と出れば問題ありません。エラーの行に書かれたファイルと行番号を直してから、Nagios を再起動します。

sudo systemctl restart nagios.service

Web 画面の「Hosts」に web01 が、「Services」に4つの監視項目が表示され、数分以内に結果が入ります。

注意点

  • NRPE の allowed_hosts を広げたり、dont_blame_nrpe=1 で引数を外から渡せるようにしたりすると、外部から任意のコマンドに近い操作をされる危険があります。必要がなければ初期値のままにしてください。
  • 監視の間隔を短くしすぎると、監視対象の負荷が増えます。サンプルのひな形の間隔から始め、必要なものだけ短くします。
  • 異常のメール通知は、contacts.cfg の nagiosadmin のメールアドレスを変更し、Nagios サーバーからメールを送れるようにしたうえで設定します。

通知の設定は「Nagiosで死活監視とアラートを設定する方法」、独自の確認を追加する方法は「Nagiosのプラグインを追加してカスタム監視を設定する方法」で説明しています。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲