Nagios监控平台安装和配置

1、  nagios的安装

2.1 准备工作

2.1.1 安装必须的系统软件包

装系统的时候尽量把一些开发库,系统库等安装上,免得后面出现装包老是有问题

同时如果iptables,selinux开了,测试环境的时候尽量把它关了,后续就需要把相应的端口加到防火墙中,参考《防火墙配置》

service iptables stop

setenforce 0

或者在/etc/selinux/config

SELINUX=disabled

软件包主要有:

rpm -q gcc glibc glibccommon gd gddevel

 

2.1.2 下载nagios,httpd等包

http://www.nagios.org/download/

查看nagios系统的版本说明:

http://sourceforge.net/mailarchive/forum.php?thread_name=4CA9592B.7000705%40nagios.org&forum_name=nagios-announce

主要有httpd-2.2.6.tar.gznagios-3.1.0.tar.gznagios-plugins-1.4.13.tar.gz.gznrpe-2.12.tar.gzphp-5.3.5.tar,后期需要完善相关功能的时候再添加,如果要实现记录那些日志的信息,最好安装一个mysql库,将其相关内容写入到表中,以备查阅

 

2.1.3 安装nagios

监控服务器A

添加用户nagios:

useradd nagios

 

触压包并编译:

tar zxvf nagios-3.1.0.tar.gz

cd nagios-3.1.0

mkdir /usr/local/nagios

chown nagios.nagios -R /usr/local/nagios

 

./configure --prefix=/usr/local/nagios/ --enable-redhat-pthread-workaround

make all

make install && make install-init && make install-commandmode && make install-config

验证程序是否被正确安装。切换目录到安装路径(这里是/usr/local/nagios),看是否存在 etc、bin、 sbin、 share、 var这五个目录,如果存在则可以表明程序被正确的安装到系统了。后表是五个目录功能的简要说明:

bin

Nagios执行程序所在目录,nagios文件即为主程序

etc

Nagios配置文件位置,初始安装完后,只有几个*.cfg-sample文件

3版本与2版本区别 对象配置文件都在etc/objects目录下

sbin

Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录

Share

Nagios网页文件所在的目录

Var

Nagios日志文件、spid 等文件所在的目录

var/archives

Empty directory for the archived logs

var/rw

Empty directory for the external command file

 

2.1.4 安装nagios-plugin

tar zxvf nagios-plugins-1.4.13.tar.gz.gz

cd nagios-plugins-1.4.13

./configure --prefix=/usr/local/nagios

make && make install

然后查看下ls /usr/local/nagios/libexec会显示安装的插件文件,即所有的插件都安装在libexec这个目录下

 

2.1.5 apache安装和配置

单独拿出来讲,总是有点特殊性,因为这东西让人走的弯路多,为了减轻别人的负担,俺还是在这边单独来讲下

监控服务器A:

2.1.5.1 安装httpd,php,mysql

为什么这边要加一个php呢?因为nagios的网页程序是用php的,不然到时候就会出现让你痛苦的事,就是打开验证,输入用户和密码以后,不断的提示你没有权限,俺是深受其害,谨记

tar zxvf httpd-2.2.6.tar.gz

cd  httpd-2.2.6

./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-auth-digest=shared

make

make install

bunzip2 php-5.3.5.tar.bz2

cd php-5.3.5

./configure --prefix=/usr/local/php --with-apxs=/usr/local/apache/bin/apxs

会报错,为什么?根据提示就知道了,上面的是相对于apache 1.X版本的,因为apache2.X以上的,所以参数要用如下的:

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs

make

make install

 

2.1.5.2 配置apache以支持php脚本

vi /usr/local/apache/conf/httpd.conf或者是rpm安装的在/etc/httpd目录下

LoadModule php5_module        modules/libphp5.so

AddType application/x-httpd-php .php

AddType application/x-httpd-php .htm

DirectoryIndex index.html index.php

 

2.1.5.3 配置nagiosWEB接口

有二种方法:

方法一:直接在安装nagios make install-webconf 创建一个nagiosadmin的用户用于NagiosWEB接口登录。记下你所设置的登录口令,一会儿你会用到它。 htpasswd ‐c /usr/local/nagios/etc/htpasswd test 重启Apache服务以使设置生效。但记得这边有个特殊的地方,默认那个配置文件是放在/etc/httpd/conf.d/nagios.conf,所以要想把它加到apache中,需要在httpd.conf文件加入如下的语句:

Include /etc/httpd/conf.d/nagios.conf

 

方法二:

apache最后添加如下的语句:

#setting for nagios 20070707

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/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd test

输入密码

生成文件/usr/local/nagios/etc/htpasswd 内容如下:

test:RTfhyrirbvOnk   用户名:密码(加密后)

 

同时需要在/usr/local/nagios/etc/cgi.cfg修改如下的几个参数,把上面的用户加入到里面去,如果有多少用户,以逗号分开

authorized_for_system_information=nagiosadmin,test

authorized_for_configuration_information=nagiosadmin,test

authorized_for_system_commands=nagiosadmin,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

 

2.1.5.4 apache的其它配置

找到httpd.conf文件

grep ^User /usr/local/apache/conf/httpd.conf  结果我这边是如下:

User daemon

因此需要将daemon用户加入到组nagios

usermod -G nagios daemon

如果是其它也采取相应的办法

 

找到#ServerName www.example.com:80     #去掉,并修改成你想要的域名或者IP

我的配置是:ServerName http://10.10.100.200

 

还有一处是:

<Directory />

    Options FollowSymLinks

    AllowOverride None

    Order deny,allow 

    Allow from all    --这边之前是Deny from all,当然也可以根据需要进行配置

</Directory>

至此关于apache的配置完毕,祝大家旅途愉快

 

2、  nagios的配置

为了实现对远程主机的监控,必须借助于nrep功能的强大,用来监控其它服务器,下面就关于nrep的安装和配置进行简单的记录,如下是我的操作过程:

在配置这个之前一定要留意有关nagios的配置文件都是nagios.nagios用户组的,否则后面会出现问题

3.1 监控服务器A的配置

3.1.1 安装nrep

tar zxvf nrpe-2.12.tar.gz

cd nrpe-2.12

./configure --prefix=/usr/local/nagios

make all

make install-plugin

chown -R nagios.nagios /usr/local/nagios/

 

3.1.2 nagios的配置

A:nagios.cfg主配置文件的配置

cfg_file=/usr/local/nagios/etc/objects/commands.cfg

cfg_file=/usr/local/nagios/etc/objects/contacts.cfg

cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg

cfg_file=/usr/local/nagios/etc/objects/templates.cfg

cfg_file=/usr/local/nagios/etc/objects/hosts.cfg

cfg_file=/usr/local/nagios/etc/objects/services.cfg

cfg_file=/usr/local/nagios/etc/objects/contactgroup.cfg

cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

#cfg_file=/usr/local/nagios/etc/objects/windows.cfg

B:command.cfg命令定义文件中添加NRPE命令。

[root@KCentOS5C ~]# vi /usr/local/nagios/etc/objects/commands.cfg

# NRPE Command

define command{

  command_name  nrpe

  command_line  $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$

  }

C:hosts.cfg添加远程主机

define host {

       host_name                  smstest

       alias                      smstest server

       address                    10.10.100.164

       check_command              nrpe!check_load

       max_check_attempts         5

       notification_interval      10

       notification_period        24x7

       notification_options       d,u,r

       contact_groups             admins

       }

D:services.cfg添加服务配置,这边只添加了对负载进行了监控

define service {

        host_name             smstest

        service_description   Load Using Of Remote System

        check_period          24x7

        max_check_attempts    4

        normal_check_interval 3

        retry_check_interval  2

        contact_groups        admins

        notification_interval   10

        notification_period     24x7

        notification_options    w,u,c,r

        check_command        nrpe!check_load

        }

E:contacts.cfg配置联系人信息

define contact{

        contact_name                    nagiosadmin

        use                             generic-contact

        alias                           Nagios Admin

        service_notification_commands   notify-service-by-email

        host_notification_commands      notify-host-by-email

        email                           zhiliang.jiang@sinofriends.com

        }

 

define contact{

        contact_name                    hexin            

        use                             generic-contact 

        alias                           Test Admin     

        service_notification_commands   notify-service-by-sendmsg

        host_notification_commands      notify-host-by-sendmsg

        email                           xin.he@sinofriends.com

        }

F:配置联系人组信息contactgroup.cfg

define contactgroup{

        contactgroup_name       admins

        alias                   Nagios Administrators

        members                 nagiosadmin,hexin

        }

G:时间段配置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

        }

 

 

当配置完以后,通过下面的命令进行上下文配置信息的检查

/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

 

3.1.3 启动nagios

chkconfig --add nagios

chkconfig nagios on

service nagios stop

service nagios start

或者使用命令直接启动

/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg

 

 

3.2 被监控服务器B(LINUX)的配置

需要安装nrepnagios-plugin

3.2.1 编译安装

tar zxvf nrpe-2.12.tar.gz

cd nrpe-2.12

./configure

make all

make install-plugin

make install-daemon

make install-daemon-config

ll /usr/local/nagios/

看下是不是有文件了&_&

 

3.2.2 配置nrep.cfg

vi /usr/local/nagios/etc/nrpe.cfg

#server_address=0.0.0.0

server_address=10.10.100.164  #这是被控端IP地址,在我的环境中就是10.10.100.164

设定系统监听NRPE的网络接口。一般设定具体的IP地址,如果要多个网卡的话就用逗号“,”来分隔多个IP地址。如果要监听系统全部的网络接口的话,可以使用“0.0.0.0”这个表示全部网络接口的特殊地址,但是不可以用通配符“*”

allowed_hosts=10.10.100.200 #这是允许监控服务器IP地址

确认有下面的命令,也是要实现的功能,当不了解这些插件的命令参数的时候,可以使用例如

/usr/local/nagios/libexec/cmd –h 查看帮助

 

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

 

3.2.3 运行守护进程

/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

 

3.2.4 查看运行是否成功

 ps aux | grep nrpe

或者netstat -anp | grep nrpe

 

3.2.5 NRPE加入系统启动脚本中

echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d" >> /etc/rc.d/rc.local

 

3.3 被监控服务器C(windows)的配置

         在用Nagios监控Windows机器的私有服务之前,需要先在机器上安装代理程序。推荐使用NSClient++外部构件,它可以在http://nsclient.org/nscp/downloads找到。如下指令可以安装一个基本的NSClient++外部构件,同时也配置好Nagios来监控这台Windows机器。

3.3.1 C服务器下载安装软件包

l         http://nsclient.org/nscp/downloads站点下载最新稳定版的NSClient++软件包;

l         展开软件包到一个目录下,如C:/NSClient++

l         打开一个命令行窗口并切换到C:/NSClient++目录下;

l         用下面命令将NSClient++系统服务注册到系统里:

nsclient++ /install

3.3.2 C服务器配置NSC.INI

编辑NSC.INI 文件(位于C:/NSClient++目录)并做如下修改:

l         去掉在[modules]段里的列出模块程序的注释,除了 CheckWMI.dll RemoteConfiguration.dll

l         最好是修改一下在[Settings]段里的'password'选项,加强安全认证;

l         去掉在[Settings]段里的'allowed_hosts'选项注释,把Nagios 服务所在主机的IP 加到这一行里,或是置为空,让全部主机都可以联入;

l         确认一下在[NSClient]段里的'port'选项里已经去掉注释并设置成'12489'(默认端口)

参考附件:

3.3.3 C服务器启动NSClient++服务

      nsclient++ /start

3.3.4 C服务器检查服务是否启动

通过使用netstat –an就可以看到124895666端口是否已经启动了,当有防火墙的时候,要记得过滤这二个端口

3.3.5 A服务器编辑Nagios 的主配置文件

vi /usr/local/nagios/etc/nagios.cfg

把下面这行最前面的#号去掉:

#cfg_file=/usr/local/nagios/etc/objects/windows.cfg

 

3.3.6 A服务器修改主机和服务的配置文件

vi /usr/local/nagios/etc/objects/windows.cfg

参考附件:

3.3.7 A服务器修改commands.cfg

如果想指定保存在Windows 机器上NSClient++配置文件里的口令,可以修改check_nt 命令定义,让它带着口令。编辑方式打开commands.cfg 文件。

vi /usr/local/nagios/etc/commands.cfg

修改check_nt 命令的定义,带上"-s <PASSWORD>"命令参数(这里的PASSWORD 要换成你Windows 机器的真正口令),象这样:

define command{

command_name check_nt

command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -s PASSWORD -v $ARG1$

$ARG2$

 

}

 

3.3.8 A服务器重启nagios

Service nagios stop

Service nagios start

3、  邮件报警的实现

邮件报警的相对比较简单,这些都是在监控服务器A中的配置,涉及的文件有commands.cfgcontacts.cfg文件

本文中因为linux自带mail命令不能使用,特使用sendmail程序:

tar zxvf sendEmail-v1.56.tar.gz

cd sendEmail-v1.56

cp sendEmail /usr/local/bin/

ll /usr/local/bin/sendEmail     #确定sendmail有可执行权限

-rwxr-xr-x 1 root root 80213 Jun 21 15:38 /usr/local/bin/sendEmail 

测试:

 

-f  表示from,发件人地址

-t  表示to,收件人地址

-s  mail服务器域名

-u  主题

-xu 用户名(@之前的)

-xp 用户密码

-m 纯文本信息

-o message-file=/root/..      发送文件中的内容

-a 发送附件                 -m,-o,-a可以同时使用)   

/usr/local/bin/sendEmail -f chi_xiaohui@163.com -t 13627498993@139.com -s smtp.163.com -u "from nagios" -xu chi_xiaohui  -xp 891220 -m Thankyou! 

 

4.1 commands.cfg配置

Vi /usr/local/nagios/etc/objects/commands.cfg

define command{

        command_name    notify-host-by-email

        command_line    /usr/bin/printf "%b" "***** Nagios *****/n/nNotification Type: $NOTIFICATIONTYPE$/nHost: $HOSTNAME$/nState: $HOSTSTATE$/nAddress: $HO

STADDRESS$/nInfo: $HOSTOUTPUT$/n/nDate/Time: $LONGDATETIME$/n" | /usr/local/bin/sendEmail -f chi_xiaohui@163.com -t 15024483016@139.com –s smtp.163.com -u "from nagios" -

xu tengjunhu -xp ****** -m  "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$

        }

4.2 contacts.cfg配置

Vi /usr/local/nagios/etc/objects/contacts.cfg

 

define contact{

        contact_name                    nagiosadmin

        use                             generic-contact

        alias                           Nagios Admin

        service_notification_commands   notify-service-by-email

        host_notification_commands      notify-host-by-email

        email                           zhiliang.jiang@sinofriends.com

        }

说明:当有多种报警方式的时候,将其合在一起,以逗号隔开,如下例:

define contact{

        contact_name                    nagiosadmin

        use                             generic-contact

        alias                           Nagios Admin

        service_notification_commands   notify-service-by-email

        host_notification_commands      notify-host-by-email

        email                           zhiliang.jiang@sinofriends.com

        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值