linux安装nagios


前言:
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就可以的。

  1. 安装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
  1. 安装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方式启动client

vi /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秒)

0 分享

您可以选择一种方式赞助本站

支付宝扫码赞助

支付宝扫码赞助

日期: 2014-11-14分类: zabbix,Sys Basics

标签: linux file

发表评论