分类: LINUX
2012-05-14 15:02:55
完整配置文档
目录
TOC \o "1-3" \h \z \u
Nagios是一款用于系统和网络监控的应用程序。它可以在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息。
Nagios最初被设计为在linux系统之上运行,然而它同样可以在类Unix的系统上运行。
Nagios更进一步的特征包括:
1. 监控网络服务(SMTP、POP3、HTTP、NNTP、PING等);
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程序模块statusmap和trends这两个模块里需要这个库
主机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安装Apache1. 下载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安装GCC1. 下载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这三个库。具体操作如3、4、5、6步骤。
安装完这三个库后,为了防止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. MPFR和MPC都依赖于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和插件程序包下载Nagios和Nagios插件的软件包(访问)站点以获得最新版本
建立一个软件源目录
#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),看是否存在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 |
#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设置Fedora与SELinux(安全增强型Linux)同步发行与安装后将默认使用强制模式。这会在你尝试联入Nagios的CGI时导致一个"内部服务错误"消息。
如果是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,也就是图中运行NRPE的remote 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.252的java进程使用情况.但是很遗憾,在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选项,即可看到如下页面
2.3.17、不以xinetd运行nrpe
因为我们按照nrpe的安装文档安装下来,nrpe是在xinetd下面运行的,还有一种方式是像nagios那样以单独的daemon来运行.这样比较好控制.
方法:
编辑 /etc/services将nrpe注释掉
# 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.2、nagios用户及组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
操作过程 、在监控主机安装rrdtool1. 在监控主机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-perfdata和process-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是否安装正确
为被监控主机linuxtone(10.10.43.53)和监控主机localhost(10.10.38.200)这两台主机在主机图标旁边加个小太阳标记
为被监控主机linuxtone(10.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
出现上述文件,则证明安装成功,生成数据成功
打开网页,然后在主机localhost和linuxtone旁可以看到小太阳图标,如下图:
点击小太阳图标,就可以看到图表,如下图:
注:如果点击小太阳时系统提示“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_commands和host_notification_commands这两个参数后面分别添加两个值notify-service-by-sms和notify-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
Apache:httpd-2.2.3-31.el5
PHP:php-5.3.6.tar.gz
Mysql:mysql-5.0.22
Net-snmp:net-snmp-5.3.2.2-7.el5
RRDtool:rrdtool-1.3.8.tar.gz(cacti不支持1.4版本)
Cacti:cacti-0.8.7e.tar.gz
架构图和工作原理图1)、Cacti的架构图
数据实现层 |
Apache |
php |
数据存储层 |
mysql |
rrdtool |
数据采集层 |
net-snmp |
script |
2)、Cacti的工作原理图,如图5.2
安装过程 、安装基础软件
1)、先安装mysql、php、apche
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
、Cacti的web初始化
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)、下载PHP的JSON支持插件
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);
?>
保存退出
在浏览器输入 看到以下信息
、ndoutils安装
ndoutils是将Nagios的配置及监控信息存储到数据库里,NPC通过调用ndo所存储的数据来展现Nagios的信息。ndoutils需要用到mysql的mysql-lib及mysql-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
把上面标红的几个文件复制到nagios的bin目录下
cp ndomod-3x.o ndo2db-3x log2ndo file2sock /usr/local/nagios/bin
在把插件的两个配置文件ndo2db.cfg-sample和ndomod.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.cfg和ndo2db.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
然后分别启动NDoutils和Nagios
/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
(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
在realm permission---plugin management(打勾)
返回(console)菜单栏,点击configuration--------plugin management—安装并激活npc插件
返回(console)菜单栏,点击configuration-------settings----NPC,修改一下三个参数
返回(console)菜单栏,点击插件链接区-NPC
至此安装就完成了
分别重起启动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.8、Spine的安装spine是一个基于C语言的,非常快速的轮询引擎。它是默认的cmd.php的可选替代。打算安装spine的原因是:使用cmd.php来完成数据采集存在很大的延迟,执行效率太低了。两厢比较了一下,从添加device好到设备up,spine只需要不到一分钟,而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
如下图:
6、 修改Cacti使用的Poller Type
Console -> Cacti Settings->Poller->Poller
Type
在下拉中选择spine,如下图:
安装完毕。
六、Cacti的使用 6.1 界面介绍登陆Cacti后,可以看到左上角是两个选项卡,“console”和“graphs”。console表示控制台,在此进行所有的配置等操作;而graphs则是用来查看所有服务器的性能图像的界面。
6.2 console菜单1. create菜单
New Grahps 创建新图像的快捷方式
2. Management菜单
图像管理。在这里可以删除,复制图像,Cacti会自动创建图像。不过如果我们有特殊的需要,比如将几张图上的数据合并在一张图像上的话也可以在此手工新建图像;
图像树。在graphs界面里,图像或devices是树状结构显示的,可以在此设置树的结构;
管理rrd文件。一般无需修改,Cacti会自己创建rrd文件;
设备管理。这是我们最经常需要修改的地方,可以在此创建新的设备或修改其名称等信息。
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系统的一些cache和log信息,如果log文件太大建议直接到后台查看;
用户管理。可以在此添加、删除用户,并对每个用户设置详细的权限;
注销用户
6.3 创建监测点假设被监测的服务器名叫“TestHost”,IP为10.10.43.252,SNMP的community为public。
进入Cacti的console面板->
点击“Devices”进入设备面板->
如图:
点击右上角的Add 添加新设备—>
填写要监测服务器的各种信息,其中Host Template请选择“Local LinuxMachine”或“ucd/net SNMPHost”(选择一个合适的主机模板)->
点击“Create”保存信息,如果SNMP连接没有问题,左上角会出现该服务器的信息,否则会出现“SNMPerror”的红色字样->
点击上部的“Create Graphs for this Host”为该设备创建需监测的内容。监测的内容分两种,“GraphTemplates”和“Data Query”,区别在于“DataQuery”能根据SNMP信息列出监测项目的信息。例如DataQuery里的“InterfaceStatistics”可以看到该主机所有网卡的信息,这样我们可以选择需要监测的网卡。点击右侧的正方形选择框勾选上要监测的项目->
点击“Create”创建选择的监测内容,已经选择创建的内容会自动变成灰色并且不能再点选。Cacti会自动创建该监测点的rrd文件(在rra文件夹中)、“DataSource”和“graph”条目。
创建监测点完毕。
6.4 查看监测点点击“GraphManagement”可以看到刚才创建的监测点对应的图像,注意由于Cacti默认每5分钟到监测服务器上取一次数据,所以刚创建的监测点会出现图像不能显示的现象,需要等几分钟查看才会正常显示。
为了方便查看,可以将刚才新创建的设备或图像加入到“图像树”上:
点击“Graph Tree”进入“图像树”面板->
点击分支名称或“Add”新的分支->
点击“Add”,添加新的“Tree Items”->
“Tree Item Type”中选择“Host”,“Tree ItemValue”的“host”中选择刚才新添加的主机“Test Host”->
点击“Create”。
直接在ViewTree中添加一个host节点进行监控无疑是一个简单的方法,但随监控图的增多,将所有的图像放到一个host节点上,当查看图像时图像的显示速度会变慢,而且监控图的条理也不清除,所以通常可以根据监控图监控的功能和监控服务的类型等进行分类,整理出一棵有条理的图像树。可以按下面步骤添加节点。
首先添加一个root节点,“Tree Item Type”中选择“Header”,“Title”中填写一个合适的描述性信息,如本例填写“Host Monitor”,Host Monitor节点的图像主要是和主机性能相关的一些图像,如CPU、内存、磁盘空间等;
点击刚创建的root节点(HostMonitor)后面的Add链接来添加一个Graph;
在“Tree ItemType”中选择“Graph”,在“graph”中选择加入想要加入的监控图,重复此过程加入所有你想加入的监控图。
6.5 为已有的HOST添加新的监控图
在console控制台下点击“NewGraphs”,选择要添加监控图的主机。在GraphTemplates中选择一个Graph模板,本例选择SNMP - Ceneric OIDTemplate,点击create按钮。
填写以下信息,在“Title”文本框中填写Graph的名字,在“VerticalLable”文本框中填写描述信息或是所绘图片使用的单位等,显示在所绘图片的左侧,在“name”文本框中填写此数据源的名字,在“LegendColor”中选择画图使用的颜色,在“LegendText”填写图例的名字,在“OID”文本框中填写要监控的主机的OID信息,点击“create”按钮完成Graph的创建。
完成后监控图如下:
6.6 合并多个数据源到一张图上在console控制台下点击“Graph Management”,然后点击Add链接。
在“Select Graph Template”下拉框中选择None,在“Host”下拉框中选择None,然后点击create按钮
在“Title”文本框中输入Graph的名字。
点击Add链接,添加Graph Items。
添加多个数据源,将所选的多个数据源画到一张监控图上。
完成后将所画的监控图放到Graph Trees中。
七、Cacti脚本以及模板
Cacti脚本及模板论坛:
一个完整的cacti脚本及模板列表:
下载地址:
注:要使用此模板,编译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的模板导入页将此模板导入
3).在Console选项卡下的左侧菜单栏中选择Devices,为要监控的主机新建一个Devices或选择已有Devices。在Associated Graph Templates中添加Advanced Ping v1.3模板。并点击最上面的Create Graphs for this Host链接。
在GraphTemplates的选择框中选择PING - Advanced Pingv1.3,然后点击Create按钮,出现以下WEB页。
第一项意思是一次向要监控的端口发送多少个探测包(默认20个),第二项是使用的协议,可以是ICMP、TCP、UDP,第三项是要监控的端口号(只有第二项为TCP或是UDP时使用),填写完成后点击create按钮。
在Console控制台选项卡下的左侧菜单中选择DateSources,选择以上新建的数据源可以修改以上填写的信息。
在控制台选项卡下左侧菜单中选择Graph Trees可以组织一个树状视图
Pkt Loss:丢包数量/20 * 100%(每次ping 20个包)
Avg Loss:平均丢包情况
Latency:延时情况
Avg Latency:平均延时情况
八、Nagiosql安装 8.1、Nagiosql的安装配置方法
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时候要将gettext、mysql、ftp三个扩展启用。
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、 在nagiosql的install目录中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、 配置nagios和nagiosql的关系
点击右侧栏的管理—>设置,然后修改配置选项,语言选择中文简体,修改完成后,点击保存
点击管理à域,见下图:
点击localhost的修改,出现如下图片:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
域* 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来切换。
下载最新的Nagios安装包()。
展开源码包。
tar xzf nagios-3.x.tar.gz
cd nagios-3.x
运行Nagios源程序的配置脚本,把加入外部命令的组名加上,象这样:
编译源程序
安装升级后的二进制程序、文档和Web接口程序。在这步时旧配置文件还不会被覆盖。
验证配置并重启动Nagios
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/sbin/service nagios restart
十、 Q&A
1、 nagios的web页面的CGI设置,点击comments这个选项的时候,报错没有权限
解决办法:修改cgi.cfg
use_authentication=1
default_user_name=test(这个用户是你一开始安装nagios的web接口登录用户)
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,
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),community为public,interface为4,单位为KB/s,in流量对应warning/critical值为200/400,out流量对应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文件生成。
文件的内容是系统当前的时间,in及out当前的数值。
[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_interval及normal_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规范,因此PNP的default.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