前書き
このチュートリアルでは、Ubuntu 14.04での非常に人気のあるオープンソース監視システムであるNagios 4のインストールについて説明します。 基本的な設定について説明しますので、Webインターフェースを介してホストリソースを監視できます。 また、リモートホストにエージェントとしてインストールされるNagios Remote Plugin Executor(NRPE)を利用して、ローカルリソースを監視します。
Nagiosは、サーバーのインベントリを保持し、重要なサービスが稼働していることを確認するのに役立ちます。 Nagiosのような監視システムを使用することは、実稼働サーバー環境にとって不可欠なツールです。
前提条件
このチュートリアルを実行するには、Nagiosを実行するUbuntu 14.04サーバーのスーパーユーザー権限が必要です。 理想的には、スーパーユーザー特権を持つ非rootユーザーを使用します。 それを設定するのに助けが必要な場合は、このチュートリアルのステップ1から3に従ってください:Initial Server Setup with Ubuntu 14.04。
LAMPスタックも必要です。 設定する必要がある場合は、このチュートリアルに従ってください:How To Install Linux, Apache, MySQL, PHP (LAMP) stack on Ubuntu 14.04。
このチュートリアルでは、サーバーでプライベートネットワークが有効になっていることを前提としています。 そうでない場合は、プライベートIPアドレスへのすべての参照をパブリックIPアドレスに置き換えてください。
前提条件を整理したので、次にNagios 4をインストールします。
Nagios 4をインストールする
このセクションでは、モニタリングサーバーにNagios 4をインストールする方法について説明します。 このセクションを完了する必要があるのは1回だけです。
Nagiosユーザーとグループを作成する
Nagiosプロセスを実行するユーザーとグループを作成する必要があります。 「nagios」ユーザーと「nagcmd」グループを作成し、次のコマンドを使用してユーザーをグループに追加します。
sudo useradd nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
ビルドの依存関係をインストールする
Nagios Coreをソースからビルドしているため、ビルドを完了するための開発ライブラリをいくつかインストールする必要があります。 その間、apache2-utils
もインストールします。これは、NagiosWebインターフェイスのセットアップに使用されます。
まず、apt-getパッケージリストを更新します。
sudo apt-get update
次に、必要なパッケージをインストールします。
sudo apt-get install build-essential libgd2-xpm-dev openssl libssl-dev xinetd apache2-utils unzip
Nagiosをインストールしましょう。
Nagios Coreをインストールする
Nagios Coreの最新の安定版リリースのソースコードをダウンロードします。 Nagios downloads pageに移動し、フォームの下にあるSkip to downloadリンクをクリックします。 Nagiosサーバーにダウンロードできるように、最新の安定版リリースのリンクアドレスをコピーします。
この記事の執筆時点では、最新の安定版リリースはNagios 4.1.1です。 curlを使用してホームディレクトリにダウンロードします。
cd ~
curl -L -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.1.1.tar.gz
次のコマンドでNagiosアーカイブを抽出します。
tar xvf nagios-*.tar.gz
次に、抽出したディレクトリに移動します。
cd nagios-*
Nagiosを構築する前に、構成する必要があります。 postfix(apt-getでインストールできます)を使用するように設定する場合は、次のコマンドに--with-mail=/usr/sbin/sendmail
を追加します。
./configure --with-nagios-group=nagios --with-command-group=nagcmd
次のコマンドでNagiosをコンパイルします。
make all
これで、これらのmakeコマンドを実行して、Nagios、initスクリプト、およびサンプル構成ファイルをインストールできます。
sudo make install
sudo make install-commandmode
sudo make install-init
sudo make install-config
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プラグインの最新リリースをここで見つけてください:Nagios Plugins Download。 最新バージョンのリンクアドレスをコピーし、リンクアドレスをコピーして、Nagiosサーバーにダウンロードできるようにします。
この記事の執筆時点では、最新バージョンはNagios Plugins 2.1.1です。 curlを使用してホームディレクトリにダウンロードします。
cd ~
curl -L -O http://nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz
次のコマンドでNagiosプラグインアーカイブを抽出します。
tar xvf nagios-plugins-*.tar.gz
次に、抽出したディレクトリに移動します。
cd nagios-plugins-*
Nagiosプラグインを構築する前に、構成する必要があります。 このコマンドを使います。
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
次のコマンドでNagiosプラグインをコンパイルします。
make
次に、次のコマンドでインストールします。
sudo make install
NRPEをインストールする
NRPEの最新の安定版リリースのソースコードをNRPE downloads pageで見つけます。 Nagiosサーバーに最新バージョンをダウンロードします。
この記事の執筆時点では、最新リリースは2.15です。 curlを使用してホームディレクトリにダウンロードします。
cd ~
curl -L -O http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
次のコマンドでNRPEアーカイブを抽出します。
tar xvf nrpe-*.tar.gz
次に、抽出したディレクトリに移動します。
cd nrpe-*
次のコマンドでNRPEを構成します。
./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とそのxinetdスタートアップスクリプトをビルドしてインストールします。
make all
sudo make install
sudo make install-xinetd
sudo make install-daemon-config
エディターでxinetd起動スクリプトを開きます。
sudo vi /etc/xinetd.d/nrpe
NagiosサーバーのプライベートIPアドレスを末尾に追加してonly_from
行を変更します(サーバーの実際のIPアドレスに置き換えます)。
only_from = 127.0.0.1 10.132.224.168
保存して終了。 NagiosサーバーのみがNRPEと通信できます。
xinetdサービスを再起動してNRPEを開始します。
sudo service xinetd restart
Nagios 4がインストールされたので、構成する必要があります。
Nagiosを構成する
それでは、Nagiosの初期設定を実行しましょう。 Nagiosサーバーでこのセクションを1回実行するだけです。
Nagios設定の整理
お気に入りのテキストエディタでメインのNagios設定ファイルを開きます。 viを使用してファイルを編集します。
sudo vi /usr/local/nagios/etc/nagios.cfg
ここで、#
を削除して、この行のコメント解除を見つけます。
#cfg_dir=/usr/local/nagios/etc/servers
保存して終了。
次に、監視する各サーバーの構成ファイルを保存するディレクトリを作成します。
sudo mkdir /usr/local/nagios/etc/servers
Nagiosの連絡先を構成する
お気に入りのテキストエディタでNagiosの連絡先設定を開きます。 viを使用してファイルを編集します。
sudo vi /usr/local/nagios/etc/objects/contacts.cfg
電子メールディレクティブを見つけ、その値(強調表示されている部分)を独自の電子メールアドレスに置き換えます。
email nagios@localhost ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
保存して終了。
check_nrpeコマンドの構成
Nagios設定に新しいコマンドを追加しましょう:
sudo vi /usr/local/nagios/etc/objects/commands.cfg
ファイルの最後に次を追加します。
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
保存して終了。 これにより、Nagiosサービス定義でcheck_nrpe
コマンドを使用できます。
Apacheを構成する
Apacheの書き換えモジュールとcgiモジュールを有効にします。
sudo a2enmod rewrite
sudo a2enmod cgi
htpasswdを使用して、Nagios Webインターフェイスにアクセスできる「nagiosadmin」という管理者ユーザーを作成します。
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
プロンプトでパスワードを入力します。 Nagios Webインターフェースにアクセスするために必要になるため、このパスワードを覚えておいてください。
[.note]#Note:「nagiosadmin」という名前ではないユーザーを作成する場合は、/usr/local/nagios/etc/cgi.cfg
を編集して、作成したユーザーへのすべての「nagiosadmin」参照を変更する必要があります。%(t2 )s#
次に、sites-enabled
ディレクトリへのnagios.conf
のシンボリックリンクを作成します。
sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/
Nagiosを開始する準備ができました。 それでは、Apacheを再起動しましょう。
sudo service nagios start
sudo service apache2 restart
サーバーの起動時にNagiosを起動できるようにするには、次のコマンドを実行します。
sudo ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
オプション:IPアドレスによるアクセスの制限
Nagios WebインターフェースにアクセスできるIPアドレスを制限する場合は、Apache構成ファイルを編集する必要があります。
sudo vi /etc/apache2/sites-available/nagios.conf
次の2行の前に#
記号を追加して、それらを見つけてコメントします。
Order allow,deny
Allow from all
次に、#
記号を削除して次の行のコメントを解除し、許可するIPアドレスまたは範囲(スペース区切り)をAllow from
行に追加します。
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
これらの行は構成ファイルに2回表示されるため、これらの手順をもう一度実行する必要があります。
保存して終了。
次に、Apacheを再起動して、変更を有効にします。
sudo service nagios restart
sudo service apache2 restart
Nagiosは現在実行中です。ログインしてみましょう。
Nagios Webインターフェイスへのアクセス
お気に入りのWebブラウザーを開き、Nagiosサーバーに移動します(強調表示されている部分をIPアドレスまたはホスト名に置き換えます)。
http://nagios_server_public_ip/nagios
htpasswdを使用するようにApacheを構成したため、以前に作成したログイン資格情報を入力する必要があります。 ユーザー名として「nagiosadmin」を使用しました。
認証後、デフォルトのNagiosホームページが表示されます。 左側のナビゲーションバーにあるHostsリンクをクリックして、Nagiosが監視しているホストを確認します。
ご覧のとおり、Nagiosは「localhost」またはそれ自体のみを監視しています。
Nagiosで別のホストを監視しましょう!
NRPEを使用してホストを監視する
このセクションでは、Nagiosに新しいホストを追加する方法を示します。そのため、ホストは監視されます。 監視するサーバーごとにこのセクションを繰り返します。
監視するサーバーで、apt-getを更新します。
sudo apt-get update
次に、NagiosプラグインとNRPEをインストールします。
sudo apt-get install nagios-plugins nagios-nrpe-server
許可されたホストを構成する
それでは、NRPE構成ファイルを更新しましょう。 お気に入りのエディターで開きます(viを使用しています):
sudo vi /etc/nagios/nrpe.cfg
allowed_hosts
ディレクティブを見つけて、NagiosサーバーのプライベートIPアドレスをコンマ区切りのリストに追加します(強調表示された例の代わりにそれを使用してください)。
allowed_hosts=127.0.0.1,10.132.224.168
保存して終了。 これにより、プライベートIPアドレスを介してNagiosサーバーからの要求を受け入れるようにNRPEが構成されます。
許可されたNRPEコマンドの構成
ルートファイルシステムの名前を検索します(監視したい項目の1つであるため)。
df -h /
NRPE構成のファイルシステム名を使用して、ディスク使用量を監視します(おそらく/dev/vda
です)。 次に、nrpe.cfgを開いて編集します。
sudo vi /etc/nagios/nrpe.cfg
NRPE構成ファイルは非常に長く、コメントでいっぱいです。 検索して変更する必要がある行がいくつかあります。
-
server_address:このホストのプライベートIPアドレスに設定します
-
allowed_hosts:NagiosサーバーのプライベートIPアドレスに設定します
-
command[check_hda1]:
/dev/hda1
をルートファイルシステムと呼ばれるものに変更します
前述の3行は次のようになります(適切な値に置き換えてください)。
server_address=client_private_IP
allowed_hosts=nagios_server_private_IP
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda
Nagiosサーバーがそれらを使用するように設定されている場合に実行されるこのファイルには、他にもいくつかの「コマンド」が定義されていることに注意してください。 また、server_port=5666
が設定されているため、NRPEはポート5666でリッスンすることに注意してください。 そのポートをブロックしているファイアウォールがある場合は、必ずNagiosサーバーに対して開いてください。
保存して終了します。
NRPEを再起動する
NRPEを再起動して、変更を有効にします。
sudo service nagios-nrpe-server restart
監視したいホストにNRPEのインストールと設定が完了したら、これらのホストをNagiosサーバー設定に追加してから監視を開始する必要があります。
Nagios構成へのホストの追加
Nagiosサーバーで、/usr/local/nagios/etc/servers/
で監視するリモートホストごとに新しい構成ファイルを作成します。 強調表示された単語「yourhost」をホストの名前に置き換えます。
sudo vi /usr/local/nagios/etc/servers/yourhost.cfg
次のホスト定義を追加し、host_name
値をリモートホスト名(例では「web-1」)に置き換え、alias
値をホストの説明に置き換え、address
リモートホストのプライベートIPアドレスを使用した値:
define host {
use linux-server
host_name yourhost
alias My first Apache server
address 10.132.234.52
max_check_attempts 5
check_period 24x7
notification_interval 30
notification_period 24x7
}
上記の構成ファイルを使用すると、Nagiosはホストが稼働中か停止中かのみを監視します。 これで十分な場合は、保存して終了し、Nagiosを再起動します。 特定のサービスを監視する場合は、先に進んでください。
監視するサービスにこれらのサービスブロックを追加します。 check_commandの値は、状況のしきい値など、監視対象を決定することに注意してください。 ホストの構成ファイルに追加できる例をいくつか示します。
ping:
define service {
use generic-service
host_name yourhost
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
SSH(notifications_enabledを0に設定すると、サービスの通知が無効になります):
define service {
use generic-service
host_name yourhost
service_description SSH
check_command check_ssh
notifications_enabled 0
}
use generic-service
の意味がわからない場合は、デフォルトで定義されている「generic-service」と呼ばれるサービステンプレートの値を継承しているだけです。
保存して終了します。 Nagios設定を再読み込みして、変更を有効にします。
sudo service nagios reload
すべてのリモートホストを監視するようにNagiosを構成したら、設定する必要があります。 必ずNagiosWebインターフェイスにアクセスし、Servicesページをチェックして、監視対象のすべてのホストとサービスを確認してください。
結論
ホストとそのサービスの一部を監視しているので、どのサービスが自分にとって重要であるかを把握するために時間をかけることができます。そうすれば、それらの監視を開始できます。 また、ディスク使用率が警告またはクリティカルのしきい値に達したとき、またはメインWebサイトがダウンしたときに電子メールを受信するように通知を設定することもできます。これにより、状況を迅速に、または問題が発生する前に解決できます。
がんばろう!