2016年5月16日

安裝 Nagios in CentOS

網管人員不可能 24 小時隨時監控系統服務的運作,當遇到系統服務發生異常時,需要一個監控網路服務的有效狀態的系統能即時通知管理者,Nagios是這個方面的功能的王者。

安裝 nagios

nagios 目前是 4.1.1 版,目前如果是用 yum install nagios 安裝,則是 3.5.1版,以 yum 安裝參考這個網頁。

How To Install Nagios On CentOS 6

編譯與安裝的過程參考這兩個網頁:

Fedora Quickstart

How to Install Nagios 4.1 (Monitoring Server) on CentOS / RedHat / Fedora

編譯及安裝的過程

yum install httpd php
yum install gcc glibc glibc-common
yum install gd gd-devel

useradd nagios
passwd nagios

# 把 nagios, apache 兩個 user 放入 nagcmd group
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache

wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.1.1.tar.gz



tar xzvf nagios-4.1.1.tar.gz
cd nagios-4.1.1

./configure –with-command-group=nagcmd

make all
make install
make install-init
make install-config
make install-commandmode

make install-webconf

# 設定管理網頁的帳號及密碼
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

service httpd restart

cd ..

安裝 nagios-plugins 的過程

# 安裝 nagios-plugins

# 如果已經有這個 user 就不用設定
useradd nagios
passwd nagios
# 也可以直接把 nagios 改為不能登入
vi /etc/passwd
nagios:x:501:501::/home/nagios:/sbin/nologin


wget http://www.nagios-plugins.org/download/nagios-plugins-2.1.1.tar.gz

tar xzf nagios-plugins-2.1.1.tar.gz
cd  nagios-plugins-2.1.1

./configure
make
make install

cd ..

chkconfig –add nagios
chkconfig nagios on

# 驗證 nagios 設定檔是否正確
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

# 啟動 nagios
service nagios start
# 修改 email
vi /usr/local/nagios/etc/objects/contacts.cfg

安裝 NRPE

# NRPE
# 如果已經有這個 user 就不用設定
useradd nagios
passwd nagios
# 也可以直接把 nagios 改為不能登入
vi /etc/passwd
nagios:x:501:501::/home/nagios:/sbin/nologin


wget --no-check-certificate http://sourceforge.net/projects/nagios/files/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz

tar zxvf nrpe-2.15.tar.gz

cd nrpe-2.15

./configure
make all

make install-plugin
make install-daemon
make install-daemon-config

# 將 NRPE 裝在 xinetd 下面
make install-xinetd

# 把要使用這個服務的 IP 放在 only_from 設定中
vi /etc/xinetd.d/nrpe

only_from = 127.0.0.1 <nagios_ip_address>


# 修改 /etc/services ,增加下面這行
vi /etc/services

nrpe            5666/tcp                        # NRPE


service xinetd restart


# 檢查是否有啟動 NRPE,要看到 LISTEN 這一行
netstat -at | grep nrpe

tcp        0      0 *:nrpe                      *:*                         LISTEN


# 用 check_nrpe 檢查是否正常
/usr/local/nagios/libexec/check_nrpe -H localhost
# 會得到 NRPE 的版本資訊
NRPE v2.15

可以用以下指令測試 NRPE 的結果

/usr/local/nagios/libexec/check_nrpe -H localhost -c check_users
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_load
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_total_procs
/usr/local/nagios/libexec/check_nrpe -H localhost -c check_zombie_procs

整合 NRPE 及 nagios

修改設定檔,增加 NRPE 及 host 設定

vim /usr/local/nagios/etc/objects/commands.cfg


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

修改 nagios.cfg 將 /usr/local/nagios/etc/servers 設定目錄打開

vi /usr/local/nagios/etc/nagios.cfg
cfg_dir=/usr/local/nagios/etc/servers

mkdir /usr/local/nagios/etc/servers

新增 host, service

cp /usr/local/nagios/etc/objects/localhost.cfg /usr/local/nagios/etc/servers/monitorserver.cfg

# 把所有 hostname 都改成 monitorserver 的 hostname
define host{
    use linux-server
    host_name monitorserver
    alias monitorserver
    address 192.168.1.7
    }

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

增加 NRPE command

vi /usr/local/nagios/etc/nrpe.cfg
# 增加一行
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
# 驗證 nagios 設定檔是否正確
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

service nagios restart

設定 nagios 的發信通知功能

要讓 nagios 發送警告的通知信件,首先必須先在這台機器上,設定 postfix,因為我們是使用 Google Apps 代管 mail server,因此要設定讓 postfix 能夠 relay 到 Google SMTP server。

postfix 安裝就是把需要的套件裝一裝就好了。

yum -y install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain
yum -y install postfix

首先處理 postfix 設定檔,修改 sasl_passwd

vi /etc/postfix/sasl_passwd

[smtp.gmail.com]:587 <USERNAME@gmail.com>:PASSWORD
或是
[smtp.gmail.com]:587 <USERNAME@yourdomain.com>:PASSWORD


postmap /etc/postfix/sasl_passwd

修改 main.cf

vi /etc/postfix/main.cf

relayhost=[smtp.gmail.com]:587
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_use_tls=yes

重新啟動 postfix

service postfix restart

用 mail 指令測試看看能不能發送信件出去,自己要把 test@a.b.c 改成要收信的 email address。

mail -s "Test Subject" test@a.b.c < /dev/null

echo "Test mail from postfix" | mail -s "Test Postfix" test@a.b.c

postfix 的 log 檔放在 /var/log/maillog 裡面,如果有問題,可以查看這個檔案的 log。

修改 nagios 設定檔: contacts.cfg,新增一個管理者以及 email,並把這個管理者放在 admins 這個群組裡面。

vi /usr/local/nagios/etc/objects/contacts.cfg

define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administratos
        members                 nagiosadmin,admin
        }

define contact {
        contact_name                            admin
        alias                                   admin
        email                                   admin@a.b.c
        service_notification_period             24x7
        service_notification_options            w,u,c,r,f,s
        service_notification_commands           notify-service-by-email
        host_notification_period                24x7
        host_notification_options               d,u,r,f,s
        host_notification_commands              notify-host-by-email
}

References

RHEL / CentOS 7 安裝 Nagios

結合SNMP服務 Nagios監控能力更全面

以 NAGIOS 實作服務監控系統

Nagios系統監看工具安裝教學

Nagios - 網路監控及告警系統

Nagios - SIP Monitoring using SIPP

Configure Postfix to Send Mail Using an External SMTP Server

Nagios 設定E-mail 警示