前言:
nagios是目前比较流行的一款开源监控软件,主要通过强大的插件来实现各种监控需求,下面介绍一下简单的部署方法。
一、服务端安装主程序
1、先去下载nagios-cn-3.2.3.tar.bz2
[root@book tmp]# wget http://sourceforge.net/projects/nagios-cn/files/sourcecode/zh_CN%203.2.3/nagios-cn-3.2.3.tar.bz2/download
2、解压
[root@book tmp]# tar jxf nagios-cn-3.2.3.tar.bz2
3、安装
[root@book tmp]# useradd nagios
[root@book tmp]# mkdir /usr/local/nagios
[root@book tmp]# cd nagios-cn-3.2.3
[root@book nagios-cn-3.2.3]# ./configure --prefix=/usr/local/nagios
[root@book nagios-cn-3.2.3]# make all
[root@book nagios-cn-3.2.3]# make install //安装主程序
[root@book nagios-cn-3.2.3]# make install-init //在/etc/rc.d/init.d安装启动脚本
[root@book nagios-cn-3.2.3]# make install-commandmode //配置目录权限
[root@book nagios-cn-3.2.3]# make install-config //安装示例配置文件
4、验证安装是否成功
首先切换到安装路径,看是否存在etc,bin,sbin,share,var这五个目录,如果存在就说明程序正常安装了。以下对五个目录的功能做简要说明:
bin:nagios执行程序所在的目录,nagios文件即为主程序。
etc:nagios配置文件目录,当make install-config完以后etc下面就会出现默认的配置文件。
sbin:nagios CGI文件所在目录,这里存放的是一些外部命令执行程序。
share:nagios网页文件目录,存放一些html文件。
var:nagios日志文件、spid等文件目录。
5、安装插件nagios-plugins
[root@book tmp]# tar zxf nagios-plugins-1.4.13.tar.gz
[root@book tmp]# cd nagios-plugins-1.4.13
[root@book nagios-plugins-1.4.13]# ./configure --prefix=/usr/local/nagios
[root@book nagios-plugins-1.4.13]# make
[root@book nagios-plugins-1.4.13]# make install
这个装完之后会在/usr/local/nagios/多出一个libexec的文件夹,这里存放nagios所要用到的所有插件.
6、修改apache配置
修改apache的配置文件,增加nagios的目录,并且访问此目录需要进行身份验证。
vim /etc/httpd/conf/httpd.conf 在最后增加以下内容:
ScriptAlias "/nagios/cgi-bin" "/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.users
Require valid-userAlias /nagios "/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.users
Require valid-user增加验证用户:此用户是通过web访问nagios的时候,要输入的用户名和密码,这里咱们用admin,密码为oracle
[root@book nagios-plugins-1.4.13]# htpasswd -c /usr/local/nagios/etc/htpasswd.users belt
New password:
Re-type new password:
Adding password for user admin
这个时候重启下apache:
[root@book nagios-plugins-1.4.13]# service httpd restart
这个时候通过web就可以访问nagios了,当然没有什么功能,只能看到一个壳子。web地址就是http://IP/nagios IP就是本机的IP,打开后会弹出一个对话框让你输入用户名和密码,如果没有,则表示这之前后错误,排除后再往下进行。
tar xf httpd-2.2.16.tar
cd httpd-2.2.16
./configure --prefix=/usr/local/apache
make
make install
vi /usr/local/apache/conf/httpd.conf
netstat -antlp|grep 80
二、安装及配置客户端
Nagios客户端只需安装nagios-plugins和nrpe就可以的。
安装nagios-plugins
[root@book nagios]# useradd nagios -s /sbin/nologin -M [root@book nagios]# mkdir /usr/local/nagios [root@book nagios]# tar zxvf nagios-plugins-1.4.13.tar.gz [root@book nagios]# cd nagios-plugins-1.4.13 [root@book nagios-plugins-1.4.13]# ./configure --prefix=/usr/local/nagios [root@book nagios-plugins-1.4.13]# make && make install
安装nrpe
cp public-yum-el5.repo /etc/yum.repos.d/ openssl-devel DNS: vi /etc/resolv.conf nameserver XXX.XXX.XX.XX [root@book nagios]# tar zxvf nrpe-2.8.1.tar.gz [root@book nagios]# cd nrpe-2.8.1 [root@book nrpe-2.8.1]# ./configure --prefix=/usr/local/nagios [root@book nrpe-2.8.1]# make all [root@book nrpe-2.8.1]# make install-plugin [root@book nrpe-2.8.1]# make install-daemon //安装守护进程 [root@book nrpe-2.8.1]# make install-daemon-config //安装配置文件 [root@book nrpe-2.8.1]# make install-xinetd //安装xinetd脚本 [root@book nagios-plugins-1.4.13]# chown -R nagios.nagios /usr/local/nagios/
3、配置nrpe
[root@book nrpe-2.8.1]# vim /etc/xinetd.d/nrpe # default: on # description: NRPE (Nagios Remote Plugin Executor) service nrpe { flags = REUSE socket_type = stream port = 5666 wait = no user = nagios group = nagios server = /usr/local/nagios/bin/nrpe server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd log_on_failure += USERID disable = no only_from = 127.0.0.1 }
这里面只需要改动一个地方,only_from后面应该跟上nagios主程序安装的主机所在IP。
4、编辑/etc/services文件,增加NRPE服务root@book nrpe-2.8.1]# vim /etc/services
在最后一行加入以下内容
nrpe 5666/tcp #nrpe
接着重启xinetd服务
[root@book nrpe-2.8.1]# service xinetd restart 停止 xinetd: [确定] 启动 xinetd: [确定]
5、检查nrpe是否正常工作
检查nrpe是否正常监听端口了[root@book nrpe-2.8.1]# netstat -at|grep nrpe tcp 0 0 *:nrpe *:* LISTEN
出现上面面的结果代表已经正常监听端口了
检查nrpe正常工作[root@book nrpe-2.8.1]# /usr/local/nagios/libexec/check_nrpe -H localhost NRPE v2.8.1
返回nrpe的版本则说明正常工作
3-4不做,不用xinetd方式启动clientvi /usr/local/nagios/etc/nrpe.cfg
修改allow_hosts
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
三、配置服务端
大部分配置文件都在/usr/local/nagios/etc目录下。
1、配置nagios.cfg文件(默认是不需要配置的)log_file=/usr/local/nagios/var/nagios.log //记录nagios日志的地址,默认不需要改动。 cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径 cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径 cfg_file=/usr/local/nagios/etc/commands.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 //监视时段配置文件路径
首先到/usr/local/nagios/etc/cgi.cfg里面去修改一个参数
use_authentication
默认是1,我们需要改成0,这个表示取消验证。如果不配置,那nagios虽然可以正常启动,但在页面上会报错:无权查看任何主机的信息。请检查HTTP服务器关于该CGI的访问权限设置。
2、配置hosts.cfg
这个文件里面配置被监控的主机信息,即需要监控哪台主机就要在这里加入那台主机的信息。默认/usr/local/nagios/etc下是没有hosts.cfg文件的,要手工创建一个,当然也可以是别的名称,但要和nagios.cfg里面对应主机配置文件路径指定的文件名称一致。下面举例hosts.cfg里的具体内容:define host{ use linux-server host_name book alias 233 address 192.168.4.233 }
use后面就写linux-server不要动了,host_name就是被监控的主机名了,alias是在监控页面显示的这个主机的名称,可以随便写,但是你自己看了这个名称要知道它代表的是哪台主机,address就是这个主机的IP地址
3、配置contacts.cfg
这个文件配置是联系人的信息,即当监控的对象出问题的时候nagios程序告知的联系人。默认这个文件也是不存在的,手工创建,下面输入具体内容:define contact{ contact_name nagiosadmin use generic-contact alias Nagios Admin host_notification_commands notify-host-by-fetion,notify-host-by-email service_notification_commands notify-host-by-fetion,notify-host-by-email email XXX@XX.COM,X@X.COM pager 13111111111,1312222222 }
contact_name就是指定这个联系人的名称(当然联系人可以不止一个),use后面的就写generic-contact,alias还是在监控页面看到的联系人名称,service_notification_commands指定了当出现故障的时候怎么通知联系人,notify-host-by-fetion代表通过飞信发短信,notify-host-by-email代表发邮件。email后面跟的就是要邮件通知的联系人组了,pager后面跟的是发短信通知的号码。
4、配置timeperiods.cfg
这个定义了监控的时间段,默认也是没有,要手工创建,一般都是7*24小时监控,下面是具体内容:define timeperiod{ timeperiod_name 24x7 alias 24 Hours A Day, 7 Days 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 }
5、配置command.cfg
这个文件比较重要了,装完主程序之后在/usr/local/nagios/etc/objects目录下有个默认的例子,它定义了nagios去监控的命令,例如:define command{ command_name check-host-alive command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5 }
这个command_name是留别的文件和程序来调用的,command_line就指定了这条命令到底做了什么事,我们从命令可以看出他是检测了主机是否存活。像前面contacts.cfg里面有一行定义的service_notification_commands后面跟的两个参数都是需要在command.cfg里面进行定义的,不然就会报错,下面是关于notify-host-by-fetion和notify-host-by-email的相关定义:
define command{ command_name notify-host-by-fetion command_line /usr/local/autofetion/autofetion/fetion --sid=飞信账号 --pwd=飞信密码 --to=$CONTACTPAGER$ --msg-gb="Host $HOSTSTATE$ alert for $HOSTNAME$! on '$LONGDATETIME$'" $CONTACTPAGER$ } define command{ command_name notify-service-by-fetion command_line /usr/local/autofetion/autofetion/fetion --sid=飞信账号 --pwd=飞信密码 --to=$CONTACTPAGER$ --msg-gb="'$HOSTADDRESS$' $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ on '$LONGDATETIME$' " $CONTACTPAGER$ } define command{ command_name notify-host-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$ } define command{ command_name notify-service-by-email command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ }
直接复制到command.cfg文件末尾即可。
6、配置services.cfg
这个算是nagios最重要的一个配置文件了,没这个文件nagios什么都不会做,它里面定义了nagios去监控哪些机器,哪些内容,以及什么时候监控,还有遇到错误通知哪些联系人。这样看来,前面的配置文件都只是铺垫。
下面举个例子来说明:define service{ host_name book service_description check-host-alive1111 check_command check-host-alive max_check_attempts 5 check_interval 5 retry_interval 3 check_period 24x7 notification_interval 30 notification_period 24x7 notification_options w,c,r contact_groups nagiosadmin }
host_name即为要监控的主机名,这个名称要在hosts.cfg里面有定义,不然会找不到,check_command就是怎么去监控,同样这个命令在command.cfg里需要有定义,check_period这个是监控时间段,后面的名称24x7同样是咱们在前面timeperiods.cfg定义过的,contact_groups就更不用说了,后面跟的就是监控到故障后通知的联系人,就是咱们在contacts.cfg里面定义的。像别的参数都可以默认即可,例如retry_interval 3代表并不是一监控到故障立马报警,而是联系三次监控到故障才报警。
再举个监控硬盘的例子:define service{ host_name book service_description check_local_disk check_command check_local_disk!/dev/sda max_check_attempts 5 check_interval 5 retry_interval 3 check_period 24x7 notification_interval 30 notification_period 24x7 notification_options w,c,r contact_groups nagiosadmin }
nagios就是靠在service里面定义的一个又一个service来工作的。
7、安装飞信机器人[root@book nagios]# tar zxvf fetion20091117-linux.tar.gz [root@book nagios]# mv install /usr/local/fetion k [root@book nagios]# chmod -R 755 /usr/local/fetion [root@book nagios]# chown -R nagios:nagios /usr/local/fetion [root@book nagios]# ln -s /usr/local/fetion/libACE-5.7.2.so /usr/lib/libACE-5.7.2.so [root@book nagios]# ln -s /usr/local/fetion/libACE_SSL-5.7.2.so /usr/lib/libACE_SSL-5.7.2.so [root@book nagios]# ln -s /usr/local/fetion/libcrypto.so.4 /usr/lib/libcrypto.so.4 [root@book nagios]# ln -s /usr/local/fetion/libssl.so.4 /usr/lib/libssl.so.4
四、启动nagios
启动之前需要测试一下配置文件有没有什么错误,用以下命令:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
看到下面这些信息就说明没问题了
Total Warnings: 0 Total Errors:0
作为守护进程后台启动nagios:
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
然后就可以登陆到http://IP/nagios观察了
监控oracle部分:
在客户端:usermod -G oinstall nagios
把oracle_home,path,sid变量添加到/usr/local/nagios/libexec/check_oracle脚本里去
export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export PATH=/usr/java/jdk1.5.0_16/bin:$ORACLE_HOME/bin:$PATH export ORACLE_SID=db10g
后面各个参数的含义见./check_oracle -h
在oracle数据库里添加一个用来监控的用户并给以下视图的select权限:grant select on dba_data_files to belt; dba_free_space dba_temp_files v_$temp_extent_pool connect
如果要监控cache 请允许查询 v_$sysstat and v_$librarycache
在nrpe.cfg里加入:command[check_oracle_tns]=/usr/local/nagios/libexec/check_oracle --tns orcl belt oracle command[check_oracle_login]=/usr/local/nagios/libexec/check_oracle --login orcl belt oracle command[check_undo]=/usr/local/nagios/libexec/check_oracle --tablespace orcl belt oracle UNDOTBS1 90 70
在服务端command.cfg里加入:
define command{ command_name check_nrpe2 command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$ }
在services里加入
define service{ use generic-service host_name book service_description oracle_listener check_command check_nrpe2!check_oracle_tns max_check_attempts 5 check_interval 5 retry_interval 3 check_period 24x7 notification_interval 30 notification_period 24x7 notification_options w,c,r contact_groups nagiosadmin } define service{ use generic-service host_name Ora-IDC107 service_description oracle_tablespace_undo check_command check_nrpe2!check_undo max_check_attempts 5 check_interval 5 retry_interval 3 check_period 24x7 notification_interval 30 notification_period 24x7 notification_options w,c,r contact_groups nagiosadmin } define service{ use generic-servicedefine service{ use generic-service host_name Ora-IDC107 service_description oracle_login check_command check_nrpe2!check_oracle_login max_check_attempts 5 check_interval 5 retry_interval 3 check_period 24x7 notification_interval 30 notification_period 24x7 notification_options w,c,r contact_groups nagiosadmin } }
在服务端测试客户端命令为:
/usr/local/nagios/libexec/check_nrpe -H
客户端IP -c check_oracle_tns
(这个命令就是在客户端nrpe.cfg里定义的命令) -t 60 (超时的时间,不加的话默认是10秒)
评论