Chinaunix首页 | 论坛 | 博客
  • 博客访问: 155951
  • 博文数量: 55
  • 博客积分: 2409
  • 博客等级: 大尉
  • 技术积分: 371
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-10 14:19
文章分类

全部博文(55)

文章存档

2012年(5)

2011年(15)

2010年(6)

2009年(29)

我的朋友

分类: LINUX

2012-05-14 15:02:55

完整配置文档

目录

 TOC \o "1-3" \h \z \u

 

Nagios是一款用于系统和网络监控的应用程序。它可以在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息。

Nagios最初被设计为在linux系统之上运行,然而它同样可以在类Unix的系统上运行。

Nagios更进一步的特征包括:

1.         监控网络服务(SMTPPOP3HTTPNNTPPING等);

2.         监控主机资源(处理器负荷、磁盘利用来了等);

3.         简单的插件设计使得用户可以方便的扩展自己服务的检测方法;

4.         并行服务检查机制;

5.         具备定义网络分层结构的能力,用“parent”主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;

6.         当服务或主机问题产生与解决时将告警发给联系人(通过Email、短信、用户定义方式);

7.         具备定义事件句柄功能,它可以在主机或服务的事件发生时获取更多问题定义;

8.         自动的日志回滚;

9.         可以支持并实现对主机的冗余监控;

10.     可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;

 

Nagios所需要的运行条件是机器可以运行Linux(或是Unix变种)并且有C语言编译器。你必须正确地配置TCP/IP协议栈以使大多数的服务检测可以通过网络得以进行。

   

你需要但并非必须正确地配置Nagios里的CGIs程序,而一旦你要使用CGI程序时,你必须要安装以下这些软件...

1.         一个WEB服务(最好是Apache

2.         Thomas Boutell制作的gd库版本应是1.6.3或更高(在CGIs程序模块statusmaptrends这两个模块里需要这个库

主机

10.10.38.200 监控机

10.10.43.53 被监控机

准备软件包

在做安装之前确认要对该机器拥有root权限。

确认你安装好的系统上已经安装如下软件包再继续。

Apache

GCC编译器

GD库与开发库

并且已经有Nagios3.x的软件包和Nagios插件的软件包

nagios‐3.0.6.tar.gz

nagios‐plugins‐1.4.13.tar.gz

nrpe-2.8.1.tar.gz

操作过程 、在监控主机上安装基础软件包

    yum命令安装基础软件包、键入命令如下:

yum -y install httpd gcc glibc glibc-common gd gd-devel php

 

注:如果软件源没有相关的基础软件包,需要手工安装相应软件包,下一节会做详细介绍。

2.3.2、在监控主机上手工安装基础软件包 2.3.2.1安装Apache

1.       下载apache-2.0.44.tar.gz

#cd /usr/local/software
#wget

2.       开始安装apache

#cd /usr/local/software
#tar zxvf httpd-2.0.44.tar.gz
#cd /usr/local/ software /httpd-2.0.44
#./configure --prefix=/usr/local/apache

#make

#make install

3.       修改apaceh的配置文件

    #cd /usr/local/ apache/conf
#vi httpd.conf
  

4.       找到Listen 80,把80改为7001                    

5.       找到#ServerName xxxxx:80,把ServerName前的#号去掉,把xxxxx改成自己的机器全名,端口改为7001

6.       Group #-1改成Group nobody

 

7.       启动apache

#cd /usr/local/apache/bin

#./apachectl start

8.       查看apache是否安装成功

#lynx

出现“Test Page for the Apache HTTP Server on Red Hat Enterprise Linux”字样时代表安装成功。

2.3.2.2安装GCC

1.       下载gcc-4.5.2.tar.gz

 #cd /usr/local/software

#wget

2.       开始安装gcc

#cd /usr/local/software

#tar zxvf gcc-4.5.2.tar.gz

#cd /usr/local/software /gcc-4.5.2

#./configure --prefix=/usr/local/gcc --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib

#make

#make install

 

注:编译时如果报“Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.”则需要安装GMP, MPFR, MPC这三个库。具体操作如3456步骤。

安装完这三个库后,为了防止GCC编译时找不到这三个库,需要确认库位置是否在环境变量LD_LIBRARY_PATH中,具体命令如下:

root目录下的/.bash_profile 中添加以下语句:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/mnt/lfs/mpfr/lib:/mnt/lfs/gmp/lib

export  LD_LIBRARY_PATH

 

etc目录下的bashrc文件配置文件中添加以下语句:   LD_LIBRARY_PATH=:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib:/usr/local/gcc/lib   

export LD_LIBRARY_PATH

修改后保存,最好再重启一下系统。

 

3.     下载相关库      

             下载mpc-0.8.2

                  下载gmp-4.3.2

               下载mpfr-2.4.2       

4.     MPFRMPC都依赖于GMP包,所以首先安装GMP

#tar xvf gmp-4.3.2.tar.bz2

#cd gmp-4.3.2

#./configure (可以使用配置参数--prefix=指定安装位置,这里使用默认/usr/local/include/usr/local/lib)

#make

#make check (这一步用来确保编译正确)

# sudo make install

5.     安装MPFR

#tar xvf mpfr-2.4.2.tar.bz2

#cd mpfr-2.4.2

#./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib

#make

#make check

#sudo make install

6.     安装MPC

#tar xvf mpc-0.8.2.tar.gz

#cd mpc-0.8.1

#./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local/lib

#make

#make check

#make install

2.3.2.3安装GD

1.         下载相关资源

                 下载gd-2.0.33.tar.gz      

                         下载jpegsrc.v6b.tar.gz

        下载libpng-1.2.7.tar.tar

           下载zlib-1.2.2.tar.gz

      下载freetype-2.1.9.tar.gz

                        下载php-5.2.17.tar.gz

 

2.         安装zlib

#tar zxvf zlib-1.2.2.tar.gz

#cd zlib-1.2.2

#./configure

#make

#make install

3.         安装libpng

#tar zxvf libpng-1.2.7.tar.tar

#cd libpng-1.2.7

#cd scripts/

#mv makefile.linux ../makefile

#cd ..

#make

#make install

 

注意:这里的makefile不是用./configure生成,而是直接从scripts/里拷一个

4.         安装freetype

#tar zxvf freetype-2.1.9.tar.gz

#cd freetype-2.1.9

#./configure

#make

#make install

5.         安装Jpeg

#tar zxvf jpegsrc.v6b.tar.gz

#cd jpeg-6b/

#./configure --enable-shared

#make

#make test

#make install

注意,这里configure一定要带--enable-shared参数,不然,不会生成共享库

如果安装后报“make: ./libtool:命令未找到”错误,首先看有没有安装libtool libtool-ltdl-devel
#rpm   -qa | grep   libtool

然后进入jpeg-6b的源码目录,然后执行以下步骤,切记!COPY到当前目录注意后面的点(.)

#cp   /usr/share/libtool/config.sub  .
#cp   /usr/share/libtool/config.guess  .

也就是把 libtool里面的两个配置文件拿来覆盖掉jpeg-6b目录下的对应文件
make clean
再重新configure
如果提示无法创建一般文件“/usr/local/man/man1/cjpeg.1: 没有那个文件或目录

则手工增加一个目录即可

#mkdir -p /usr/local/man/man1

 

6.         安装GD

#tar zxvf gd-2.0.33.tar.gz

#cd gd-2.0.33

#./configure --prefix=/usr/local/gd2

make

#make install

7.         安装php

#tar zxvf php-5.2.17.tar.gz

#cd  php-5.2.17/

#./configure --prefix=/usr/local/php --with-gd=/usr/local/gd2/

#make

#make test

#make install

8.         安装成功后重启apache

#cd /usr/local/apache/bin

#./apachectl  restart

、在监控主机上建立nagios账号

    root用户

    #/usr/sbin/useradd  nagios && passwd nagios

    创建一个用户组名为nagios用于从web接口执行外部命令。将nagios用户和apache用户都加到这个组中。

#/usr/sbin/groupadd nagios

#/usr/sbin/usermod –G nagios nagios

#/usr/sbin/usermod –G nagios apache

、下载nagios3.x和插件程序包

下载NagiosNagios插件的软件包(访问)站点以获得最新版本

建立一个软件源目录

#mkdir –p /usr/mpsp/software

#cd /usr/mpsp/software

#wget

#wget

、在监控主机上编译与安装Nagios3.x

     #cd /usr/mpsp/software

     #tar –zxvf nagios‐3.0.6.tar.gz

     #cd nagios‐3.0.6

     #./configure –with-command-group=nagios –prefix=/usr/local/nagios

     #make all

     #make install

     #make install-init

     #make install-config

     #make install-commandmode

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

 

bin

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

Etc

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

32区别 对象配置文件都在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

、在监控主机上编译并安装Nagios插件

     #cd /usr/mpsp/software

     #tar –zxvf nagios‐plugins‐1.4.13.tar.gz

     #cd nagios‐plugins‐1.4.13

     编译并安装插件

     #./configure –with-nagios-user=nagios –with-nagios-group=nagios

–prefix=/usr/local/nagios

#make && make install

     验证:

     #ls /usr/local/nagios/libexec

     会显示安装的插件文件,即所有的插件都安装在libexec这个目录下

、在监控主机上配置WEB接口

     apache的配置文件httpd.conf最后添加如下内如:

     #cd /etc/httpd/conf

     #cp –av httpd.conf httpd.conf.20110418     --备份配置文件

     #vi 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

       Require valid-user

Alias /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

       Require valid-user

 

添加完成后,重启httpd

#/etc/init.d/httpd restart

设置登录口令:

#/usr/bin/htpasswd -c /usr/local/nagios/etc/htpasswd nagios

New password:nagios

Re‐type new password:nagios

Adding password for user nagios

查看认证文件的内容:

#less /usr/local/nagios/etc/htpasswd

nagios: orAT4For4qj36

本例添加的是mpsp用户名,需要修改/usr/local/nagios/etc/cgi.cfg配置文件,允许mpsp用户,cgi.cfg配置文件的最后添加如下内容:

authorized_for_system_information=nagios

authorized_for_configuration_information= nagios

authorized_for_system_commands= nagios

authorized_for_all_services= nagios

authorized_for_all_hosts=nagiosadmin, nagios

authorized_for_all_service_commands= nagios

authorized_for_all_host_commands= nagios

如果有很多用户的话,用逗号隔开

还有为了在WEB中能够访问nagios,需要修改/usr/local/nagios/etc/cgi.cfg配置文件如下内容

use_authentication=1修改成use_authentication=0

、在监控主机上启动Nagios3.x

   Nagios加入到服务列表中以使之在系统启动时自动启动

   

   #chkconfig nagios on

   验证Nagios的样例配置文件

   #/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

   如果没有报错,就可以启动Nagios

   #service nagios start

、更改SELinux设置

FedoraSELinux(安全增强型Linux)同步发行与安装后将默认使用强制模式。这会在你尝试联入NagiosCGI时导致一个"内部服务错误"消息。

如果是SELinux处于强制安全模式时需要做:

#getenforce

SELinux处于容许模式:

#setenforce 0

如果要永久性更变它,需要更改/etc/selinux/config里的设置并重启系统。

 不关闭SELinux或是永久性变更它的方法是让CGI模块在SELinux下指定强制目标模式:

#chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/

#chcon -R -t httpd_sys_content_t /usr/local/nagios/share/

、测试Nagios3.x

    登录

    输入用户名nagios和密码nagios就可以正常登录了,登录后如图2.1

2.1

 

、在被监控主机上使用NRPE监控LINUX上的本地信息

   对于像磁盘容量,cpu负载这样的本地信息”,nagios只能监测自己所在的主机,而对其他的机器则显得有点无能为力.毕竟没得到被控主机的适当权限是不可能得到这些信息的.为了解决这个问题,nagios有这样一个附加组件----NRPE.用它就可以完成对linux类型主机本地信息的监控.

 

NRPE的原理如下图

NRPE总共由两部分组成:

– check_nrpe 插件,位于在监控主机上

– NRPE daemon,运行在远程的linux主机上(通常就是被监控机)

按照上图,整个的监控过程如下:

nagios需要监控某个远程linux主机的服务或者资源情况时

1.nagios会运行check_nrpe这个插件,告诉它要检查什么.

2.check_nrpe插件会连接到远程的NRPE daemon,所用的方式是SSL

3.NRPE daemon会运行相应的nagios插件来执行检查

4.NRPE daemon将检查的结果返回给check_nrpe插件,插件将其递交给nagios做处理.

注意:NRPE daemon需要nagios插件安装在远程的linux主机上,否则,daemon不能做任何的监控.

 

通过NRPE的检测分为两种:

1).直接检测:检测的对象是运行NRPE的那台linux主机的本地资源,原理如下图

2).间接检测:当运行nagios的监控主机无法访问到某台被监控机,但是运行NRPE的机器可以访问到时,NRPE就可以充当一个代理,将监控请求发送到被监控机

必须要说明的是,通常被监控机与监控机在同一网络内,所以这样的情况很少.下面我讲的都是直接检测.所以我们按照图示在监控主机(nagios-server)和被监控主机(linux,也就是图中运行NRPEremote linux host)上安装相应的软件

 

 

在被监控主机10.10.43.53上(root权限)

添加用户

   #useradd nagios

设置密码

   #passwd nagios

安装nagios插件

   #cd /usr/mpsp/software

#tar –zxvf nagios‐plugins‐1.4.13.tar.gz

#cd nagios-plugins-1.4.15

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

#make

#make install

#chown –R nagios.nagios /usr/local/nagios 

安装nrpe(在监控机10.10.38.200上面也要安装)  

#cd /usr/mpps/software

#tar –zxvf nrpe-2.8.1.tar.gz

#cd nrpe-2.8.1

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

   #make all

   #make install-plugin

   #make install-daemon

   #make install-daemon-config      

、在被监控主机上安装xinetd脚本

      按照安装文档的说明,是将NRPE deamon作为xinetd下的一个服务运行的.在这样的情况下xinetd就必须要先安装好,不过一般系统已经默认装了

      10.10.43.53上面安装xinetd:

        #cd /usr/mpsp/software/nrpe-2.8.1

     

      输出如下:

      /usr/bin/install -c -m 644 sample-config/nrpe.xinetd /etc/xinetd.d/nrpe

 

可以看到创建了这个文件/etc/xinetd.d/nrpe

     需要编辑这个脚本 /etc/xinetd.d/nrpe

       #vi /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

        #等号右边后面增加监控主机的地址10.10.38.200,以空格间隔

        only_from       = 127.0.0.1 10.10.38.200

}

 编辑/etc/services文件,增加NRPE服务

    #vi /etc/services

      nrpe            5666/tcp                        # nrpe

 重起xinetd服务

     #/sbin/service xinetd restart

     Stopping xinetd: [  OK  ]

Starting xinetd: [  OK  ]

 查看NRPE是否已经启动

     #netstat -at|grep nrpe

       tcp        0      0 *:nrpe                      *:*                         LISTEN

     #netstat -an|grep 5666

       tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN

可以看到5666端口已经在监听了

测试NRPE是否则正常工作

#/usr/local/nagios/libexec/check_nrpe -H 10.10.43.53

会返回当前NRPE的版本

#NRPE v2.8.1

也就是在本地用check_nrpe连接nrpe daemon是正常的

:为了后面工作的顺利进行,注意本地防火墙要打开5666能让外部的监控机访问

 

查看这个命令的用法  /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

找到下面几句话:

# The following examples use hardcoded command arguments...

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参数可以接的内容,等号=后面是实际执行的插件程序(这与commands.cfg中定义命令的形式十分相似,只不过是写在了一行).也就是说check_users就是等号后面/usr/local/nagios/libexec/check_users -w 5 -c 10的简称.

我们可以很容易知道上面这5行定义的命令分别是检测登陆用户数,cpu负载,hda1的容量,僵尸进程,总进程数.各条命令具体的含义见插件用法(执行”插件程序名 h)

由于-c后面只能接nrpe.cfg中定义的命令,也就是说现在我们只能用上面定义的这五条命令.我们可以在本机实验一下.执行:

/usr/local/nagios/libexec/check_nrpe -H localhost -c check_users

USERS WARNING - 6 users currently logged in |users=6;5;10;0

/usr/local/nagios/libexec/check_nrpe -H localhost -c check_load

OK - load average: 0.01, 0.04, 0.00|load1=0.010;15.000;30.000;0; load5=0.040;10.000;25.000;0; load15=0.000;5.000;20.000;0;

/usr/local/nagios/libexec/check_nrpe -H localhost –c check_hda1

DISK OK - free space: / 23087 MB (83% inode=98%);| /=4468MB;29036;29046;0;29056

 

、监控主机上安装nrpe插件

#cd /usr/mpsp/software

#tar –zxvf nrpe-2.8.1.tar.gz

#cd nrpe-2.8.1

#./configure –prefix=/usr/local/nagios

#make all

#make install‐plugin

只运行这一步就行了,因为监控主机只需要check_nrpe插件

刚刚我们已经在被监控主机10.10.43.53上面安装了nrpe,并且已经配置好了配置文件,现在我们测试一下监控机10.10.38.200使用check_nrpe与被监控机10.10.43.53运行的nrpedaemon之间的通信:

/usr/local/nagios/libexec/check_nrpe -H 10.10.43.53

NRPE v2.8.1

看到已经正确返回了NRPE的版本信息,说明一切正常.

、在被监控主机中增加对check_mem的定义

下面就可以在linuxtone.cfg中定义对10.10.43.53主机内存的监控

1.         首先需要在监控主机的/usr/local/nagios/objects/目录下面创建一个主机配置文件linuxtone.cfg

 并且在/usr/local/nagios/etc/nagios.cfg添加如下内容:

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

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

2.         然后在linuxtone.cfg配置文件中添加如下内容:

 #vi /usr/local/nagios/objects/linuxtone.cfg

 define host{

        use         linux-server

        host_name   linuxtone

        alias        linuxtone

        address     10.10.43.53

}

define service{

        use         local-service 

        host_name   linuxtone

        service_description check_mem

        check_command  check_nrpe!check_mem!10,5!10,8

}

3.         重启nagios

#/etc/init.d/nagios restart

4.   进入被监控主机,将check_mem命令放在nagios命令目录下

#cd /usr/local/nagios/libexec

5.   给该命令赋权

#chown –R nagios.nagios check_mem

# chmod 755 check_mem

6.   在被监控主机添加check_mem的定义

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

command[check_mem]=/usr/local/nagios/libexec/check_mem -w 110,50 -c 150,80

7.         重起xinetd服务

     #/sbin/service xinetd restart

 

2.3.16、在监控主机中增加对check_nrpe的定义

cd  /usr/local/nagios/etc/objects

      vi commands.cfg 添加如下内容:

      define command{

        command_name check_nrpe

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

        }

       意义如下

command_name check_nrpe

定义命令名称为check_nrpe,linuxtone.cfg中要使用这个名称.

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

这是定义实际运行的插件程序.这个命令行的书写要完全按照check_nrpe这个命令的用法.不知道用法的就用check_nrpe h查看

-c后面带的$ARG1$参数是传给nrpe daemon执行的检测命令,之前说过了它必须是nrpe.cfg中所定义的那5条命令中的其中一条.linuxtone.cfg中使用check_nrpe的时候要用!带上这个参数

今天还有一个任务是要监控10.10.43.252java进程使用情况.但是很遗憾,nrpe.cfg中默认没有定义这个监控功能的命令.怎么办?手动在nrpe.cfg中添加,也就是自定义NRPE命令.

现在我们要监控java进程的个数,如果java进程大于2则为警告状态—warning;如果大于3则为严重状态—critical.我们可以自定义一个check_grep插件,完整的命令行应该是下面这样.

/usr/local/nagios/libexec/check_grep -w 2 -c 3

首先自己编写一个check_grep 脚本,然后上传至被监控主机10.10.43.252的目录/usr/local/nagios/libexec/

然后对脚本进行赋权

chown nagios:nagios check_grep

chmod 755  check_grep

 然后在被监控机10.10.43.252上增加这个命令

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

 增加下面这一行

 command[check_grep]=/usr/local/nagios/libexec/check_grep 2 3

我们知道check_grep现在就可以作为check_nrpe-c的参数使用了

修改了配置文件,当然要重启.但是

如果你是以独立的daemon运行的nrpe,那么需要手动重启.

如果你是在xinetd或者inetd下面运行的,则不需要.

由于我们是xinetd下运行的,所以不需要重启服务

在监控主机10.10.40.218上面增加这个监控项目

/usr/local/nagios/etc/objects/ linuxtone.cfg配置文件中增加如下内容:

define service{

        use         local-service

        host_name   linuxtone

        service_description grep

        check_command  check_nrpe!check_grep!2!3

}

所有的配置文件已经修改好了,现在重启nagios/etc/init.d/nagios restart

输入网址

然后点击页面的右侧页面Monitoring下面的Service Detail选项,即可看到如下页面

monitoring.jpg

2.3.17、不以xinetd运行nrpe

因为我们按照nrpe的安装文档安装下来,nrpe是在xinetd下面运行的,还有一种方式是像nagios那样以单独的daemon来运行.这样比较好控制.

方法:

编辑 /etc/servicesnrpe注释掉

# Local services

#nrpe           5666/tcp                        # nrpe

编辑 nrpe.cfg,增加监控主机的地址

# NOTE: This option is ignored if NRPE is running under either inetd or xinetd

allowed_hosts=127.0.0.1,10.10.40.218

注意两个地址以逗号隔开

以单独的daemon启动nrpe

[root@dbpi etc]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

查看

[root@dbpi etc]# ps -ef|grep nrpe

nagios   22125     1  0 14:04 ?        00:00:00 [nrpe]

[root@dbpi nagios]# netstat -an|grep 5666

tcp        0      0 0.0.0.0:5666            0.0.0.0:*               LISTEN  

说明已经正常启动了

/etc/rc.d/rc.local里面加入下面一行就实现开机启动nrpe

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

同理要开机运行nagios就在/etc/rc.d/rc.local里面增加下面这行

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

 

的配置文件关系说明 、主配置文件项

Nagios的主配置文件为/usr/local/nagios/etc/nagios.cfg

本文对主配置文件里的重要变量做一些简单说明

2.4.1.1对象配置文件

格式:cfg_file=样例:

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

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

如添加一个新的主机配置 linuxtone.cfg

cfg_file=/usr/local/nagios/etc/linuxtone.cfg

2.4.1.2nagios用户及组

nagios_user=nagios

nagios_group=nagios

2.4.1.3通知选项

enable_notifications=1

该选项决定了Nagios在初始化启动或重启动时是否要送出通知。

如果这个选项不使能,Nagios将不会向任何主机或服务送出通知。

注意,如果你打开了状态保持选项,Nagios在其启动和重启时将忽略此设置并用这个选项的

最近的一个设置(已经保存在状态保持文件)的值来工作,除非你取消了use_retained_program_state选项。如果你想在使能状态保存选项(并且是use_retained_program_state使能)的情况下更改这个选项,你必须要通过合适的外部命令或是通过Web接口来修改它。选项的取值可以是:

0 = 关闭通知

1 = 打开通知(默认)

本文不一一列举。详细请查询:

 

、对象配置文件选项      

对象是指所有在监控和通知逻辑中涉及到的元素。

cfg_file=/usr/local/nagios/etc/objects/contacts.cfg //联系人/组配置文件

cfg_file=/usr/local/nagios/etc/objects/localhost.cfg //本机配置文件

cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg //监视时段配置文件

cfg_file=/usr/local/nagios/etc/objects/commands.cfg //监视脚本配置

cfg_file=/usr/local/nagios/etc/objects/templates.cfg //监视服务,报警配置

cfg_file=/usr/local/nagios/etc/objects/switch.cfg //监视路由

cfg_file=/usr/local/nagios/etc/objects/windows.cfg //监视微软

图形化PNP安装和配置 准备软件包

rrdtool-1.4.5.tar.gz

pnp-0.4.14.tar.gz

操作过程 、在监控主机安装rrdtool

1.         在监控主机10.10.438.200上安装rrdtool之前,需要安装一些依赖包,运行命令:

#yum install cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel php-gd

2.         安装完成上述文件后,安装rrdtool

#cd  /usr/mpsp/software/

# wget

#tar –zxvf rrdtool-1.4.5.tar.gz

#cd rrdtool-1.4.5

#./configure --prefix=/usr/local/rrdtool && make && make install

3.         运行/usr/local/rrdtool/bin/rrdtool –v 验证是否安装成功,如果安装成功,会出现如下提示:

RRDtool 1.4.5  Copyright 1997-2008 by Tobias Oetiker

               Compiled Apr  8 2011 15:06:34

 

Usage: rrdtool [options] command command_options

 

Valid commands: create, update, updatev, graph, graphv,  dump, restore,

                last, lastupdate, first, info, fetch, tune,

                resize, xport

 

RRDtool is distributed under the Terms of the GNU General

Public License Version 2. ()

For more information read the RRD manpages

、安装PNP图形插件

1.         安装PNP图形插件步骤

#cd /usr/mpsp/software/

#wget

#tar –zxvf pnp-0.4.14.tar.gz

#cd pnp-0.4.14

#./configure --with-rrdtool=/usr/local/rrdtool/bin/rrdtool

#make all

#make install-config

#make install-init

#make fullinstall

 

---------------------------------------------------------------------------------

FAQ:

*** Configuration summary for pnp 0.4.13 02-19-2009 ***

General Options:

------------------------- -------------------

Nagios user/group:nagios nagios

Install directory: /usr/local/nagios

HTML Dir: /usr/local/nagios/share/pnp

Config Dir: /usr/local/nagios/etc/pnp

Path to rrdtool: /usr/local/bin/rrdtool (Version 1.4.5)

RRDs Perl Modules: *** NOT FOUND ***

RRD Files stored in: /usr/local/nagios/share/perfdata

process_perfdata.pl Logfile: /usr/local/nagios/var/perfdata.log

Perfdata files (NPCD) stored in: /usr/local/nagios/var/spool/perfdata/

-----------------------------------------

process_perfdata.pl 安装在 /usr/local/nagios/share/

配置示例文件安装在/usr/local/nagios/libexecs

config.php安装于/usr/local/nagios/etc/pnp

2.         修改PNP配置文件

    #cd /usr/local/nagios/etc/pnp

#cp –av process_perfdata.cfg-sample process_perfdata.cfg

#cp –av npcd.cfg-sample npcd.cfg

#cp –av rra.cfg-sample rra.cfg

#chown –R nagios.nagios /usr/local/nagios/etc/pnp

3.         调整PNP配置文件的参数

    #vi /usr/local/nagios/etc/pnp/process_perfdata.cfg

     为了调试方便,首先需要把其中的日志参数的注释去掉以及日志的参数级别修改为debug

     LOG_FILE = /usr/local/nagios/var/perfdata.log

     #

# Loglevel 0=silent 1=normal 2=debug

#

LOG_LEVEL = 2

4.         然后修改/usr/local/nagios/etc/objects/templates.cfg增加新命令(增加小太阳标记):

/usr/local/nagios/etc/objects/templates.cfg配置文件的末尾添加如下命令:

      define host {

        name host-pnp

        register 0

        action_url /nagios/pnp/index.php?host=$HOSTNAME$

        process_perf_data 1

}

#还可以在service栏添加srv-pnp,添加后会在相应的栏内增加小太阳。

define service {

         name srv-pnp

         register 0

         action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$

          process_perf_data 1

}

5.         修改/usr/local/nagios/etc/nagios.cfg,找到如下几项参数去掉注释:

process_performance_data=1

host_perfdata_command=process-host-perfdata

service_perfdata_command=process-service-perfdata

host_perfdata_file=/tmp/host-perfdata

service_perfdata_file=/tmp/service-perfdata

6.         修改/usr/local/nagios/etc/objects/commands.cfg,修改process-host-perfdataprocess-service-perfdata两个参数的值,修改成如下:

# 'process-host-perfdata' command definition

define command{

       command_name process-host-perfdata

       command_line /usr/local/nagios/libexec/process_perfdata.pl

}

# 'process-service-perfdata' command definition

define command{

      command_name process-service-perfdata

      command_line /usr/local/nagios/libexec/process_perfdata.pl

}

7.         测试PNP是否安装正确

为被监控主机linuxtone10.10.43.53)和监控主机localhost10.10.38.200)这两台主机在主机图标旁边加个小太阳标记

为被监控主机linuxtone10.10.43.53)增加小太阳标记,修改配置文件

#vi /usr/local/nagios/etc/objects/linuxtone.cfg

define host{

        use         linux-server,host-pnp

        host_name   linuxtone

        alias       linuxtone

        address     10.10.43.53

}

为监控主机localhost(10.10.38.200)增加小太阳标记,修改配置文件

#vi /usr/local/nagios/etc/objects/localhost.cfg

# Define a host for the local machine

define host{

        use         linux-server,host-pnp 

        host_name             localhost

        alias                   localhost

        address                127.0.0.1

        }

修改完毕后,重新加载配置文件

#service nagios reload

如果配置正确,会生成PNP文件

#ls -l /usr/local/nagios/share/perfdata会有如下两个目录:

 总计 8

drwxr-xr-x 2 nagios nagios 4096 04-19 09:45 linuxtone

drwxr-xr-x 2 nagios nagios 4096 04-19 09:45 localhost

ls -l /usr/local/nagios/share/perfdata/linuxtone/会有如下文件:

总计 768

-rw-r--r—1nagios nagios 768224 04-19 09:46 check_mem.rrd

-rw-rw-r-- 1 nagios nagios  11664 04-19 09:46 check_mem.xml

出现上述文件,则证明安装成功,生成数据成功

打开网页,然后在主机localhostlinuxtone旁可以看到小太阳图标,如下图:

PNP.jpg

点击小太阳图标,就可以看到图表,如下图:

PNP1.jpg

 

注:如果点击小太阳时系统提示“PHP GD Support not found.”,需要再安装PHP-GD库,命令是

#yum -y install php-gd

报警配置 短信网关报警 、调试短信网关脚本

1)、首先公司自己的短信网关应用程序的包直接引用,打包成一个短信发送小程序sms,有如下几个文件:

commons-logging-1.1.jar  mpsp_bs3-100226-879.jar  names.ini  nohup.out  SmsSender.class 

2)、然后基于这几个短信发送程序,编写一个短信发送脚本smsSend.sh

短信的发送方式为:

smsSend.sh “你好

如果配置的手机号接收到短信内容,证明配置成功。

3)、把整个短信包sms复制到nagios插件目录下

cp  sms /usr/local/nagios/libexec

chown –R nagios.nagios /usr/local/nagios/libexec/sms

chmod 755 /usr/local/nagios/libexec/sms/*

4)、定义短信报警命令

/usr/local/nagios/etc/objects/commands.cfg配置文件中定义短信报警命令,添加如下内容:

# 'notify-host-by-sms' command definition

define command{

        command_name    notify-host-by-sms

        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/local/nagios/libexec/sms/smsSend.sh "** $NOTIFICATIONTYPE$ Host Alert:$HOSTNAME$ is $HOSTSTATE$**"

        }

# 'notify-service-by-sms' command definition

define command{

        command_name    notify-service-by-sms

        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$" | /usr/local/nagios/libexec/sms/smsSend.sh "*****$NOTIFICATIONTYPE$ Service Alert:$HOSTALIAS$ $SERVICEDESC$ $SERVICESTATE$**"

        }

5)、修改/usr/local/nagios/etc/objects/templates.cfg配置文件,把短信报警命令添加进配置文件,添加后,内容如下:

define contact{

        name                            generic-contact         ; The name of this contact template

        service_notification_period     24x7                    ; service notifications can be sent anytime

        host_notification_period        24x7                    ; host notifications can be sent anytime

        service_notification_options    w,u,c,r,f,s             ; send notifications for all service states, flapping events, and scheduled downtime events

        host_notification_options       d,u,r,f,s               ; send notifications for all host states, flapping events, and scheduled downtime events

        service_notification_commands   notify-service-by-sms,notify-service-by-email           ; send service notifications via email

        host_notification_commands      notify-host-by-sms,notify-host-by-email                 ; send host notifications via email

        register                        0                       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!

        }

service_notification_commandshost_notification_commands这两个参数后面分别添加两个值notify-service-by-smsnotify-host-by-sms以逗号分隔

6)、加载nagios配置文件

配置完成后,先验证nagiso配置文件是否正确

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

如果出现如下提示:

Things look okay - No serious problems were detected during the pre-flight check

证明配置正确。可以加载配置文件

service nagios reload

飞信报警 、安装飞信插件

1)、首先到,下载最新的飞信机器人,

会下载到一个打包文件

fetion20091117-linux.tar.gz

但是由于飞信官方升级的缘故,导致飞信机器人不能正常工作,因此需要对飞信机器人程序进行升级,需要到网页下载升级包

fetion

下载后,新建一个目录

mkdir –p /usr/local/nagios/libexec/fetion

把下载的飞信机器人fetion20091117-linux.tar.gz

解压到/usr/local/nagios/libexec/fetion

再把下载后的升级文件fetion覆盖原目录的fetion

cp fetion /usr/local/nagios/libexec/fetion/fetion

2)、测试飞信机器人是否能发送短信

运行命令./fetion –h查看帮助

************************ IMPORTANT STATEMENT ************************

 **                                                                 **

 **   PLEASE DON'T USE THIS SOFTWARE TO SEND JUNK SHORT MESSAGES.   **

 **   OTHERWISE PLEASE BEAR YOUR OWN CONSEQUENCES.                  **

 **                                                                 **

 **                                Version:[20101205002-linux]      **

 *********************************************************************

 This program is the console version of China Fetion!

 It's free for personal user.

 This project website:

 

 AUTHOR:KelvinH MSN/EMAIL:shichangguo@msn.com

 

 Usage:

    --mobile=[mobile]

    --sid=[sid]

    --pwd=[pwd]

    --config=[config file] *format:index mobile password

    --index=[index no in config file,refer to sample.conf]

 

    --debug  *debug mode on

    --hide  *login fetion in hidden state

    --to=[mobile/sid]

    --command-path=[command file path]

    --robotmode

    --daemon(linux only)

    --proxy-ip(http proxy ip)

    --proxy-port(http proxy port)

    --msg-gb=[gb2312/gbk message]

    --msg-utf8=[utf8 message]

    --msg-type=[0/1/2 sms longsms smartmsg]

    --file-gb=[gb2312/gbk file]

    --file-utf8=[utf8 file]

    --query-cmcc-no

    --auto-retry

    --exit-on-verifycode

--t3key=[]

 

然后运行指令:

/usr/local/nagios/libexec/fetion/fetion --mobile=15110263912 --pwd=xxxxx --to=15110263912 --msg-utf8=”你好!

如果成功收到短信,则证明飞信安装成功。

、配置飞信报警参数

1)、定义飞信报警命令

/usr/local/nagios/etc/objects/commands.cfg中配置飞信报警命令,添加如下内容:

# 'notify-host-by-sms' command definition

define command{

        command_name    notify-host-by-fention

        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/local/nagios/libexec/fetion/fetion --mobile=15110263912 --pwd=yekeqiang1987 --to=15110263912 --msg-utf8="** $NOTIFICATIONTYPE$ Host Alert:$HOSTNAME$ is $HOSTSTATE$**"

        }

# 'notify-service-by-sms' command definition

define command{

        command_name    notify-service-by-fention

        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$" | /usr/local/nagios/libexec/fetion/fetion --mobile=15110263912 --pwd=yekeqiang1987 --to=15110263912 --msg-utf8="*****$NOTIFICATIONTYPE$ Service Alert:$HOSTALIAS$ $SERVICEDESC$ $SERVICESTATE$**"

        }

2)、修改/usr/local/nagios/etc/objects/templates.cfg配置文件,把飞信报警命令添加进配置文件,添加后,内容如下:

# Generic contact definition template - This is NOT a real contact, just a template!

 

define contact{

        name                            generic-contact         ; The name of this contact template

        service_notification_period     24x7                    ; service notifications can be sent anytime

        host_notification_period        24x7                    ; host notifications can be sent anytime

        service_notification_options    w,u,c,r,f,s             ; send notifications for all service states, flapping events, and scheduled downtime events

        host_notification_options       d,u,r,f,s               ; send notifications for all host states, flapping events, and scheduled downtime events

        service_notification_commands   notify-service-by-sms,notify-service-by-email, notify-service-by-fention           ; send service notifications via email

        host_notification_commands      notify-host-by-sms,notify-host-by-email, notify-host-by-fention                 ; send host notifications via email

        register                        0                       ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!

        }

3)、加载nagios配置文件

配置完成后,先验证nagiso配置文件是否正确

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

如果出现如下提示:

Things look okay - No serious problems were detected during the pre-flight check

证明配置正确。可以加载配置文件

service nagios reload

邮件报警 、下载邮件发送软件

nagios发警告邮件是采用本机的smtp服务,可以查看commands.cfg中关于发邮件的命令的定义,使用本机的mail命令,这就需要开启本机的smtp服务,为了安全可以在防火墙上设置拒绝其他的机器连本机的25号端口

现在我们的网络里面有一个邮件服务器,所以要求使用这台现有的邮件服务器,不开启本机的smtp服务,这就需要重新定义命令使用第三方软件sendEmail.

首先我们当然要在邮件服务器上新建一个账户用来做发邮件的账户

这里邮件服务器的地址为smtp.umpay.com

来发邮件的帐号mocha@umpay.com

SMTP验证的用户名 mocha 密码umpay1234

1)sendEmail的使用

以下就来介绍一下sendEmail这个软件的使用.

sendEmail的主页

下载地址

软件十分小,是一个通过命令来发smtp邮件的程序.安装也十分简单(查看其README文件即可).

解压缩

#tar –zxvf sendEmail-v1.55.tar.gz

#cd sendEmail-v1.55

将可执行程序复制到nagios的插件目录下,

#mkdir –p /usr/local/nagios/libexec/sendemail/

#cp sendEmail /usr/local/nagios/libexec/sendemail/

然后给确认确实它具有执行权限

这样程序就装好了,使用也很简单.直接运行sendEmail就会显示详细的用法

先看一个典型的例子

/usr/local/nagios/libexec/sendemail/sendEmail -f mocha@umpay.com -t $CONTACTEMAIL$ -s smtp.umpay.com -u  "$HOSTNAME$ nagios WARING" -xu mocha -xp umpay1234 -m "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **"

解释:

-f 表示发送者的邮箱

-t 表示接收者的邮箱

-s 表示SMTP服务器的域名或者ip

-u 表示邮件的主题

-xu 表示SMTP验证的用户名

-xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)

-m 表示邮件的内容

如果你不带-m参数的话,就会提示你自行输入

Reading message body from STDIN because the ‘-m’ option was not used.

If you are manually typing in a message:

- First line must be received within 60 seconds.

- End manual input with a CTRL-D on its own line

输入完成后使用CTRL-D来结束

当然我们也可以将一个文件的内容作为邮件的正文发出去的

那么就可以使用:

cat 文件名 | /usr/local/nagios/libexec/sendemail /sendEmail -f mocha@umpay.com -t $CONTACTEMAIL$ -s smtp.umpay.com -u  "$HOSTNAME$ nagios WARING" -xu mocha -xp umpay1234

有关sendEmail的用法就讲到这里

、修改nagios配置参数,以便邮件报警生效

既然nagios要使用sendEmail来发警告邮件,那么就要修改commands.cfg中关于发邮件的命令的定义,我们现在来修改notify-by-email这个命令,如下(注意其中标红的部分)

# 'notify-host-by-email' command definition

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" |  /usr/local/nagios/libexec/sendemail/sendEmail -f mocha@umpay.com -t $CONTACTEMAIL$ -s smtp.umpay.com -u  "$HOSTNAME$ nagios WARING" -xu mocha -xp umpay1234 -m "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **"

        }

 

# 'notify-service-by-email' command definition

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$" | /usr/local/nagios/libexec/sendemail/sendEmail -f mocha@umpay.com -t $CONTACTEMAIL$ -s smtp.umpay.com -u  "nagios WARNING" -xu mocha -xp umpay1234 -m "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **"

        }

Nagios3.x整合 安装环境

操作系统:Redhat Linux gnu

内核版本:2.6.18-53.el5

Apachehttpd-2.2.3-31.el5

PHPphp-5.3.6.tar.gz

Mysqlmysql-5.0.22

Net-snmpnet-snmp-5.3.2.2-7.el5

RRDtoolrrdtool-1.3.8.tar.gzcacti不支持1.4版本)

Cacticacti-0.8.7e.tar.gz

架构图和工作原理图

1)、Cacti的架构图

数据实现层 

Apache

php

数据存储层 

mysql

rrdtool

数据采集层

net-snmp       

script

2)、Cacti的工作原理图,如图5.2

161049175.jpg

安装过程 、安装基础软件

1)、先安装mysqlphpapche

yum -y install mysql mysql-server php-mysql httpd php

2)、在安装需要用到的包

yum -y install php-pdo lm_sensors net-snmp php-snmp net-snmp-utils perl-Net-Daemon perl-PlRPC perl-DBI perl-DBD-MySQL

3)、设置mysql Apache snmp 开机自动启动

chkconfig mysqld on

chkconfig httpd on

chkconfig snmpd on

service mysqld start

service httpd start

service snmpd start

4)、Mysql配置

mysqladmin --user=root password yunxing12345

mysqladmin --user=root --password reload

Enter password: 输入刚设置密码,检验是否正确

Cacti安装

1)、获取Cacti安装包

cd /usr/mpsp/software

wget

tar –zxvf cacti-0.8.7e.tar.gz

mv cacti-0.8.7e /var/www/html/cacti

chown -R nagios.nagios /var/www/html/cacti

chmod 755 /var/www/html/cacti

2)、在mysql建立cacti数据库环境

mysql -u root -h 10.10.38.200 -p

Enter password:

mysql> create database cacti;

Query OK, 1 row affected (0.01 sec)

mysql> grant all on cacti.* to nagios@localhost identified by 'nagios';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;     

Query OK, 0 rows affected (0.00 sec)

 

mysql> quit;

Bye

3)、到cacti根目录下把cacti.sql中的数据导入到数据库cacti

cd  /var/www/html/cacti

mysql -uroot –pyunxing1234 cacti

4)、配置mysql连接参数

vi /var/www/html/cacti/include/config.php

$database_type = "mysql";

$database_default = "cacti";

$database_hostname = "localhost";

$database_username = "nagios";

$database_password = " nagios”;

$database_port = "3306";

 

vi /var/www/html/cacti/include/global.php

$database_type = "mysql";

$database_default = "cacti";

$database_hostname = "localhost";

$database_username = " nagios ";

$database_password = " nagios ";

$database_port = "3306";

 

配置apache

Alias /cacti /var/www/html/cacti

   DirectoryIndex index.php

   AllowOverride all

   order deny,allow

   deny from all

   allow from all

   AddType application/x-httpd-php .php

   php_flag magic_quotes_gpc on

   php_flag track_vars on

 

5)cacti-plugins插件安装

 cd /usr/mpsp/software

 unzip cacti-plugin-0.8.7e-PA-v2.6.zip

 cd  cacti-plugin-arch

[root@yxs cacti-plugin-arch]# ll

总计 124

-rw-r--r-- 1 root root 93070 2009-11-22 cacti-plugin-0.8.7e-PA-v2.6.diff

drwxr-xr-x 5 root root  4096 2009-11-22 files-0.8.7e

-rw-rw-rw- 1 root root 15237 2006-11-10 LICENSE

-rw-rw-rw- 1 root root  2037 2007-11-06 pa.sql

-rw-rw-rw- 1 root root  1230 2009-11-22 Readme.txt

cp cacti-plugin-0.8.7e-PA-v2.6.diff /var/www/html/cacti/

cp pa.sql /var/www/html/cacti/

cd /var/www/html/cacti

patch -p1 -N

mysql -uroot –pyunxing12345 cacti

vi include/global.php

修改一下参数

$config['url_path'] = '/cacti/';

保存退出

6)、建立任务调度

crontab -e

输入以下内容,代表每5分钟来执行后面PHP解析内容,把显示信息重定向到空的路径

*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1

crontab -l

*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1

 

也可手工跑一次:/usr/bin/php /var/www/html/cacti/poller.php

Cactiweb初始化

162557526.jpg

162557872.jpg

 

162557501.jpg

162557489.jpg

162717617.jpg

162717965.jpg

162717729.jpg

 

5.3.4 被监控主机snmp文件设置

安装net-snmp

yum –y net-snmp

有时候安装了net-snmp没有snmpwalk这个命令,那是因为缺少这个包,安装

yum –y install net-snmp-utils

被监控主机需要配置snmp.

vi /etc/snmp/snmpd.conf

1、更改

 com2sec notConfigUser default public

改为

com2sec notConfigUser 10.10.40.218 public

2、更改

access notConfigGroup "" any noauth exact systemview none none

改为

access notConfigGroup "" any noauth exact all none none  

#view all included .1 80

将前面的 # 注释 去掉。 保存退出

 测试snmp是否正常

 #snmpwalk -c public -v 2c localhost 

 #

IP-MIB::ipAdEntIfIndex.61.xxx.xxx.xxx = INTEGER: 2 IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1 IP-MIB::ipAdEntIfIndex.172.xxx.xxx.xxx = INTEGER: 3

也可以用snmpd -f -Le 命令查看当前有没有出什么错

PHP支持JSON扩展

PHP必须安装PDO JSON扩展。由于NPC使用了Ext JS,如果没有JSON扩展,NPC的界面不会出来,只能看到一个空白页面。初始化PHP环境 需要用phpize命令,所以也要安装 php-devel

1)、下载PHPJSON支持插件

wget

tar -jxvf php-json-ext-1.2.1.tar.bz2

cd php-json-ext-1.2.1

phpize

报错如下:

-bash: phpize: command not found

这是因为没有安装php-devel

然后用yum安装php-devel

yum -y install php-devel

安装完成后,

cd  php-json-ext-1.2.1

[root@yxs php-json-ext-1.2.1]# phpize

Configuring for:

PHP Api Version:         20090626

Zend Module Api No:      20090626

Zend Extension Api No:   220090626

./configure

make && make install

vi /etc/php.d/json.ini 添加内容

extension=json.so

保存退出

重起apache

service httpd restart

测试PHP是否支持json扩展

vi /var/www/html/test.php

添加以下内容:

phpinfo();
phpinfo(INFO_GENERAL);
phpinfo(1);
?>

保存退出

在浏览器输入   看到以下信息

json.jpg

ndoutils安装

ndoutils是将Nagios的配置及监控信息存储到数据库里,NPC通过调用ndo所存储的数据来展现Nagios的信息。ndoutils需要用到mysqlmysql-libmysql-inc,因此需要安装mysql-devel。由于刚装系统的时候已经装过了.这个软件本节就不用安装.

1)、安装ndoutils

cd  /usr/mpsp/software/

tar –zxvf ndoutils-1.4b7.tar.gz

cd ndoutils-1.4b7

./configure

--with-mysql-inc=/usr/include/mysql --with-mysql-lib=/usr/lib/mysql --enable-mysql --with-ndo2db-user=nagios--with-ndo2db-group=nagios

make

编译完成后(不需要make install

cd src/

[root@yxs src]# ll

总计 1856

-rw-rw-r-- 1 nagios nagios  22044 2007-11-01 db.c

-rw-r--r-- 1 root   root   216976 04-19 15:48 dbhandlers-2x.o

-rw-r--r-- 1 root   root   216888 04-19 15:48 dbhandlers-3x.o

-rw-rw-r-- 1 nagios nagios 170705 2007-11-01 dbhandlers.c

-rw-r--r-- 1 root   root    56728 04-19 15:48 db.o

-rwxr-xr-x 1 root   root    37849 04-19 15:48 file2sock

-rw-rw-r-- 1 nagios nagios   5064 2007-11-01 file2sock.c

-rw-rw-r-- 1 nagios nagios  10351 2007-01-08 io.c

-rw-r--r-- 1 root   root    24456 04-19 15:48 io.o

-rwxr-xr-x 1 root   root    40287 04-19 15:48 log2ndo

-rw-rw-r-- 1 nagios nagios   6632 2007-11-01 log2ndo.c

-rw-r--r-- 1 root   root     3031 04-19 15:47 Makefile

-rw-rw-r-- 1 nagios nagios   3042 2007-10-03 Makefile.in

-rwxr-xr-x 1 root   root   250897 04-19 15:48 ndo2db-2x

-rwxr-xr-x 1 root   root   250841 04-19 15:48 ndo2db-3x

-rw-rw-r-- 1 nagios nagios  51214 2007-11-01 ndo2db.c

-rwxr-xr-x 1 root   root   128992 04-19 15:48 ndomod-2x.o

-rwxr-xr-x 1 root   root   136625 04-19 15:48 ndomod-3x.o

-rw-rw-r-- 1 nagios nagios 134511 2007-11-01 ndomod.c

-rw-rw-r-- 1 nagios nagios    514 2007-01-08 protonum.c

-rwxr-xr-x 1 root   root    34970 04-19 15:48 sockdebug

-rw-rw-r-- 1 nagios nagios   3250 2007-11-01 sockdebug.c

-rw-rw-r-- 1 nagios nagios   3392 2007-11-01 utils.c

-rw-r--r-- 1 root   root    11480 04-19 15:48 utils.o

把上面标红的几个文件复制到nagiosbin目录下

cp ndomod-3x.o ndo2db-3x log2ndo file2sock /usr/local/nagios/bin

在把插件的两个配置文件ndo2db.cfg-samplendomod.cfg-sample复制到nagios的配置文件目录
cd ../config

cp ndo2db.cfg-sample ndo2db.cfg

cp ndomod.cfg-sample ndomod.cfg

cp ndomod.cfg ndo2db.cfg /usr/local/nagios/etc/

 

修改复制过去的两个配置文件ndomod.cfgndo2db.cfg

cd  /usr/local/nagios/etc/

 

vi ndo2db.cfg

修改以下参数:

socket_name=/usr/local/nagios/var/ndo.sock

db_name=cacti
db_prefix=npc_
db_user=nagios
db_pass=nagios

debug_level=1

debug_file=/usr/local/nagios/var/ndo2db.debug

保存退出

 

vi ndomod.cfg

修改以下参数

output=/usr/local/nagios/var/ndo.sock

buffer_file=/usr/local/nagios/var/ndomod.tmp

保存退出

修改nagios的配置文件,使ndoutils可以在nagios中加载
# vi /usr/local/nagios/etc/nagios.cfg
更改
check_external_commands = 1
command_check_interval = -1
event_broker_options = -1
添加如下内容:
broker_module = /usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
process_performance_data=1 


然后分别启动NDoutilsNagios
/usr/local/nagios/bin/ndo2db-3x –c /usr/local/nagios/etc/ndo2db.cfg
 service nagios restart

NDoutils开机就启动
echo “/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg” >>/etc/rc.local

NPC的安装

(Nagios Plugin for Cacti)是一个Cacti插件,安装后可以在Cacti界面里使用Nagios的功能

1)、获取NPC插件

wget

tar -zxvf npc-2.0.4.tar.gz

cp  npc/ /var/www/html/cacti/plugins/

vi /var/www/html/cacti/include/global.php

添加以下参数

$plugins= array);

$plugins[] = 'npc';

保存退出

2)NPC界面设置

点击(console)菜单栏 user management------->admin

1.jpg

realm permission---plugin management(打勾)

2.jpg

返回(console)菜单栏,点击configuration--------plugin management—安装并激活npc插件

3.jpg

返回(console)菜单栏,点击configuration-------settings----NPC,修改一下三个参数

4.jpg

返回(console)菜单栏,点击插件链接区-NPC

5.jpg

 

至此安装就完成了

分别重起启动mysql httpd ndo nagios

service mysqld restart

service httpd restart

ndo2db-3x先杀掉原先的进程,再启动

[root@yxs config]#         ps -ef |grep ndo2db-3x

root      2513 10849  0 19:17 pts/1    00:00:00 grep ndo2db-3x

nagios   31415     1  0 18:41 ?        00:00:00 /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg

nagios   31643 31415  0 18:41 ?        00:00:00 /usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg

 

kill 31415 

然后运行如下命令启动:  

/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg

service nagios restart

5.3.8Spine的安装

spine是一个基于C语言的,非常快速的轮询引擎。它是默认的cmd.php的可选替代。打算安装spine的原因是:使用cmd.php来完成数据采集存在很大的延迟,执行效率太低了。两厢比较了一下,从添加device好到设备upspine只需要不到一分钟,而cmd等的时间较长,超过10分钟。
当设备down 2分钟之内spine可以发出alert,而cmd可能需要10分钟以上。

1、         下载spine安装包

下载地址:

我下载的包是最新的一个包:cacti-spine-0.8.7.tar.gz

安装spine之前需要两个包:

net-snmp-devel

libtool

安装这两个包

yum -y install libtool

yum -y install net-snmp-devel

2、         安装spine

tar –zxvf  cacti-spine-0.8.7.tar.gz

cd cacti-spine-0.8.7

./configure –prefix=/usr/local/spine

make –j 10

make install

3、         安装完成后,对spine的配置文件进行修改

这里的数据库,数据库用户名和密码和开始配置的相同

vi /usr/local/spine/etc/spine.conf

DB_Host         localhost

DB_Database     cacti

DB_User         nagios

DB_Pass         nagios

DB_Port         3306

4、         验证spine是否正常

/usr/local/spine/bin/spine

测试正确的话,会出现如下信息

SPINE: Using spine config file [../etc/spine.conf]

SPINE: Version 0.8.7 starting

SPINE: Time: 0.0852 s, Threads: 1, Hosts: 3

5、         修改cacti的配置

Console -> Cacti Settings->Paths->Spine Poller File Path
填入cacti-spine安装路径
/usr/local/spine/bin/spine

如下图:

spine.jpg

6、         修改Cacti使用的Poller Type

Console -> Cacti Settings->Poller->Poller Type
在下拉中选择spine,如下图:

spinepoll.jpg

 安装完毕。

六、Cacti的使用 6.1              界面介绍

登陆Cacti后,可以看到左上角是两个选项卡,“console”“graphs”console表示控制台,在此进行所有的配置等操作;而graphs则是用来查看所有服务器的性能图像的界面。

6.2              console菜单

1.         create菜单

New Grahps 创建新图像的快捷方式

2.         Management菜单

图像管理。在这里可以删除,复制图像,Cacti会自动创建图像。不过如果我们有特殊的需要,比如将几张图上的数据合并在一张图像上的话也可以在此手工新建图像;

  图像树。在graphs界面里,图像或devices是树状结构显示的,可以在此设置树的结构;

tree.jpg

管理rrd文件。一般无需修改,Cacti会自己创建rrd文件;

datasource.jpg

设备管理。这是我们最经常需要修改的地方,可以在此创建新的设备或修改其名称等信息。

3.         Collection Methods 菜单

Data Queries Data Input Methods是采集数据的方式,一般我们无需对这两项进行修改;

4.         Templates 菜单

图像模板

  主机模板

  数据模板

这些模板可以导出、导入也可以自己编写,一般无需修改。

5.         Import/Export 菜单

Import Templates ExportTemplates,对上述模板的导入、导出。我们可以在Cacti的官方网站上找到这些模板,不过需要注意模板对于的Cacti的版本。

6.         Configuration 菜单

Cacti的主要配置菜单;

可以在此重新设置对应的程序的路径、版本等信息。也可以设置图像的输出方式(允许ftp)、显示效果、登陆方式(允许使用LDAP)等。

插件管理,在这里管理安装cacti的插件

7.         Utilities 菜单

显示Cacti系统的一些cachelog信息,如果log文件太大建议直接到后台查看;

用户管理。可以在此添加、删除用户,并对每个用户设置详细的权限;

        注销用户

6.3              创建监测点

假设被监测的服务器名叫“TestHost”IP10.10.43.252,SNMPcommunitypublic

进入Cacticonsole面板->

点击“Devices”进入设备面板->

如图:

Devices.jpg

点击右上角的Add 添加新设备—>

addDevoices.jpg

填写要监测服务器的各种信息,其中Host Template请选择“Local LinuxMachine”“ucd/net SNMPHost”(选择一个合适的主机模板)->
点击“Create”保存信息,如果SNMP连接没有问题,左上角会出现该服务器的信息,否则会出现“SNMPerror”的红色字样->

createdDevices.jpg

点击上部的“Create Graphs for this Host”为该设备创建需监测的内容。监测的内容分两种,“GraphTemplates”“Data Query”,区别在于“DataQuery”能根据SNMP信息列出监测项目的信息。例如DataQuery里的“InterfaceStatistics”可以看到该主机所有网卡的信息,这样我们可以选择需要监测的网卡。点击右侧的正方形选择框勾选上要监测的项目->

createdHost.jpg

点击“Create”创建选择的监测内容,已经选择创建的内容会自动变成灰色并且不能再点选。Cacti会自动创建该监测点的rrd文件(在rra文件夹中)、“DataSource”“graph”条目。

createdover.jpg

创建监测点完毕。

6.4              查看监测点

点击“GraphManagement”可以看到刚才创建的监测点对应的图像,注意由于Cacti默认每5分钟到监测服务器上取一次数据,所以刚创建的监测点会出现图像不能显示的现象,需要等几分钟查看才会正常显示。

testhost.jpg

为了方便查看,可以将刚才新创建的设备或图像加入到图像树上:
点击“Graph Tree”进入图像树面板->

Trees.jpg

点击分支名称或“Add”新的分支->

TreesAdd.jpg

点击“Add”,添加新的“Tree Items”>

TreesAddItem.jpg

“Tree Item Type”中选择“Host”“Tree ItemValue”“host”中选择刚才新添加的主机“Test Host”>

AddGraphTreeItem.jpg

点击“Create”

AddGraphTreeItemSuccess.jpg

 

直接在ViewTree中添加一个host节点进行监控无疑是一个简单的方法,但随监控图的增多,将所有的图像放到一个host节点上,当查看图像时图像的显示速度会变慢,而且监控图的条理也不清除,所以通常可以根据监控图监控的功能和监控服务的类型等进行分类,整理出一棵有条理的图像树。可以按下面步骤添加节点。

首先添加一个root节点,“Tree Item Type”中选择“Header”“Title”中填写一个合适的描述性信息,如本例填写“Host Monitor”Host Monitor节点的图像主要是和主机性能相关的一些图像,如CPU、内存、磁盘空间等;

TypeMontior.jpg

点击刚创建的root节点(HostMonitor)后面的Add链接来添加一个Graph

addType.jpg

“Tree ItemType”中选择“Graph”,在“graph”中选择加入想要加入的监控图,重复此过程加入所有你想加入的监控图。

cacti_add_Monitor.jpg

6.5              为已有的HOST添加新的监控图

console控制台下点击“NewGraphs”,选择要添加监控图的主机。在GraphTemplates中选择一个Graph模板,本例选择SNMP - Ceneric OIDTemplate,点击create按钮。

createGraphs.jpg

填写以下信息,在“Title”文本框中填写Graph的名字,在“VerticalLable”文本框中填写描述信息或是所绘图片使用的单位等,显示在所绘图片的左侧,在“name”文本框中填写此数据源的名字,在“LegendColor”中选择画图使用的颜色,在“LegendText”填写图例的名字,在“OID”文本框中填写要监控的主机的OID信息,点击“create”按钮完成Graph的创建。

createG.jpg

完成后监控图如下:

6.6              合并多个数据源到一张图上

console控制台下点击“Graph Management”,然后点击Add链接。

hebin.jpg

“Select Graph Template”下拉框中选择None,在“Host”下拉框中选择None,然后点击create按钮

hebin2.jpg

“Title”文本框中输入Graph的名字。

hebin3.jpg

点击Add链接,添加Graph Items

20081202_d9b73d7af1e3601786f6GEn9U0o9z6A3.jpg

添加多个数据源,将所选的多个数据源画到一张监控图上。

20081202_a241fdcea504694d69bdCbyfYYMCfCk6.jpg

 

20081202_8e110b70ba4561ba490btubtn1lSGlrw.jpg

20081202_3032b483ae9370ac7ae67ayULtdycS2B.jpg

完成后将所画的监控图放到Graph Trees中。

 

七、Cacti脚本以及模板

Cacti脚本及模板论坛:
一个完整的cacti脚本及模板列表:

7.1              Advance Ping 脚本及模板

下载地址:
注:要使用此模板,编译PHP时必须加上--enable-sockets选项来支持套接字。
1
.功能:此模板用来监控一个TCP/UDP端口、ICMP的延时情况和丢包情况。
2
.下载ss_fping.php脚本并放到/usr/local/apache/htdocs/cacti/scripts/目录下,下载cacti_graph_template_ping_advanced_ping_v1_3.xml模板,用cacti的模板导入页将此模板导入

Import.jpg

3.Console选项卡下的左侧菜单栏中选择Devices,为要监控的主机新建一个Devices或选择已有Devices。在Associated Graph Templates中添加Advanced Ping v1.3模板。并点击最上面的Create Graphs for this Host链接。

AssociatedGraphs.jpg

GraphTemplates的选择框中选择PING - Advanced Pingv1.3,然后点击Create按钮,出现以下WEB页。

20081202_2084cac968049193cd301PqFGgOVXLbo.jpg

第一项意思是一次向要监控的端口发送多少个探测包(默认20个),第二项是使用的协议,可以是ICMPTCPUDP,第三项是要监控的端口号(只有第二项为TCP或是UDP时使用),填写完成后点击create按钮。
Console控制台选项卡下的左侧菜单中选择DateSources,选择以上新建的数据源可以修改以上填写的信息。

20081202_8666a4445937a4e64ce3pWxtPIKO3PmK.jpg

在控制台选项卡下左侧菜单中选择Graph Trees可以组织一个树状视图

Advanced Ping.jpg

Pkt Loss:丢包数量/20 * 100%(每次ping 20个包)
Avg Loss:
平均丢包情况
Latency
:延时情况
Avg Latency
:平均延时情况

7.2               

 

八、Nagiosql安装 8.1Nagiosql的安装配置方法

nagiosql是一个web配置nagios的工具,可以用web页面里添加主机、服务、主机组、服务组、命令、通知组…..

 

按照Nagiosql的官方的需求说明:

有如下需求:

·         Webserver e.g. Apache 1.x or above

·         PHP 4.3 or above

·         MySQL 4.1 or above

·         Nagios 2 or above

·         PEAR Module: HTML_Template_IT 1.1 or above

·         PHP Extension: gettext --with-gettext使用这个参数启用

·         PHP Extension: mysql --with-mysql使用这个参数启用

·         PHP Extension: ftp --enable-ftp使用这个参数启用

·         Javascript enabled at your Webbrowser

 

然后apache,php,mysql,nagios我们已经安装了,安装路径如下

/usr/bin/mysql

/usr/sbin/httpd

/usr/bin/php

/usr/local/nagios/bin/nagios

 

1、  注意在编译php时候要将gettextmysqlftp三个扩展启用。

2、  安装pear模块方法如下:

/usr/local/bin/pear install HTML_Template_IT

但是PHP一开始没有安装pear包,这时候需要

yum install php-pear
pear upgrade PEAR

来安装

3、  下载nagiosql并解压到/var/www/html目录中,下载地址如下

下载的nagiosql为:nagiosql_311.tar.gz

tar –zxvf nagiosql_311.tar.gz

cp nagiosql /var/www/html

nagios赋权

chown -R nagios.nagios nagiosql

chmod –R 755 nagiosql

4、  创建nagiosql的配置文件目录

mkdir –p /usr/local/nagios/nagiosql

mkdir –p /usr/local/nagios/nagiosql/hosts

mkdir –p /usr/local/nagios/nagiosql/services

mkdir –p /usr/local/nagios/nagiosql/backup

mkdir –p /usr/local/nagios/nagiosql/backup/hosts

backup/services

mkdir –p /usr/local/nagios/nagiosql/import

并对nagiosql赋权

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

chmod –R 755  /usr/local/nagios/nagiosql/

 

5、  nagiosqlinstall目录中touch一个ENABLE_INSTALLER文件(该文件启用安装向导)

cd  /var/www/html/nagiosql/install

touch ENABLE_INSTALLER

 

6、  安装检查

然后登录

向导会自动检查php环境和系统权限。都通过就》点击下一步

在这个过程中会报错SSH是不支持的

这时候需要安装SSH

按照如下步骤操作:

yum –y install libssh2-devel

下载 .tgz到的你的软件存放目录/usr/mpsp/software

C d /usr/mpsp/software

tar -zxvf  ssh2-0.11.2 .tgz

cd ssh2-0.11.2

phpsize

./configure --with-ssh2

make

完成之后,会在当前目录中的modules目录中生成你所需要的ssh2.so文件

下面配置,让apache认识ssh2

这个复制到你的.so文件的地方就行了,不过这个地方要注意,不同版本,so文件存放的位置有点差别。

我的默认路径是

cd /usr/mpsp/software / ssh2-0.11.2/modules

cp ssh2.so /usr/lib64/php/modules/

还有就是添加配置到php的配置的配置文件php.ini

添加的内容如下:

extension=ssh2.so

然后重起apache

service httpd restart

在用命令/usr/bin/php -i |grep ssh2

 安装成功的话,将看到如下信息:

Registered PHP Streams => https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, ssh2.shell, ssh2.exec, ssh2.tunnel, ssh2.scp, ssh2.sftp, phar, zip 

PHP Warning:  Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Chongqing' for 'CST/8.0/no DST' instead in Unknown on line 0

ssh2

libssh2 version => 1.2.7

banner => SSH-2.0-libssh2_1.2.7

 

7、  系统设置部分

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MySQL
服务器                    localhost
MySQL
服务器端口                3306
数据库名                       cacti
NagiosQL
数据库用户             nagios
NagiosQL
数据库密码             nagios
如果数据库存在是否删除?       (如果是第一次安装不需要打勾)
Mysql
管理用户                  root
MySQL
管理密码                  yunxing12345

初始Nagios登录             admin
初始NagiosQL密码               12345
请重复输入密码                 12345

Nagios参考配置文件
导入Nagios参考配置             (如果是新手,可以导入进行学习)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

8、  提示安装完成

NagiosQL Installation: 完成安装

9、  删除,点击完成

rm  /var/www/html/nagiosql/install/ENABLE_INSTALLER

访问访问你安装好的nagiosql

10、              配置nagiosnagiosql的关系

点击右侧栏的管理—>设置,然后修改配置选项,语言选择中文简体,修改完成后,点击保存

nagiosql.jpg

点击管理à域,见下图:

nagiosY.jpg

点击localhost的修改,出现如下图片:

nagiosX.jpg

 

 

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

*                        localhost
描述*                      Local installation
服务器名*                  localhost
方法                      SSH/SFTP

配置目录
基目录*                    /usr/local/nagios/nagiosql
主机目录*                  /usr/local/nagios/nagiosql/hosts/
服务目录*                  /usr/local/nagios/nagiosql/services/
备份目录*                  /usr/local/nagios/nagiosql/backup/
主机备份目录*              /usr/local/nagios/nagiosql/backup/hosts/
服务备份目录*              /usr/local/nagios/nagiosql/backup/services/
Nagios
基目录*              /usr/local/nagios/nagios/etc
导入路径                   /usr/local/nagios/nagiosql/import/

Nagios命令文件             /usr/local/nagios/var/rw/nagios.cmd
Nagios
执行文件             /usr/local/nagios/bin/nagios
Nagios
进程文件             /usr/local/nagios/var/nagios.lock

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

完成上面的填入后》点击完成。

九、            从旧的3.x版本升级到当前版本

如果是使用3.x的旧版,肯定是要尽快升级到当前版本。新版本修正了许多错误,下面假定已经根据的操作步骤从源代码包开始安装好Nagios,下面可以安装更新的版本。虽然下面的操作都是用root操作的,但可以不用root权限也可以升级成功。下面是升级过程...

先确认已经备份好现有版本的Nagios软件和配置文件。如果升级过程中有不对的,至少可以回退到旧版本。

切换为Nagios用户。使用Debian/Ubuntu系统的可以用sudo -s nagios来切换。

su -l nagios

下载最新的Nagios安装包()

wget 3.x.tar.gz

展开源码包。

tar xzf nagios-3.x.tar.gz

cd nagios-3.x

运行Nagios源程序的配置脚本,把加入外部命令的组名加上,象这样:

./configure --with-command-group=nagcmd

编译源程序

make all

安装升级后的二进制程序、文档和Web接口程序。在这步时旧配置文件还不会被覆盖。

make install

验证配置并重启动Nagios

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

/sbin/service nagios restart

 

十、            Q&A

1、  nagiosweb页面的CGI设置,点击comments这个选项的时候,报错没有权限

解决办法:修改cgi.cfg

use_authentication=1

default_user_name=test(这个用户是你一开始安装nagiosweb接口登录用户)

2、  nagios的日志中报错ndomod: Still unable to connect to data sink

 

解决办法:1)、删除/usr/local/nagios/var目录下面的ndo. Sock

         2)、修改配置文件/usr/local/nagios/etc/ndomod.cfg

output_type=tcpsocket

 

         3)、加载配置文件并重起nagios服务

             /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg  

             service nagios restart
3
、监控交换机出现的问题

解决check_mrtgtraf: Unable to open MRTG log file

 


Install MRTG:
 
To monitor bandwidth usages of router/switch you must have mrtg installed on system. Before installation please make sure you have install gd, libpng, zlib packages.
 

1. Download MRTG using yum install mrtg

2. Now you need not to create mrtg configuration file. Use cfgmaker.
cfgmaker --global 'WorkDir: /var/www/html/mymrtg' --global 'Options[_]: bits,growright' --output /etc/httpd/conf/mrtg.cfg public@
6. Go to respective location and make sure that above command has created respective files.
cd /var/www/html/mymrtg;
 
ls -al /etc/httpd/conf/mrtg.cfg

7. Run this command to update mrtg log file.
env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg


10. Set cron to run above command every 5 minute.
 
crontab -e
 

11. insert the code below and save,
*/5 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/mymrtg.cfg –logging /var/log/mrtg.log
*/5 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/httpd/conf/mrtg.cfg --logging /var/log/mrtg.log

12. Restart cron service.
/etc/init.d/crond restart

13. Confirm that it is been configured.
 
{name of html file}

Actually when you run mrtg command it searches for respective router community collects all data from router. Accordingly it creates log file. Like in my case it has found port 2 running on router and hence created file 172.17.42.22_2.log, 172.17.42.22_2.html. So I can access my graph through this link,
_2.html

Procedure to monitor Bandwidth Usages in Nagios:
 
1. Default installation directory of nagios is /usr/local/nagios/.
 

2. Open switch.cfg file
 
nano /etc/nagios/objects/switch.cfg

3. Make changes according to your router specifications. Like,
define host{
use generic-switch
 
host_name Router_1
 
alias Router 1
 
address 172.17.42.22
 
hostgroups switches
}
4. You can also set PING, Uptime, Ports Link Status etc.
define service{
use generic-service ; Inherit values from a template
host_name Router_1 ; The name of the host the service is associated with
service_description PING ; The service description
check_command check_ping!200.0,20%!600.0,60% ; The command used to monitor the service
normal_check_interval 5 ; Check the service every 5 minutes under normal conditions
retry_check_interval 1 ; Re-check the service every minute until its final/hard state is determined
}

define service{
use generic-service ; Inherit values from a template
host_name Router_1
service_description Uptime
check_command check_snmp!-C public -o sysUpTime.0 -H 172.17.42.22
}

define service{
use generic-service ; Inherit values from a template
host_name Router_1
service_description Port 2 Link Status
check_command check_snmp!-C public -o ifOperStatus.2 -r 1 -H 172.17.42.22
}

define service{
use generic-service ; Inherit values from a template
host_name Router_1
service_description Port 2 Bandwidth Usage
check_command check_local_mrtgtraf!/var/www/html/mymrtg/172.17.42.22_2.log!AVG!1000000,1000000!5000000,500 0000!10
}

5. Verify the configuration of nagios
 
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

6. Restart nagios service.
/etc/init.d/nagios restart

 

 

 

 

4通过web界面修改某个服务时报错

1.通过web界面修改某个服务时报错

例如对某个服务进行临时安排其执行时间,或者不让它发警告,web页面上都有这样的设置.但是常常会有错误信息如下:

Could not open command file '/usr/local/nagios/var/rw/nagios.cmd' for update!

The permissions on the external command file and/or directory may be incorrect. Read the FAQs on how to setup proper permissions.

An error occurred while attempting to commit your command for processing.

 

关于这部分在nagios.cfg中有下面的内容

# EXTERNAL COMMAND FILE

# This is the file that Nagios checks for external command requests.

# It is also where the command CGI will write commands that are submitted

# by users, so it must be writeable by the user that the web server

# is running as (usually 'nobody').  Permissions should be set at the

# directory level instead of on the file, as the file is deleted every

# time its contents are processed.

这段话的核心意思是apache的运行用户要有对文件写的权限.权限应该设置在目录上,因为每次文件的内容被处理后文件就会被删掉

 

command_file=/usr/local/nagios/var/rw/nagios.cmd

本来将apache2运行的用户apache加到nagios组就应该可以了的

但是这个却不行,就将rw这个目录及其子文件的权限改了777,这样就可以了.

后来发现nagios.cmd的权限还是自动变回了rw-rw----,但是发命令没有受到影响,不报错了.(难道是用重启nagios,让其生效?)

 

3、  如果在安装nrpe的时候报错:

4、 安装NRPE插件,make的时候报了如下的错误

gcc -g -O2 -o check_http check_http.o sslutils.o netutils.o utils.o -L/home/jacky/nagios/nagios-plugins-1.4.9/plugins -L/usr/local/openssl/lib

../lib/libnagiosplug.a ../gl/libgnu.a -lnsl -lresolv -lssl -lcrypto

/usr/local/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':

dso_dlfcn.c:(.text+0x2b4): undefined reference to `dlsym'

dso_dlfcn.c:(.text+0x361): undefined reference to `dlerror'

/usr/local/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':

dso_dlfcn.c:(.text+0x3d4): undefined reference to `dlsym'

dso_dlfcn.c:(.text+0x481): undefined reference to `dlerror'

/usr/local/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':

dso_dlfcn.c:(.text+0x4dd): undefined reference to `dlclose'

/usr/local/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':

dso_dlfcn.c:(.text+0x592): undefined reference to `dlopen'

dso_dlfcn.c:(.text+0x5fb): undefined reference to `dlclose'

dso_dlfcn.c:(.text+0x623): undefined reference to `dlerror'

collect2: ld returned 1 exit status

make[2]: *** [check_http] Error 1

make[2]: Leaving directory `/home/jacky/nagios/nagios-plugins-1.4.9/plugins'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/home/jacky/nagios/nagios-plugins-1.4.9'

make: *** [all] Error 2

make LDFLAGS+=-ldl

export CFLAGS=-ldl

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

make all

 

 

 

 

 

 

 

 

 

 

 

由于很多坛友不了解此plugins的用法,加上对nagios的了解不深,导致配置过程艰难。希望此说明可以降低此plugins的配置难度。
check_traffic.sh
的配置说明:
1.
程序说明
[root@centos4 ~]# ./check_traffic.sh -h
Usage:
./check_traffic.sh [ -v ] -V 1|2c|3 -C snmp-community -H host [ -L ] -I interface -w in,out-warning-value  -c in,out-critical-value -K/M -B/b
Example:
./check_traffic.sh -V 2c -C public -H 127.0.0.1 -I 4 -w 200,100 -c 300,200 -K -B
If you don't use -K/M -B/b options, default -K -b, corresponding to Kbps.
Make sure that the check interval greater than 30 Seconds.
Or modify the Max_Interval var in this file Line 180.
And, if you want in Verbose mode, use -v, to check the debug messages in the file /tmp/check_traffic.$$.
Or use ./check_traffic.sh [ -v ] -V 1|2c|3 -C snmp-community -H host -L
To list all interfaces on sepecify host.
2.
-L选项列出对应主机所有的interface,来确定你要监控的网络接口(如果能你确认接口的index值,这一步可以省略)。
通过输出,我们确认要监控的网络接口为4,对应为"Macronix MX98715-Based Ethernet Adapter (Generic) - 数据包计划程序微型端口"
[root@centos4 ~]# ./check_traffic.sh -V 2c -C public -H 192.4.18.1 -L
List Interface for host 192.4.18.1.
Interface index 1 orresponding to  MS TCP Loopback interface
Interface index 2 orresponding to  VMware Virtual Ethernet Adapter for VMnet8
Interface index 3 orresponding to  VMware Virtual Ethernet Adapter for VMnet1
Interface index 4 orresponding to  Macronix MX98715-Based Ethernet Adapter (Generic) -
数据包计划程序微型端口
3.
按照说明,选择版本为2c(一般选择1或者2c),communitypublicinterface4,单位为KB/sin流量对应warning/critical值为200/400out流量对应warning/critical值为300/500.
[root@centos4 ~]# ./check_traffic.sh -V 2c -C public -H 192.4.18.1 -I 4 -w200,300 -c400,500 -K -B
Can not found data in the history data file.
If it's the first time for this plugins, that's OK.
Otherwise,please use debug mode and check the debug file.
4.
第一次执行,因为history data file不存在,因此会由此提示,可以忽略。
如果每次执行都忽略,则要检查/var/tmp下是否有/var/tmp/check_traffic_${Host}_${Interface}.hist_dat文件生成。
文件的内容是系统当前的时间,inout当前的数值。
[root@centos4 ~]# cat /var/tmp/check_traffic_192.4.18.1_4.hist_dat
1205785203|3842088040|1154770288
5.
为了避免采集时间间隔过短影响流量数据的真实性及代表性,以及对系统负载造成的影响,脚本默认的Max_Interval=30
如果需要使用更小的时间间隔,可以在脚本中修改此数值(一般系统,建议不要使用更小的时间间隔)。
[root@centos4 ~]# ./check_traffic.sh -V 2c -C public -H 192.4.18.1 -I 4 -w200,300 -c400,500 -K -B
The check interval must greater than 30 Seconds. But now it's 23.
Please retry it later.
[root@centos4 ~]# ./check_traffic.sh -V 2c -C public -H 192.4.18.1 -I 4 -w200,300 -c400,500 -K -B
OK - The Traffic In is 0.2500KB, Out is 0.6250KB, Total is 0.8750KB. The Check Interval is 122s |In=0.2500KB;200;400;0;0 Out=0.6250KB;300;500;0;0 Total=0.8750KB;500;900;0;0 Interval=122s;1200;1800;0;

6. command
的配置:
以下示例中,使用-M -b选项,对应为单位Mbps。如果使用其他单位,请自行修改。
Command:
define command{
        command_name    check_traffic_nv
        command_line    $USER1$/check_traffic.sh  -V 2c -C not_public -H $HOSTADDRESS$ -I $ARG1$ -w $ARG2$ -c $ARG3$ -M -b
        }
7. Service
的配置:
注意,要确认retry_intervalnormal_check_interval的时间间隔不要小于脚本的Max_Interval时间。
Service:
define service{
        use                             local-service         ; Name of service template to use
        host_name                       localhost
        service_description             check_nv_traffic_eth0
        check_command                   check_traffic_nv!2!12,30!15,35
        notifications_enabled           1
        normal_check_interval           5   ;5
分钟
retry_interval          1   ;1
分钟
        }
8.
有关Graphing的配置:
如果你正在使用NagiosGrapher,请参考步骤9
如果你正在使用PNP,请参考步骤10
9. NagiosGrapher
的配置:
注意:此例中使用的是Mbps,如果使用其他单位,如Kbps,请替换一下regex中的文字,方可正常生成流量图。
NagiosGrapher:
templates/standard/check_traffic.ncfg
#---
#NagiosGrapher Template for check_traffic
#Author:MariusHein
#Remodified by
at 2008-2-12
#---
define ngraph{
        service_name            check_nv_traffic
        graph_perf_regex        In=(\d+\.\d+)Mbps;
        graph_value             In
        graph_units             Mbps
        graph_legend            In
        graph_legend_eol        none
        page                    In
        rrd_plottype            LINE2
        rrd_color               ff8888
}
define ngraph{
        service_name            check_nv_traffic
        graph_perf_regex        Out=(\d+\.\d+)Mbps;
        graph_value             Out
        graph_units             Mbps
        graph_legend            Out
        graph_legend_eol        none
        page                    Out
        rrd_plottype            LINE2
        rrd_color               ff0000
}
define ngraph{
        service_name            check_nv_traffic
        graph_perf_regex        Total=(\d+\.\d+)Mbps;
        graph_value             Total
        graph_units             Mbps
        graph_legend            Total
        graph_legend_eol        none
        page                    Total
        rrd_plottype            LINE2
        rrd_color               ff0000
}
# [EOF]
10. PNP
的配置
plugins performance data符合Nagios API规范,因此PNPdefault.php即可解析性能数据,因此不再自定义模板文件,使用其缺省值。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NRPE执行root权限脚本(sudo问题)

2011-03-07 22:08

一个监控memcacheq的脚本,只能root执行,现需要NRPE执行。

之前尝试过使用setuid,发现不行,最后发现sudo 可以。

 

为了使nagios  sudo root事不用修改密码,先修改 /etc/sudoers
vi  /etc/sudoers:

添加
nagios ALL=(ALL) NOPASSWD:/usr/lib64/nagios/plugins/check_memcacheq_stat.sh
最好进行sudo的一些控制,严禁配置为

nagios ALL=NOPASSWD:ALL

 

监控中心机上

 [root@monitor-abc ~]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.x.x -c check_21201_mq_new_all_note
NRPE: Unable to read output

 

修改client nrpe.cfg

command[check_21201_mq_new_all_note]=/usr/bin/sudo /usr/lib64/nagios/plugins/check_memcacheq_stat.sh -w 100 -c 120 -d /home/d139/var/www/memcacheq21201/mq_new_all_note >> /tmp/output 2>&1

 

查看错误日志

[root@abc.com nagios]# cat /tmp/output
sudo: sorry, you must have a tty to run sudo

 

取消sudo中需要tty运行的设置

[root@abc.com nagios]# visudo
# Defaults    requiretty

 

监控中心机上再次测试

 [root@monitor-abc ~]# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.x.x -c check_21201_mq_new_all_note
OK -[21:57:04]Number of records in the database is 0.

 

完成。

需要做通ssh的权限

 

 

 

本例通过检测远程机器上的resing服务,当服务出现问题时通过的事件处理逻辑来重启远程机器上的resing服务。

1.配置在服务器(10.10.40.218)上无密码登录远程机器(resing服务运行在上面-10.10.43.252

[root@ ~]# su

[@ ~]$ ssh-keygen -t rsa

# 下面一直回车,不要设置密码

Generating public/private rsa key pair.

Enter file in which to save the key (/home//.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home//.ssh/id_rsa.

Your public key has been saved in /home//.ssh/id_rsa.pub.

The key fingerprint is:

d2:82:61:12:53:f9:53:75:77:8d:32:c0:ca:c8:20:60

# 将生成的密钥拷贝到要远程登录的机器上

[@ ~]$ scp .ssh/id_rsa.pub 10.10.43.252:/home//

password:

id_rsa.pub  100%  233  0.2KB/s  00:00

# 在要远程登录的机器上配置公钥

[@ ~]$ ssh

password:

Last login: Sat Nov 29 22:30:55 2008 from 10.10.43.252

[@nagios1 ~]$ cat id_rsa.pub >> .ssh/authorized_keys

[@nagios1 ~]$ chmod 600 .ssh/authorized_keys

[@nagios1 ~]$

logout

Connection to 10.10.43.252 closed.

# 测试无密码登录

[@ ~]$ ssh nagios@10.10.43.252

Last login: Sat Nov 29 22:35:27 2008 from 10.10.43.252

2.在远程机器上配置sudo

使用户可以以root身份运行/usr/local//libexec/eventhandlers/restart-resing脚本

[root@MySQL ~]# visudo

  ALL=(root) NOPASSWD:/usr/local//libexec/eventhandlers/restart-resing

阅读(5985) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~