網管人員不可能 24 小時隨時監控系統服務的運作,當遇到系統服務發生異常時,需要一個監控網路服務的有效狀態的系統能即時通知管理者,Nagios是這個方面的功能的王者。
安裝 nagios
nagios 目前是 4.1.1 版,目前如果是用 yum install nagios 安裝,則是 3.5.1版,以 yum 安裝參考這個網頁。
How To Install Nagios On CentOS 6
編譯與安裝的過程參考這兩個網頁:
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
Nagios - SIP Monitoring using SIPP
Configure Postfix to Send Mail Using an External SMTP Server
沒有留言:
張貼留言