Nagios搭建與139郵箱短信報警設置
最近因爲工作需要搭建nagios,初次接觸,看了很多網上很多nagios的教程,歷盡千辛萬苦最終搭建了一個簡單的nagios,結合網上的教程我把自己做的配置貼出來,有錯誤歡迎指正
一:環境準備
由於要搭建的nagios主機是一個裸機,所以搭建nagios監控系統前需要搭建一個簡單的LAMP平臺,
這裏我就直接用yum安裝了
yum -y install http* mysql* php-*
對於英語不好的我,每做完一步我就喜歡用echo $? 驗證一下 看看返回值是不是0 如果是0說明操作正確,否則錯誤,這種方法對我很實用,誰讓英語差呢!
[root@localhost ~]# service httpd start
啓動 httpd: [確定]
[root@localhost ~]# chkconfig httpd on
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
231 User apache
232 Group apache
391 DirectoryIndex index.php index.html index.html.var
992 #setting for nagios
993 ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
994 <Directory "/usr/local/nagios/sbin">
995 AuthType Basic
996 Options ExecCGI
997 AllowOverride None
998 Order allow,deny
999 Allow from all
1000 AuthName "nagios access"
1001 AuthUserFile /usr/local/nagios/etc/htpasswd
1002 Require valid-user
1003 </Directory>
1004 Alias /nagios "/usr/local/nagios/share"
1005 <Directory "/usr/local/nagios/share">
1006 AuthType Basic
1007 Options ExecCGI
1008 AllowOverride None
1009 Order allow,deny
1010 Allow from all
1011 AuthName "nagios access"
1012 AuthUserFile /usr/local/nagios/etc/htpasswd
1013 Require valid-user
1014 </Directory>
創建apache目錄的驗證文件touch /usr/local/nagios/etc/htpasswd
添加用戶
[root@localhost ~]# htpasswd -c /usr/local/nagios/etc/htpasswd cainiao
二:nagios安裝
(1)創建nagios程序用戶、組
[root@localhost ~]# useradd -s /sbin/nologin nagios
[root@localhost ~]# mkdir /usr/local/nagios/
[root@localhost ~]# chown -R nagios:nagios /usr/local/nagios/
( 2) 安裝和編譯nagios
搭建nagios所需要的軟件已經放在/nagios
[root@localhost nagios]# tar zxf nagios-3.2.0.tar.gz
[root@localhost nagios]# cd nagios-3.2.0
[root@localhost nagios-3.2.0]# ./configure --prefix=/usr/local/nagios/
[root@localhost nagios-3.2.0]# make all ; make install ; make install-init ; make install-commandmode ; make install-config
[root@localhost nagios-3.2.0]# chkconfig --add nagios
[root@localhost nagios-3.2.0]# chkconfig nagios on
(3)安裝nagios插件
[root@localhost nagios]# tar zxf nagios-plugins-1.4.14.tar.gz
[root@localhost nagios]# cd nagios-plugins-1.4.14
[root@localhost nagios-plugins-1.4.14]# ./configure --prefix=/usr/local/nagios/ ; make ; make insta
(4)安裝Nagios的漢化包
[root@localhost nagios]# tar jxf nagios-cn-3.2.0.tar.bz2
[root@localhost nagios]# cd nagios-cn-3.2.0
[root@localhost nagios-cn-3.2.0]# ./configure ; make all ; make install
接下來通過瀏覽器驗證nagios是否安裝成功
http:.//nagios的ip/nagios 這裏就假如nagios的服務器的ip是:192.168.1.1
用戶就是剛纔新建的 cainiao 密碼是剛纔新建此用戶的輸入的
接下來就是難點了
三:nagios服務器配置過程
這裏先說一下nagios的幾個配置文件的作用
Nagios默認有如下幾個配置文件修改:
# ll /usr/local/nagios/etc/objects
commands.cfg 設定默認的指令來執行某個監控,也可以自己設定
contacts.cfg 設定聯繫人,出問題時的聯繫人與聯繫組
localhost.cfg 設定對本服務器的監控,配置其他服務時可參考此文件
timeperiods.cfg 設定週一至週五7X24小時不間斷,或自定義其他時間段
hosts.cfg 設定被監控的主機(自己創建)
services.cfg 設定被監控的服務(自己創建)
(1) 定義hosts.cfg文件
[root@localhost ~]# cd /usr/local/nagios/etc/
[root@localhost etc]# vim hosts.cfg
define host{
use linux-server
host_name web
alias benet-web
address 192.168.1.100
define host{
use linux-server
host_name mysql
alias benet-mysql
address 192.168.1.200
}
define hostgroup{
hostgroup_name sa-servers
alias sa servers
members web,mysql
}
( 2 )定義services.cfg
################- yuanlin web -##########################
define service{
use local-service
host_name web
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service{
use local-service
host_name web
service_description SSH
check_command check_ssh
}
define service{
use local-service
host_name web
service_description SSHD
check_command check_tcp!22
}
define service{
use local-service
host_name web
service_description http
check_command check_http
}
####################- yuanlin MYSQL -##########################
define service{
use local-service
host_name mysql
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service{
use local-service
host_name mysql
service_description SSH
check_command check_ssh
}
define service{
use local-service
host_name mysql
service_description ftp
check_command check_ftp
}
define service{
use local-service
host_name mysql
service_description mysqlport
check_command check_tcp!3306
}
(3) 定義cgi.cfg
[root@localhost etc]# cd /usr/local/nagios/etc/
[root@localhost etc]# vim cgi.cfg
107 default_user_name=benet
119 authorized_for_system_information=nagiosadmin,cainiao
131 authorized_for_configuration_information=nagiosadmin,cainiao
144 authorized_for_system_commands=cainiao
157 authorized_for_all_services=nagiosadmin,cainiao
158 authorized_for_all_hosts=nagiosadmin,cainiao
171 authorized_for_all_service_commands=nagiosadmin,cainiao
172 authorized_for_all_host_commands=nagiosadmin,cainiao
定義nagios.cfg
[root@localhost etc]# vim nagios.cfg
19 log_file=/usr/local/nagios/var/nagios.log
30 cfg_file=/usr/local/nagios/etc/hosts.cfg
31 cfg_file=/usr/local/nagios/etc/services.cfg
32 cfg_file=/usr/local/nagios/etc/commands.cfg
33 cfg_file=/usr/local/nagios/etc/contacts.cfg
34 cfg_file=/usr/local/nagios/etc/timeperiods.cfg
35 cfg_file=/usr/local/nagios/etc/templates.cfg
[root@localhost etc]# cd objects/
[root@localhost objects]# cp commands.cfg contacts.cfg timeperiods.cfg templates.cfg localhost.cfg /usr/local/nagios/etc/
四:Nagios的運行和維護
1) 驗證nagios主配置文件的語法正確性
[root@localhost etc]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
2) 啓動與停止nagios
[root@localhost etc]# service nagios start
Starting nagios:This account is currently not available.
done.
[root@localhost etc]# service nagios status
nagios (pid 5106) is running...
[root@localhost etc]# service nagios stop
Stopping nagios: .done.
[root@localhost etc]# service nagios restart
Running configuration check...done.
Stopping nagios: No lock file found in /usr/local/nagios//var/nagios.lock
Starting nagios:This account is currently not available.
done.
一、 Nagios性能分析圖表的實現
1) 安裝PNP支持包rrdtool工具
[root@localhost nagios]# tar zxf rrdtool-1.4.5.tar.gz
[root@localhost nagios]# cd rrdtool-1.4.5
[root@localhost rrdtool-1.4.5]# ./configure --prefix=/usr/local/rrdtool ; make ; make install
2)安裝PNP
[root@localhost rrdtool-1.4.5]# cd /aaa/
[root@localhost nagios]# tar zxf pnp-0.4.13.tar.gz
[root@localhost nagios]# cd pnp-0.4.13
[root@localhost pnp-0.4.13]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool --with-perfdata-di
r=/usr/local/nagios/share/perfdata ; make all ; make install ; make install-config ; make install-init
3) 配置PNP
A,創建默認配置文件
[root@localhost pnp-0.4.13]# cd /usr/local/nagios/etc/pnp/
[root@localhost pnp]# cp process_perfdata.cfg-sample process_perfdata.cfg
[root@localhost pnp]# cp npcd.cfg-sample npcd.cfg
[root@localhost pnp]# cp rra.cfg-sample rra.cfg
[root@localhost pnp]# chown -R nagios:nagios /usr/local/nagios/etc/pnp/
B,修改process_perfdata.cfg
[root@localhost pnp]# vi /usr/local/nagios/etc/pnp/process_perfdata.cfg
44 LOG_LEVEL = 2
4) 修改Nagios主配置文件
A,增加小太陽圖標
[root@localhost pnp]# cd /usr/local/nagios/etc/
[root@localhost etc]# vi templates.cfg
define host{
name hosts-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$
process_perf_data 1
}
define service{
name services-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
process_perf_data 1
}
B、修改nagios.cfg
找到如下幾行去掉註釋
[root@localhost etc]# vi nagios.cfg
833 process_performance_data=1
845 host_perfdata_command=process-host-perfdata
846 service_perfdata_command=process-service-perfdata
C、修改commands.cfg
227 # 'process-host-perfdata' command definition
228 define command{
229 command_name process-host-perfdata
230 command_line /usr/local/nagios/libexec/process_perfdata.pl
231 }
232
233
234 # 'process-service-perfdata' command definition
235 define command{
236 command_name process-service-perfdata
237 command_line /usr/local/nagios/libexec/process_perfdata.pl
238 }
D、修改hosts.cfg文件和services.cfg文件
[root@localhost ~]# vi /usr/local/nagios/etc/hosts.cfg
define host{
use linux-server,hosts-pnp
host_name web
alias benet-web
address 192.168.1.100
}
define host{
use linux-server,hosts-pnp
host_name mysql
alias benet-mysql
address 192.168.1.200
}
define hostgroup{
hostgroup_name sa-servers
alias sa servers
members web,mysql
}
[root@localhost ~]# vi /usr/local/nagios/etc/services.cfg
################- benet web -##########################
define service{
use local-service,services-pnp
host_name web
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service{
use local-service,services-pnp
host_name web
service_description SSH
check_command check_ssh
}
注意項:別心急看小太陽數據,等會兒就有了。
點擊小太陽,出現對主機或服務的監控頁面
五,利用插件擴展Nagios的監控功能
下面我們通過在nagios服務端和客戶端安裝NRPE插件來搭建一個更加完善的Nagios監控系統。
1)配置nagios客戶端(即遠端被監控主機192.168.1.200)
A)安裝Nagios插件
登陸192.168.1.200客戶端
[root@localhost ~]# cd /nagios/
[root@localhost nagios]# useradd -s /sbin/nologin nagios
[root@localhost nagios]# tar zxf nagios-plugins-1.4.14.tar.gz
[root@localhost nagios]# cd nagios-plugins-1.4.14
[root@localhost nagios-plugins-1.4.14]# ./configure ; make ;make install
[root@localhost nagios-plugins-1.4.14]# chown nagios:nagios /usr/local/nagios/
[root@localhost nagios-plugins-1.4.14]# chown -R nagios.nagios /usr/local/nagios/libexec/
B)安裝NRPE插件
[root@localhost nagios]# cd /aaa/
[root@localhost nagios]# tar zxf nrpe-2.12.tar.gz
[root@localhost nagios]# cd nrpe-2.12
[root@localhost nrpe-2.12]# ./configure ; make all ; make install-plugin ; make install-daemon ; make install-daemon-config
C)修改NRPE配置文件
[root@localhost nrpe-2.12]# vi /usr/local/nagios/etc/nrpe.cfg
79 allowed_hosts=127.0.0.1,192.168.1.1(nagios服務器ip)
192.168.6.199:指定nagios服務器地址
D)啓動NRPE
[root@localhost nrpe-2.12]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
[root@localhost nrpe-2.12]# netstat -antl |grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN
E)測試NRPE
[root@localhost nrpe-2.12]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
NRPE v2.12
如果出現NRPE v2.12表明NRPE已經正常工作
定義讓nagios服務器監控我本機上的內容(當前用戶數,CPU,內存,硬盤等信息)
[root@localhost libexec]# vi /usr/local/nagios/etc/nrpe.cfg
199 command[check_users_1]=/usr/local/nagios/libexec/check_users -w 5 -c 10
200 command[check_load_1]=/usr/local/nagios/libexec/check_load -w 15,10,5 - c 30,25,20
201 command[check_sda1_1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10 % -p /dev/sda1
202 command[check_zombie_procs_1]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
203 command[check_total_procs_1]=/usr/local/nagios/libexec/check_procs -w 1 50 -c 200
重啓NRPE
[root@localhost ~]# ps -elf |grep nrpe
5 S nagios 22379 1 0 75 0 - 1243 - 17:59 ? 00:00:00 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
0 R root 22586 4247 0 78 0 - 1039 - 18:09 pts/0 00:00:00 grep nrpe
[root@localhost ~]# kill -9 22379
[root@localhost ~]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
被監控端192.168.1.100與192.168.1.200的步驟一樣,這裏就略過
2配置nagios服務器端
登陸nagios服務器端:192.168.1.1
1)安裝NRPE插件
[root@localhost etc]# cd /aaa/
[root@localhost aaa]# tar zxf nrpe-2.12.tar.gz
[root@localhost aaa]# cd nrpe-2.12
[root@localhost nrpe-2.12]# ./configure ; make ; make install-plugin
2) 測試插件能否取得與客戶端192.168.1.200的聯繫
[root@localhost nrpe-2.12]# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.200
NRPE v2.12
出現NRPE v2.12就證明成功聯繫上客戶端
3)定義一個check_nrpe監控命令
[root@localhost nrpe-2.12]# vi /usr/local/nagios/etc/commands.cfg
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
5) 添加遠程主機監控項
[root@localhost nrpe-2.12]# vi /usr/local/nagios/etc/services.cfg
define service{
use local-service
host_name mysql
service_description users
check_command check_nrpe!check_users
}
define service{
use local-service
host_name mysql
service_description load
check_command check_nrpe!check_load
}
define service{
use local-service
host_name mysql
service_description disk
check_command check_nrpe!check_sda1
}
define servicegroup{
servicegroup_name servergroup
alias server-group
members web,PING,web,SSH,web,SSHD,web,http,mysql,users,mysql,load,mysql,disk
}
6)測試並重新啓動nagios服務
[root@localhost ~]# service nagios restart
139郵件報警和短信報警
首先要去註冊139郵箱,然後收到郵件時手機就會收到郵件
這個配置特別簡單
確定你的sendmail是否運行 service sendmail status
如果沒有安裝就直接 yum -y install sendmail
修改配置文件:contacts.cfg 只需要修改郵箱即可,如果有多個聯繫人可以用逗號隔開