CentOS7にNagios 4をインストールする

自宅の検証環境の監視方法について検討するため、いくつかの監視ツールを試しているのだが、今回はZabbixに引き続き有名なNagiosを入れてみる事にする。
前回と同様、サーバ・エージェントともにCentOS 7を用いるものとする。

1.NagiosCore インストール

まず、前提となるhttpd、php、MariaDBをインストールしておく。
(ここでは実施していないが、mysql_secure_installationは実施しておくと良いだろう。)

yum -y install httpd php php-mbstring php-pear php-mysql mariadb-server mariadb
yum -y install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel xinetd unzip

前提パッケージのインストールができたら、Nagiosのインストール準備を行う。
まず、ユーザとグループを作成する。

useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -G nagcmd apache

次に、以下のコマンドでNagiosCoreをインストールする。

cd
curl -L -O https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.1.1.tar.gz
tar xzvf nagios-*.tar.gz
cd nagios-*
./configure --with-command-group=nagcmd
make all
make install
make install-commandmode
make install-init
make install-config
make install-webconf

これで、NagiosCoreのインストールが完了した。

2.NagiosPluginインストール

次に、NagiosPluginをインストールする。

cd
curl -L -O http://nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz
tar xvf nagios-plugins-*.tar.gz
cd nagios-plugins-*
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
make && make install

他サーバの監視で必要なNRPEについてもインストールする。

cd
curl -L -O http://downloads.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
tar xvf nrpe-*.tar.gz
cd 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
make all
make install
make install-xinetd
make install-daemon-config

これで、NagiosPluginのインストールが完了した。

3.初期設定

インストールが完了したら、Nagiosで監視を行うための初期設定を実施する。
まず、/etc/xinetd.d/nrpeのonly_fromにNagiosサーバのIPアドレスを追記する。

ip -o -4 addr show | awk -F '[ /]+' '/global/ {print $4}' | xargs -I{} -n 1 sed-i '/only_from/s/$/ {}/g' /etc/xinetd.d/nrpe
service xinetd restart

/usr/local/nagios/etc/nagios.cfgを編集、ディレクトリを作成する。

sed -i '/^#cfg_dir=\/usr\/local\/nagios\/etc\/servers/s/#//g' /usr/local/nagios/etc/nagios.cfg
mkdir /usr/local/nagios/etc/servers

/usr/local/nagios/etc/objects/commands.cfgに追記をする。

cat << EOF >> /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
EOF

以下のコマンドで、WEBコンソールアクセス時に必要となるパスワード設定を行う。

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

最後に、Nagiosのサービス起動、SELinux/Firewalldの停止を行う。

service nagios restart
service httpd restart
setenforce 0
sed -i.bak "/SELINUX/s/enforcing/disabled/g" /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

後は、NagiosサーバのURL(http://IPアドレス/nagios)にアクセスするだけだ。
なお、ログイン時のユーザ名は「nagiosadmin」、パスワードはhtpasswdコマンドで指定したものだ。

4.Nagiosエージェントインストール

サーバのインストールは無事出来たので、次は監視対象となるサーバにNagiosエージェントをインストールする。
Nagiosエージェントと言っているが、Nagiosでは他の統合監視システムのエージェントソフトに該当するものはNRPEというものになる(UNIX系の場合。厳密に言うと異なるようだが、便宜上は分かりやすくこれで統一)。

早速、監視対象サーバで以下のコマンドを実行する。

yum -y install epel-release
yum -y install nrpe nagios-plugins-all
sed -i '/^allowed_hosts/s/$/,NagiosサーバIPアドレス/g' /etc/nagios/nrpe.cfg
systemctl start nrpe.service
systemctl enable nrpe.service

次に、Nagiosサーバ側で監視対象ホストについての設定ファイル(/usr/local/nagios/etc/servers/監視対象ホスト名.cfg)を作成する。
以下、設定例。

●/usr/local/nagios/etc/servers/test_host.cfg

define host{
      use                               linux-server
      host_name                         test-node
      alias                             lan
      address                           IPアドレス
}
define service {
        use                             generic-service
        host_name                       test-node
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
}
define service {
        use                             generic-service
        host_name                       test-node
        service_description             SSH
        check_command                   check_ssh
        notifications_enabled           0
}

設定ファイル作成後、reloadする。

systemctl reload nagios

reload後、Webコンソールを見るとホストが追加されている事がわかる。