一、安裝nagios
#useradd -s /bin/false nagios
#tar zxvf nagios-2.9.tar.gz
#cd nagios-2.9
#./configure –prefix=/usr/local/nagios –with-gd-lib=/usr/local/lib –with-gd-inc=/usr/local/include
#make all //編譯nagios
#make install //安裝主要的程序,CGI及HTML文件
#make install-init //在/etc/rc.d/init.d安裝啓動腳本
#make install-commandmode //給外部命令訪問nagios配置文件的權限
#make install-config //將配置文件的例子複製到nagios的安裝目錄
#cd /usr/local
#chown -R nagios
二、安裝nagios-plugins
#tar zxvf nagios-plugins-1.4.9.tar.gz
#cd nagios-plugins-1.4.9
#./configure –prefix=/usr/local/nagios/
#make
#make install
#ls /usr/local/nagios/libexec/ //顯示安裝的插件文件
三、安裝p_w_picpathpak-base
#tar -xvzf p_w_picpathpak-base.tar.gz //解壓之後是base目錄
#cp -R base /usr/local/nagios/share/p_w_picpaths/logos
四、安裝apache
還需安裝一下軟件,安裝過程略。
gd //http://www.boutell.com/gd/http/gd-2.0.11.tar.gz
zlib //http://www.gzip.org/zlib/zlib-1.1.4.tar.gz
pnglib //http://download.sourceforge.net/libpng/libpng-1.2.5.tar.gz
jpeglib //http://www.ijg.org/files/jpegsrc.v6b.tar.gz
五、修改apache配置
Apache 的目的是能夠在WEB上更加人性化的查看監控結果,其餘的WEB服務器也能夠。
grep ^User /usr/local/apache2/conf/httpd.conf
User daemon
usermod -G nagios daemon
此處替換成本身的。好比個人機器上是apache
usermod -G nagios apache 把apache和nagios 都放到nagios 組中。
vi /usr/local/apache2/conf/httpd.conf //在下面加入以下內容
#Setting for nagios
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory 「/usr/local/nagios/sbin」>
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName 「Nagios Access」
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
Alias /nagios /usr/local/nagios/share
<Directory 「/usr/local/nagios/share」>
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName 「Nagios Access」
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
/usr/local/apache2/bin/apachectl -t //檢查配置文件是否正確
httpd -t
/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd ritto
cat /usr/local/nagios/etc/htpasswd //查看認證文件內容
/usr/local/apache2/bin/apachectl start //啓動apache
service httpd restart
六、配置nagios
nagios自定義了一套規則用於配置文件,在nagios裏面定義了一些基本對象,如:
聯繫人 contact 出了問題像誰報告?通常固然是系統管理員了
監控時間段 timeperiod 7X24小時不間斷仍是週一至週五,或是自定義的其餘時間段
被監控主機 host 所須要監控的服務器,固然能夠是監控機本身
監控命令 command nagios 發出的哪一個指令來執行某個監控,這也是本身定義的
被監控的服務 service 例如主機是否存活,80是否開,磁盤使用狀況或自定義的服務等
多個被監控主機能夠定義爲一個主機組
多個聯繫人能夠被定義爲一個聯繫人組
多個服務也能夠被定義爲一個服務組
將配置文件更名:
cd /usr/local/nagios/etc/
tar zcvf bak.tar.gz *
mv cgi.cfg-sample cgi.cfg
mv commands.cfg-sample commands.cfg
mv localhost.cfg-sample localhost.cfg
mv nagios.cfg-sample nagios.cfg
mv resource.cfg-sample resource.cfg
修改nagios的配置文件
vi nagios.cfg //修改nagios的主配置文件
#cfg_file=/usr/local/nagios//etc/localhost.cfg //註釋此行
//將下面幾行的註釋去掉
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //聯繫組配置文件路徑
cfg_file=/usr/local/nagios/etc/contacts.cfg //聯繫人配置文件路徑
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主機組配置文件路徑
cfg_file=/usr/local/nagios/etc/hosts.cfg //主機配置文件路徑
cfg_file=/usr/local/nagios/etc/services.cfg //服務配置文件路徑
cfg_file=/usr/local/nagios/etc/timeperiods.cfg //監視時段配置文件路徑
check_external_commands=0 //將 0 改爲 1,容許在web界面下執行重啓nagios
command_check_interval=15s //改爲 10s,命令檢查時間間隔
配置相關CGI腳本
vi cgi.cfg //修改cgi腳本控制文件
use_authentication=1 //確保值爲 1
default_user_name=ritto //修改成認證用戶
//後面修改內容以下:
authorized_for_system_information=nagiosadmin,test
authorized_for_configuration_information=nagiosadmin,test
authorized_for_system_commands=test
authorized_for_all_services=nagiosadmin,test
authorized_for_all_hosts=nagiosadmin,test
authorized_for_all_service_commands=nagiosadmin,test
authorized_for_all_host_commands=nagiosadmin,test
關於全部命令的配置都在commands.cfg裏面
vi misccommands.cfg //主要功能是用於發送報警短信和報警郵件
#host-notify-by-sms //發送短信報警
define command {
command_name host-notify-by-sms
command_line /usr/local/bin/sms_send 「Host $HOSTSTATE$ alert for $HOSTNAME$! on ‘$DATETIME$’ 」 $CONTACTPAGER$
}
#service notify by sms //發送短信報警
define command {
command_name service-notify-by-sms
command_line /usr/local/bin/sms_send 「‘$HOSTADDRESS$’ $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$」 $CONTACTPAGER$
}
vi timeperiods.cfg //定義監控時間段,名稱是24*7,監控時間是全天24小時
define timeperiod{
timeperiod_name 24×7 //時間段的名稱,這個地方不要有空格
alias 24 Hours A Day,7Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
vi contacts.cfg //定義聯繫人
define contact {
contact_name sa //不要有空格
alias system administrator
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands service-notify-by-sms,service-notify-by-email //命令讀配置miscommands.cfg
host_notification_commands host-notify-by-email,host-notify-by-sms //命令讀配置miscommands.cfg
email
[email]test@nagios.org[/email]
pager 13800138000
}
define contact {
contact_name nagios
alias system administrator
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands service-notify-by-sms,service-notify-by-email
host_notification_commands host-notify-by-email,host-notify-by-sms
email
[email]test@nagios.org[/email]
pager 13800138000
}
//若是不須要手機報警的話,則改爲以下:
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
//上面的文件定義了2個聯繫人,若是有更多聯繫人的話,照這個格式在後面追加便可。
//服務通知選項(service_notification_options)
//與主機通知選項(host_notification_options)的幾個選項在這裏說明一下:
//w-warning 報警,u-unknown 未知,c-critical 嚴重,r-recovery 從異常狀況恢復正常,d-down 關機了,u-unreachable 不可達,注意一下,主機報警和服務報警有些差別。
vi contactgroups.cfg //將多個聯繫人定義一個聯繫人組
define contactgroup{
contactgroup_name sagroup
alias System Administrators
members nagios,sa
}
vi hosts.cfg //定義被監控主機
define host {
host_name nagios-server
alias nagios server
address 192.168.0.1
contact_groups sagroup //多個聯繫組用逗號分隔,數據來源於contactgroups.cfg
check_command check-host-alive //這個命令來自commands.cfg,用來監控主機是否存活
max_check_attempts 5 //檢查失敗後重試的次數
notification_interval 10 //提醒的時間,每隔10秒提醒一次
notification_period 24×7 //提醒的週期,24*7,來自以前timeperiods.cfg中定義的
notification_options d,u,r //指定什麼狀況下提醒,來自contacts.cfg中定義的
}
define host {
host_name linux-server
alias nagios test client
address 192.168.0.2
contact_groups sagroup
check_command check-host-alive
max_check_attempts 5
notification_interval 10
notification_period 24×7
notification_options d,u,r
}
vi hostgroups.cfg //將多個主機定義一個主機組
define hostgroup{
hostgroup_name sa-servers //主機組名稱
alias sa Servers //別名
members nagios-server,linux-server //組的成員主機,多個主機以逗號相隔,必須是上面hosts.cfg中定義的
}
vi services.cfg //定義監控的服務
define service{
host_name nagios-server //要監控的主機,必須是hosts.cfg 中定義的
service_description check-host-alive //定義的是監控這個主機是否是存活
check_command check-host-alive //所用的命令,是commands.cfg中定義的
check_period 24×7 //監控的時間段,是timeperiods.cfg中定義的
max_check_attempts 5
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup //聯繫人組,contactgroups.cfg中定義的
notification_interval 10
notification_period 24×7 //通知的時間段,是timeperiods.cfg中定義的
notification_options w,u,c,r //在監控的結果是wucr時通知聯繫人
}
define service {
host_name linux-server
service_description check_tcp 80
check_period 24×7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24×7
notification_options w,u,c,r
check_command check_tcp!80 //檢查tcp 80端口服務是否正常
}
//書寫時要注意的是,check_tcp與要監控的服務端口之間要用」!」作分隔符,若是服務太多,以考慮用腳原本生成。
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg //檢查全部配置文件的正確性,確保這一部的warning 和 error 爲0
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg //做爲守護進程後臺啓動nagios
echo 「/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg」 >> /etc/rc.local //開機自動運行
使用命令和插件監控更多信息
/usr/local/nagios/libexec //插件默認的安裝路徑
./check_disk -w 10% -c 5% / //檢查根分區的使用狀況,若剩餘10%如下,爲警告狀態(warning),若剩餘 5%如下,爲嚴重狀態(critical)
七、使用NRPE監控Linux上的本地信息
對系統爲Linux的主機進行以下監控:CPU負載,磁盤容量,登錄用戶數,總進程數,殭屍進程數,swap分區使用狀況。
#useradd nagios
#passwd nagios
#tar zxvf nagios-plugins-1.4.9.tar.gz
#cd nagios-plugins-1.4.9
#./configure –prefix=/usr/local/nagios
#make
#make install
#chown nagios.nagios /usr/local/nagios
#chown -R nagios.nagios /usr/local/nagios/libexec/
#tar zxvf nrpe-2.8.1.tar.gz
#cd nrpe-2.8.1
#./configure //NRPE port: 5666
#make all
#make install-plugin //監控機須要安裝check_nrpe這個插件,被監控機並不須要
#make install-daemon //安裝daemon
#make install-daemon-config //安裝配置文件
#/usr/local/nagios/bin/nrpe -c -n /etc/nrpe.cfg -d
將NRPE daemon做爲xinetd下的一個服務運行
yum -y install xinetd
service xinetd start
chkconfig –level 3 xinetd on
make install-xinetd //安裝xinetd腳本
vi /etc/xinetd.d/nrpe
only_from = 127.0.0.1 192.168.4.226 //在後面增長監控主機的地址,以空格間隔
增長nrpe服務
vi /etc/services
nrpe 5666/tcp #nrpe //增長這一行
重啓xinetd服務
service xinetd restart
netstat -at | grep nrpe //查看NRPE是否已經啓動
netstat -an | grep 5666 //查看5666端口是否被監聽
vi /etc/sysconfig/iptables //增長一條5666的端口
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 5666 -j ACCEPT
在被監控機器上測試一下NRPE是否正常工做
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 //測試NRPE是否正常工做
NRPE v2.8.1 //正常的結果會顯示當前NRPE的版本號
/usr/local/nagios/libexec/check_nrpe –h //查看這個命令的用法
能夠看到用法是check_nrpe –H 被監控的主機 -c 要執行的監控命令
注意:-c後面接的監控命令必須是nrpe.cfg文件中定義的,也就是NRPE daemon只運行nrpe.cfg中所定義的命令。
查看NRPE的監控命令
cd /usr/local/nagios/etc
vi nrpe.cfg
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
[]中是命令名,也就是check_nrpe的-c參數能夠接的內容,=後面是實際執行的插件程序。
好比,我如今要監控硬盤的狀況,加入如下內容:
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/sda1
command[check_hda3]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/sda3
因此以上nrpe.cfg配置的命令用法以下:
# check_nrpe -H 127.0.0.1 -c check_hda1
DISK OK - free space: /boot 77 MB (82% inode=99%);| /boot=16MB;78;88;0;98
# check_nrpe -H 127.0.0.1 -c check_hda3
DISK OK - free space: / 134960 MB (97% inode=99%);| /=3322MB;145789;145799;0;145809
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_users //檢測登錄用戶數
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_load //CPU負載
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_zombie_procs //殭屍進程
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_total_procs //總進程數
//check_load -w 15,10,5 -c 30,25,20
//在unix裏面負載的均值一般表示是1分鐘,5分鐘,15分鐘內平均有多少進程處於等待狀態
//當1分鐘多於15個進程等待,5分鐘多於10個,15分鐘多於5個則爲warning狀態
//當1分鐘多於30個進程等待,5分鐘多於25個,15分鐘多於20個則爲critical狀態
在commands.cfg中增長對check_nrpe的定義
vi /usr/local/nagios/etc/commands.cfg
# ‘check_nrpe’ command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
//command_name check_nrpe 定義命令名稱爲check_nrpe,在services.cfg中要使用這個名稱
//command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 定義實際運行的插件程序
接下來能夠在services.cfg中定義對主機CPU負載的監控,注意機器必須是LINUX系統,而且安裝了NRPE。
vi services.cfg
define service {
host_name linux-server
service_description check-load
check_period 24×7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24×7
notification_options w,u,c,r
check_command check_nrpe!check_load
}
在被監控機上增長check_swap命令的定義
vi /usr/local/nagios/etc/nrpe.cfg
增長下面這一行
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
//若是在被監控機上是以daemon運行的nrpe,則須要手動重啓
//若是在被監控機上是以xinetd運行的,則不須要
在監控機上增長這個監控項目:
vi /etc/services.cfg
define service {
host_name linux-server
service_description check-swap
check_period 24×7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24×7
notification_options w,u,c,r
check_command check_nrpe!check_swap
}
重啓nagios服務
killall nagios
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
八、Windows服務器客戶端安裝步驟
A. 從
[url]http://sourceforge.net/projects/nrpent/[/url]下載nrpe_nt.0.8b-bin-NoSSL.zip,解壓
B. 從
[url]http://www.nagiosexchange.org/cgi-bin/page.cgi?g=Detailed%2F2131.html;d=1[/url]下載nrpe_nt_plugins.zip,並放於C:\nrpe_nt\plugins\目錄
C. 解壓後,,行NRPE_NT.exe -i -n 安裝服務
D. 編輯nrpe.cfg,大概內容以下:
server_port=5666
allowed_hosts=192.168.0.2
dont_blame_nrpe=0
debug=1
command_timeout=30
loglevel=4
use_win_metachars=1
command[check_cmd]=e:\NRPE_NT\test.cmd
command[nt_check_disk_c]=C:\nrpe_nt\plugins\diskspace_nrpe_nt.exe c: 70 90
command[nt_check_disk_d]=C:\nrpe_nt\plugins\diskspace_nrpe_nt.exe d: 70 90
command[nt_check_disk_e]=C:\nrpe_nt\plugins\diskspace_nrpe_nt.exe e: 70 90
command[nt_cpuload]=C:\nrpe_nt\plugins\cpuload_nrpe_nt.exe 50 80
command[nt_memload]=C:\nrpe_nt\plugins\memload_nrpe_nt.exe 70 90
command[nt_service]=C:\nrpe_nt\plugins\service_nrpe_nt.exe 「Event Log,DNS Client」
command[nt_eventlog]=C:\nrpe_nt\plugins\eventlog_nrpe_nt.exe -m 7200 -s 「Service Control Manager」
E. 找相關目錄裏面啓動服務便可,若是有防火牆要開放5666端口
前言:
一、nagios是一個很是好的系統監控工具,如今個人nagios系統已經正常運行,使用短信貓和郵件能夠報警,使用飛信能夠節約咱們的短信貓和短信費用。
二、飛信首先手機要開通中國移動的飛信業務,目前使用飛信發送短信是免費的,須要把接受短信的手機和飛信發送手機加爲好友。
三、下載飛信的Linux客戶端程序,解開包後只有一個文件sms。不錯,這個就是飛信發送短信的程序。如今的飛信仍是不能用的,由於它須要libace的glibc庫的支持。
飛信程序測試:
一、飛信命令測試:
# wget
[url]http://www.it-adv.net/fetion/fetion_linux_20080402.tar.gz[/url]
# tar xvfz fetion_linux_20080402.tar.gz
# cp sms /usr/bin
# sms -h
sms -f mobile -p pwd -t mobile1,.. -m message -a message -d
sms -f mobile -p pwd -t mobile1,.. -i file_name[utf8] -a invite_message -d 1
-f:Fetion mobile account(only supports mobile phone No.)
-p:Account password
-t:Destination mobile list
-m:Message
-i:File name(only supports utf8)
-a:Auto send invite using invite_message.
-d:Debug on.
若是沒有安裝lib庫,將會提示缺乏libACE.so.5.4.7包
解決缺乏lib庫的方法
說明:在CentOS5下裝提示須要libACE.so.5.4.7這個庫,千萬不要本身去安裝ACE包,很麻煩,官方已經給了Liunx的下載版本:
一、先檢查一下缺乏的lib文件
[root@nagios libexec]# ldd sms
linux-gate.so.1 => (0×00b00000)
libACE.so.5.4.7 => not found
libACE_SSL.so.5.4.7 => not found
libssl.so.0.9.8 => not found
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0×02a05000)
libm.so.6 => /lib/libm.so.6 (0×00cd4000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0×029f7000)
libc.so.6 => /lib/libc.so.6 (0×00b92000)
/lib/ld-linux.so.2 (0×001c3000)
二、下載lib庫
32位官方lib庫:
[url]http://www.it-adv.net/fetion/library32.rar[/url]
64位官方lib庫:
[url]http://www.it-adv.net/fetion/library64_linux.tar.gz[/url]
三、安裝lib庫
# ls
libACE.so.5.4.7 libACE_SSL.so.5.4.7 libcrypto.so.0.9.8 libssl.so.0.9.8
# cp *.* /lib/
# cp *.* /usr/lib/
四、測試sms:
[root@nagios libexec]# ./sms
************************ IMPORTANT STATEMENT ************************
** **
** PLEASE DON’T USE THIS SOFTWARE TO SEND JUNK SHORT MESSAGES. **
** OTHERWISE PLEASE BEAR YOUR OWN CONSEQUENCES. **
** **
** [version:2008-4-2] **
*********************************************************************
This program is for sending short messages via CMCC Fetion!
[url]http://www.fetion.com.cn/[/url]
AUTHOR:KelvinHan MSN/EMAIL:shichangguo@msn.com 2008/3/8
Usage:
sms -f mobile -p pwd -t mobile1,.. -m message -a message -d
sms -f mobile -p pwd -t mobile1,.. -i file_name[utf8] -a invite_message -d 1
-f:Fetion mobile account(only supports mobile phone No.)
-p:Account password
-t:Destination mobile list
-m:Message
-i:File name(only supports utf8)
-a:Auto send invite using invite_message.
-d:Debug on.
nagios飛信測試
一、須要註冊一個可使用飛信的手機號碼,測試期間能夠本身發送給本身作測試。
二、給別的手機發飛信,須要給把手機綁定爲好友。
三、飛信環境解決了,發短信測試一下(136933XXXXX爲發飛信的註冊手機號碼,136833XXXXX、36733XXXXX爲接收飛信短信的手機號碼)。
# ./sms -f 136933XXXXX -p password -t 136833XXXXX -m hello,this is test
//也能夠發送一個文本文件,如 message.txt
#./sms -f 136933XXXXX -p password -t 136833XXXXX,136733XXXXX -i message.txt
//若是接收短信的手機號碼在你的好友列表裏,就會發送成功。
//若是不在好友列表裏,發送是不成功的。若是你想讓程序邀請他們加入,那麼就用 -a 參數
sms -f 136933XXXXX -p password -t 136833XXXXX,136733XXXXX -m 你好,飛信 -a UBUNTU
//這樣,對方就會收到移動發的確認短信。
nagios的配置
一、nagios命令配置commands.cfg:
# vi /usr/local/nagios/etc/commands.cfg
define command{
command_name notify-service-by-sms
command_line /usr/bin/sms -f 13901111111 -p 562128 -t $CONTACTPAGER$ -m 「$HOSTNAME$ $SERVICEDESC$ is $SERVICESTATE$
on $TIME$ result is $SERVICEOUTPUT$」 $CONTACTPAGER$
}
二、nagios聯繫人配置contacts.cfg:
# vi /usr/local/nagios/etc/contacts.cfg
define contact{
contact_name sa
alias system admin
host_notification_period 24×7
service_notification_period 24×7
host_notification_options d,r,
service_notification_options c,w,r
service_notification_commands notify-service-by-email,notify-service-by-sms
# service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
# email
[email]test@nagios.org[/email] pager 13800138000 }