CactiNagiosNtop整合安装于CentOS上

 

http://freeze.blog.51cto.com/1846439/386828

 手把手实现企业级开源监控软件cacti+nagios+ntop整合(图解)
2010-09-03 11:05:48

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://freeze.blog.51cto.com/1846439/386828
此文凝聚笔者不少心血请尊重笔者劳动,转载请注明出处。http://freeze.blog.51cto.com/
 
做一名运维工程师,监控恐怕是日常生活中必不可少的活了,在企业中的监控,大多是用开源软件来实现的,(为什么要用开源?省钱呗..呵呵) 而且开源软件也有着非常优秀的表现,其中著名的有cacti,nagios,ntop,Ganglia,等等..而cacti+nagios+ntop的结合应用,能为企业做到更细微的保证。下面笔者先逐一介绍下:
 
一、cacti的简介
 
网络管理(如主机负载、网络流量等的监控)是系统管理岗工作人员日常工作的一个重要组成部分,许多厂商为此提供了各自的解决方案。早期开源网管软件中比较著名的其中之一的MRTG,是一款使用perl开发的,通过SNMP协议实现管理工作站与设备代理进程间的通讯,以完成对设备的管理和运行状态的监视。MRTG安装配置简单、图形界面直观,因为广受当时网络管理人员的喜爱,也为笔者早期的网络管理工作立下了汗马功劳。
 
但MRTG也有许多固有的缺点,如:使用文本式的数据库,数据不能重复使用;只能按日、周、月、年来查看数据;每图只能画两个DS(一条线、一个块);每取一次数据即需要绘图一次,浪费系统资源;同时,它也没有提供管理功能。
 
有鉴于此,MRTG的作者后来另外又开发了一个工具,即rrdtool。rrdtool是一个性能优良的数据记录器同时也是一个功能强大的绘图引擎。它使用rrd的数据存储格式,使用得数据可以重复使用;在绘图方面,它可以定义任意时间段进行绘图,能绘出多个DS。但它也有自己的缺点:虽然提供了强大的数据存储及绘图功能,但rrdtool却没有提供类似于MRTG中集成的数据采集功能;同时,它提供了过多的参数,以至于在命令行界面使用起来极为不便;此外,rrdtool也没有提供管理功能。于是cacti应运而生。
 
 
简单来说,Cacti就是rrdtool的一个forefront,它内置了快速的获数据取工具、优秀的绘图模板以及许多设计精良的数据获取脚本,从而可以通过结合rrdtool强大的数据抓取、数据存储和绘图功能,轻松实现主机负载、网络流量等信息的走势图的绘制。目前其最新的软件版本是0.8.7g。
 
 
cacti是用php语言实现的一个软件,它的运行需要网站服务器(如apache)及PHP环境的支持。同时,cacti还需要Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。
 
rrdtool的对主机负载、网络流量等信息的统计需要通过SNMP协议实现。经过SNMP抓取到的数据存储于由rrdtool生成的rrd文件中,这些文件通常位于cacti的rra目录中。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的归档文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。
这副图片简述了cacti的工作原理.
 
 Cacti的实例应用
1)网络设置
2)主机系统

(1)网络接口流量(进与出的带宽)
(2)监控CPU的负载、内存等等
(3)监控磁盘的空间、进程数等等
.........................................等等
3)cacti常见的监测对象
(1)服务器资源:CPU、内存、磁盘、进程、连接数等
(2)服务器类型:WEB、Mail、FTP、数据库、中间件
(3)网络接口:流量、转发速度、丢包率
(4)网络设备性能、配置文件(对比与备份)、路由数
(5)安全设备性能、连接数、攻击数
(6)设备运行状态:风扇、电源、温度
(7)机房运行环境:电流、电压、温湿度

 
好了 简单介绍完cacti后,下面我们一起来看下nagios.
二.nagios的简介
Nagios是一款用于系统和网络监控的应用程序。它可以在你设定的条件下对主机和服务进行监控,在状态变差和变好的时候给出告警信息 
 
Nagios最初被设计为在Linux系统之上运行,然而它同样可以在类Unix的系统之上运行 
Nagios更进一步的特征包括: 
 
1)监控网络服务(SMTPPOP3HTTPNNTPPING等)
2)监控主机资源(处理器负荷、磁盘利用率等)
3)简单地插件设计使得用户可以方便地扩展自己服务的检测方法
4
)并行服务检查机制
5
)具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态
6
)当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式)
 可以通过飞信,等方式实现时,既可传递给管理员,可高效的保证服务器的维护。

7
)具备定义事件句柄功能,它可以在主机或服务的事件发生时获取更多问题定位
8
)自动的日志回滚
9
)可以支持并实现对主机的冗余监控
10
)可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等
 
 
Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、 NSClient++和NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。而四个ADDON中
(1)NRPE:用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控
(2)NSCA:用来让 被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到)
(3)NSClient++:用来监控 Windows主机时安装在Windows主机上的组件
(4)NDOUtils:则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现 这些数据的快速检索和处理
这四个ADDON(附件)中,NRPE和NSClient++工作于客户端NDOUtils工作于服务器端,而NSCA则需要同时安装在服务器端和客户端
 
 
 
在用一幅图片宏观上展示nagios在企业级应用的位置
 
 
 
有朋友疑问,既然cacti,和nagios都是网络监控工具,选用其一不是减少很多麻烦,在这里笔者建议两者结合使用,还要结合后文所提到的ntop,以作者的理解,简单阐述下cacti和nagios的优缺点:
cacti:在监控方面有良好的绘图,cacti在流量和图型塑造上要强于nagios,但是在故障分析上有些略逊,而且报警机制也有待完善,这时nagios就派上用场了。
nagios :适合监视大量服务器上面的大批服务是否正常, 重点并不在图形化的监控, 其集成的很多功能例如报警,都是 cacti 没有或者很弱的。但在绘图以及图型塑造方面精细度比cacti要弱。
通过两者比较,可以很清晰的了解各自的用途。
下面笔者在简单介绍下ntop
三.Ntop简介
一.    MRTG基于SNMP获取信息,对于端口的流量,MRTG能提供精确统计,但对于三层以上的信息则无从得知了。而这正是NTOP的强项。 NTOP能够更加直观地将网络使用量的情况和每个节点计算机的网络带宽使用详细情况显示出来。NTOP是一种网络嗅探器,嗅探器在协助监测网络数据传输、 排除网络故障等方面有着不可替代的作用。可以通过分析网络流量来确定网络上存在的各种问题,如瓶颈效应或性能下降;也可以用来判断是否有黑客正在攻击网络 系统。如果怀疑网络正在遭受攻击,通过嗅探器截获的数据包可以确定正在攻击系统的是什么类型的数据包,以及它们的源头,从而可以及时地做出响应,或者对网 络进行相应的调整,以保证网络运行的效率和安全。
 二.   管理人员通过NTOP还可以很方便地确定出哪些通信量属于某个特定的网络协议、占主要通信量的是哪个主机、 各次通信的目标是哪个主机、数据包发送时间、各主机间数据包传递的间隔时间等。这些信息为网管员判断网络问题及优化网络性能,提供了十分宝贵的信息。
  NTOP提供以下一些功能:
  ① 自动从网络中识别有用的信息;
  ② 将截获的数据包转换成易于识别的格式;
  ③ 对网络环境中的通信失败进行分析;
  ④ 探测网络环境下的通信瓶颈;
  ⑤ 记录网络通信时间和过程;
  ⑥ 自动识别客户端正在使用的操作系统;
  ⑦ 可以在命令行和Web两种方式下运行。

 
  简单介绍完ntop后,笔者在网上找了一张图片,很清晰的解释了ntop的工作位置,从工作位置也可以看出ntop的主要功能.
 
 
 
通过笔者简单介绍,也可以看出来ntop作为监控工具与前两者cacti和nagios的区别,ntop在监控方面,它的角度是从分析网络流量来确定网络上存在的各种问题,说白了就类似个抓包监控工具,只不过通过归纳绘图实现更多的功能。
笔者这样解释相信不少朋友已经明白这三款开源界的元老级监控软件的各自职责,笔者建议朋友们在总结下各自的功能,达到更深刻的理解.也算笔者给朋友们留个话题,好了,接下来开始全源码实现这三者的整合和应用。
笔者所用的系统是rhel5.4版本,内核版本号为2.6.18
 首先先编译安装cacti.
在开始之前老规矩,先安装编译环境,要想实现cacti的网络监控,还要借助其他一些如mysql,httpd,php等来其原理请参照笔者上一篇博文LEMP架构,为了节省时间,笔者在这里就用yum来装这些包了。
配置好yum环境后
 yum install httpd php php-mysql mysql mysql-server php-snmp net-snmp-utils -y
 
安装完成后让服务都启动并调整之间的连接关系.
service mysqld start       # 启动mysql服务
chkconfig mysqld on      #使其开机自动启动
 启动完mysql后,如果出现以下画面,并能通过mysql进入,说明成功安装。
 
之后编辑httpd服务的配置文件,使其支持mod_status.so模块.,
只要在/etc/httpd/conf/httpd.conf的配置文件中找到
LoadModule  status_module  modules/mod_status.so
有这一项表示已经支持状态检测模块,所以无需额外添加,直接启动web服务即可.
service httpd start                   #启动http服务
chkconfig httpd on                 #开机自动启动httpd 服务
启动OK后,编辑
vim /var/www/html/index.php                 在其中添加以下内容#
<?php
phpinfo();
?>
#                  保存退出
用web浏览器访问,如果出现以下画面,则表示http支持动态php.并能与php成功连接.
 
 
接着测试与mysql的连接,先给mysql设置个管理员密码
mysqladmin -uroot password '123456'                            #密码设置为123456
编辑刚才的web页面
vim /var/www/html/index.php   
把里面的内容改为
<?php
$link=mysql_connect("localhost","root","123456");
if(!$link) echo "FAILD!";
else echo "OK!";
?>
刷新刚才的web浏览器页面,如果出现OK!字样,则表示成功连接.
 
 
 
 
 
 
 其中主要用到的是rrdtool-1.2.27-3.el5.i386.rpm 和rrdtool-devel-1.2.27-3.el5.i386.rpm和rrdtool-php-1.2.27-3.el5.i386.rpm这三个包,其余的包是其他扩展功能和其他脚本语言结合的.笔者就不过多演示了.
 
安装以上三个包
cd /root/rrdtool/                 #笔者rpm包所在的地方,可以做修改
yum -y localinstall --nogpgcheck rrdtool-1.2.27-3.el5.i386.rpm
yum -y localinstall --nogpgcheck rrdtool-devel-1.2.27-3.el5.i386.rpm
yum -y localinstall --nogpgcheck rrdtool-php-1.2.27-3.el5.i386.rpm
 
 
1.配置mysql 
接着登录mysql,创建cacti的数据库,并为其指定cactier用户和密码(123456)。数据库名字可根据需要指定,这里指定为cactidb,创建并授权:
 登录数据库
 
mysql -uroot -p
##会提示你输入密码,笔者在前面设置的密码为 123456
 
 
mysql> create database cactidb;
mysql> GRANT all privileges ON cactidb.* TO cactier@localhost IDENTIFIED BY '123456';
mysql> GRANT all privileges ON cactidb.* TO cactier@127.0.0.1 IDENTIFIED BY '123456';
mysql> GRANT all privileges ON cactidb.* TO cactier@192.168.0.0 IDENTIFIED BY '123456';
 ##说明 笔者指定了一个网段的授权,是将来做监控时数据库和监控工具不在同一台主机上,网段可根据自己需要进行授权。
mysql> flush privileges;                               
 
2.配置SNMP
 
 
(4)配置SNMP
 
在net-snmp的主配置文件/etc/snmp/snmpd.conf中,默认的community为public,建议将public修改为您需的密码项,笔者在此就不做修改了,使用默认密码public
 
接着,启动snmp进程
service snmpd restart   #如果修改过snmpd.conf 则需要重启服务
 

 
呵呵,是不是等不及了,终于该到cacti的编译安装了,准备工作已经全部做好,下面就开始对cacti的安装配置

首先要去cacti官网下载cacti的gz源码包,目前最新的版本是0.8.7.g
 
从官方网站的说明and a webserver that supports PHP such as Apache or IIS.就知道以上的准备工作是必须要做的.
重要说明:如果用0.8.7g版本的cacti,在后面整合nagios时可能出现bug,笔者推荐用0,8.7e版本的,笔者演示用的是0.8.7g原理一样.
下载完成后就可以解压缩了,笔者放在了/root/目录下
cd /root
tar zxvf cacti-0.8.7g.tar.gz
mv cacti-0.8.7g  /var/www/html/cacti    
##因为cacti的配置是在web页面下进行的,所以笔者直接把cacti-0.8.7g 移至/var/www/html/cacti 
cd  /var/www/html/cacti
mysql -uroot -p cactidb < cacti.sql          
##将cacti.sql数据库文件导入,会提示输入密码输入前面设置的root 的密码即可 
 
编辑cacti的主配置文件,为其指定对应的数据库参数:
vim /var/www/html/cacti/include/config.php
 
将下列各参数的值修改为您前面所设定的:
$database_type = "mysql";
$database_default = "cactidb";
$database_hostname = "localhost";
$database_username = "cactier";
$database_password = "123456";
$database_port = "3306";
修改完成后保存退出。
添加cactier用户 并给其设置密码
 useradd cactier
 passwd cactier
cd   /var/www/html/cacti/
chown -R cactier rra/ log/     #指定rra/ log/的属组属主为cactier用户
vim /etc/crontab
##编辑crontab文件 在空白行添加以下内容
*/5 * * * * cactier php /var/www/html/cacti/poller.php  > /dev/null &
#每5分钟以cactier去抓取数据绘图,这个时间5分钟应该是最小间隔了,笔者不建议修改为更小值。
 
记的要把selinux 关闭,不然不能从web页面访问的,关闭方法如下
setenforce 0                              #只是临时关闭
好了,下面就可以用web浏览器访问cacti进行配置管理了。
笔者所用虚拟机ip为192.168.0.39                            ## IP根据自己实际情况可做相应修改
从浏览器直接访问以下地址 即可看到cacti配置画面
http://192.168.0.39/cacti/install/                   
如果看到以下画面,则可以进行之后的配置
       点击下一步。
 
 
如果上面全是[FOUND],则可以点击Finish 完成,中间的路径可能与图片不同。
Finish后就会出现登陆画面
 
 
用户名admin 密码admin 即可登陆 (第一次登陆后会强行让修改密码)
进入后点击graphs 会显示流量图
 
 
如果不出现图片执行以下命令让其手动绘图即可.  
su -  cactier
php  /var/www/html/cacti/poller.php > /dev/null 2>&1
exit
数据部分启动较慢,请耐心等待,如显示如上图片数据,则成功安装配置。
##cacti的具体使用笔者不做过多介绍,有意者可去官方网站阅读官方文档。
 
 
下面是源码安装配置nagios
Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、 NSClient++和NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件
下面在服务端安装Nagios和Nagios-plugins.
 先下载源码包,目前官方的最新版本如下图
 
插件版本
 
下载之.笔者放在了 /root/nagios目录下 
nagios  需要一些基础支持套件才能运行,如apache,gcc,glibc,gd库等。
useradd -m nagios        #添加一个名为nagios的用户来运行nagios           
groupadd nagios                              #添加nagios用户组,用以通过web页面提交外部控制命令
usermod -a -G nagios daemon             #将运行apache用户daemon加入nagios组
cd /root/nagios                                 #该目录是你下载的nagios源码包所在位置
tar zxvf nagios-3.2.2.tar.gz                            #解压
cd nagios-3.2.2    
注意下面--with-httpd-conf 的路径,取决与你apache的,如果是yum安装的apache,则路径为:
/configure --with-command-group=nagios --with-httpd-conf=/etc/httpd/conf/extra/
##如果没有报错,就进行一下步骤
make all
make install
make install-init   
make install-config
make install-commandmode
             #安装完成没有报错开始以下配置
vim  /usr/local/nagios/etc/objects/contacts.cfg 
##修改nagiosadmin这行其中的邮件地址为你的email地址,以将报警邮件发到你的邮箱
make install-webconf
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
##设置登陆web界面时HTTP验证的账号密码如果apache是用源码编译安装的话,该指令改为如下所示:
#/usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
下面修改httpd.conf ,笔者是yum装的apache ,配置文件的路径为如下所示:
vim /etc/httpd/conf/httpd.conf
在空白地方添加一下两行
# nagios  default settings
Include conf/extra/nagios.conf
以上过程配置结束以后需要重新启动httpd:
# service httpd restart
 如果可以正常启动,下面就可以开始编译、安装nagios-plugins
nagios的所有监控工作都是通过插件完成的,因此,在启动nagios之前还需要为其安装官方提供的插件。
 
tar zxvf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure --with-nagios-user=nagios --with-nagios-group=nagios
 make
 make install
 ##下面是一些配置
(1)把nagios添加为系统服务并将之加入到自动启动服务队列:
chkconfig --add nagios
 chkconfig nagios on
 
(2)检查其主配置文件的语法是否正确:
 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
 
(3)如果上面的语法检查没有问题,接下来就可以正式启动nagios服务了:
service nagios start
 
(4)配置selinux
如果您的系统开启了selinux服务,则默认为拒绝nagios web cgi程序的运行。您可以通过下面的命令来检查您的系统是否开启了selinux:
getenforce
 
如果上面命令的结果显示开启了selinux服务,您可以通过下面的命令暂时性的将其关闭:
setenforce 0
 
如果您想在以后完全关闭selinux,可以通过编辑/etc/sysconfig/selinux文件,将其中的selinux后面的值“force”修改为“disable”即可。
 
##当然,您也可以通过以下方式将nagios的CGI程序运行于SELinux/targeted模式而不用关闭selinux:
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin
chcon -R -t httpd_sys_content_t /usr/local/nagios/share
 
(5)通过web界面查看nagios:
http://your_nagios_IP/nagios
 
登录时需要指定前面设定的web认证帐号和密码。
 
注意:为了nagios系统的安全,建议您使用信息摘要强认证模式(如MD5),强制使用web的TSL/SSL安全通讯模式,并且通过访问控制列表设定能访问nagios的web界面的客户端地址。
登录后看到以下画面则表示成功安装。
 
 
##说明##
3.2.2版本的nagios有个bug .安装完在/usr/local/nagios/sbin目录下没有原来的statusmap.cgi执行脚本
点击左边的current status 中的Map会显示找不到页面,解决方法只能从老版本中拷贝一个statusmap.cgi到/usr/local/nagios/sbin目录下了,并赋予执行权限。
 
 
如果此时Nagios进程已启动,则需要停止并重新启动nagios:
# killall -SIGHUP nagios
# rm -f /usr/local/nagios/var/nagios.lock
# /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
可进入nagios的web管理页面查看log,如果出现以下字样,则表示正常运行。
 

说明:
i)此处停止Nagios必须通过向Nagios发送SIGHUP信号的方式进行;
ii)建议此时查看nagios日志文件中是否表明ndomod的模块加载是否正常,以及其是否能正常连接到data sink;查看日志,可以使用如下命令实现:# tail -30 /usr/local/nagios/var/nagios.log
 

排错信息:
i)  如果ndomod模块没能正常加载的话,建议重新检查nagios的配置文件中是否添加了所需的broker module条目;
ii) 同时,如果ndomod没有正常连接到data sin,建议查看ndo2db.cfg文件中关于mysql连接项目的指定是否正确;
iii)确认一下在编译NDOUtils时是否指定了关于mysql库文件位置的选项;
 
好了 nagios已经成功安装,下面编译、安装ntop
 
在官网找了副图片,简单的介绍了ntop的工作流程。
 
图片右边显示的是目前官方最新的ntop版本 为4.0.1下载之
1、下载安装所需要的环境:

需要事先下载并安装GeoIP和GetIP-devel两个rpm包;
yum -y --nogpgcheck localinstall GeoIP-*.el5.i386.rpm

接着是ettercap相关的rpm包(ettercap,ettercap-common,需要下载,这里没指定具体的版本号,你可以根据自己的实际情况进行安装):
yum -y --nogpgcheck localinstall ettercap-*.rpm


而后安装开发环境,尤其是以下几个rpm包:
yum install libpcap libpcap-devel gdbm gdbm-devel zlib zlib-devel


2、安装ntop

 useradd -M -s /sbin/nologin -r ntop

 tar zxvf ntop-4.0.1.tar.gz
 cd ntop-4.0.1
 ./autogen.sh
make
make install
chown -R ntop:ntop /usr/local/share/ntop
chown -R ntop:root /usr/local/var/ntop

3、配置并启动ntop

首先为ntop的admin用户设置密码:
ntop -A

接下来启动ntop:
ntop -i eth0 -d -L -u ntop

使之开机自动启动:
echo 'ntop -i eth0 -d -L -u ntop &> /dev/null' >> /etc/rc.d/rc.local
用web页面访问http://yourIP:3000 如果出现以下换面 则表示运行正常
 
 
 
★★下面是对这三者的整合.把nagios和ntop 整合到cacti中
先让cacti支持插件功能
 笔者在上文所安装的cacti版本为0.8.7g,支持插件的补丁就选用cacti-plugin-0.8.7g-PA-v2.8.tar.gz
 
下载后进行解压缩
tar zxvf cacti-plugin-0.8.7g-PA-v2.8.tar.gz
cd cacti-plugin-arch
cp -R * /var/www/html/cacti/
mysql -uroot -p cactidb <pa.sql
patch -p1 -N  < cacti-plugin-0.8.7g-PA-v2.8.diff
打完补丁后图片有时不会显示,这是需要修改下/var/www/html/cacti/include目录下的config.php文件
修改$url_path后面的值:
$url_path = "/cacti/";
修改完成直接web页面登陆,http://yourIP/cacti
 
选择左下的User Managenment 之后点击admin
在其中最后一项打钩,并保存
 
好了,现在cacti就支持其他插件功能了,下面把ntop和nagios加进去就可以了
先整合ntop.
  1. 首先去下载cacti的ntop插件,而后解压至cacti的插件目录:  
  2. # tar zxvf ntop-0.1.tar.gz -C /var/www/html/cacti/plugins/  
  3.  
  4. 接着配置cacti的主配置文件,启用此插件:  
  5. # vim  /var/www/html/cacti/include/config.php  
  6. 添加如下内容:  
  7. $plugins[] = 'ntop';  
  8.  
  9. 接下来到cacti的控制台中"settings"中配置此插件,将其指向实际的ntop服务器所在的URL;然后再到cacti控制台的"user Management"中的admin用户中启用此插件即可。  
 设置完成后如图所示:
发现上面是不是多了一个标签Ntop,有些版本web浏览器不会显示里面内容,笔者建议用firefox,效果图如下。
 下面是对nagios与cacti的整合
安装Nagios Plugin for Cacti(NPC)插件http://trac2.assembla.com/npc
作用:将nagios的数据通过ndo2db导入到mysql数据库,然后cacti读取数据库信息将nagios的结果通过NPC展示出来。
 

一、nagios需要的包

 1.下载并安装ndoutils 
 
  1. wget http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.4b9/ndoutils-1.4b9.tar.gz/download  
  2. tar zxvf ndoutils-1.4b9.tar.gz   
  3. cd ndoutils-1.4b9  
  4. ./configure --prefix=/var/www/html/nagios --enable-mysql --disable-pgsql --with-mysql-inc=/usr/include/mysql --with-mysql-lib=/usr/lib/mysql  
  5. make  
2.准备配置文件
 
  1. cp -v src/{ndomod-3x.o,ndo2db-3x,file2sock,log2ndo} /var/www/html/nagios/bin  
  2. cd db  
  3. ./installdb -ucacti -pcacti -hlocalhost -d cacti  
  4. cd ..  
  5. cp -v config/{ndo2db.cfg-sample,ndomod.cfg-sample} /var/www/html/nagios/etc  
  6. mv /var/www/html/nagios/etc/ndo2db.cfg-sample /var/www/html/nagios/etc/ndo2db.cfg  
  7. mv /var/www/html/nagios/etc/ndomod.cfg-sample /var/www/html/nagios/etc/ndomod.cfg  
  8. chmod 644 /var/www/html/nagios/etc/ndo*  
  9. chown nagios:nagios /var/www/html/nagios/etc/*  
  10. chown nagios:nagios /var/www/html/nagios/bin/*  
3.修改nagios.cfg配置文件以适应当前环境
  1. vim /var/www/html/nagios/etc/nagios.cfg  
  2.    # 在文件中添加:  
  3.      broker_module=/var/www/html/nagios/bin/ndomod-3x.o config_file=/var/www/html/nagios/etc/ndomod.cfg  
  4.    # 检查   
  5.      event_broker_options=-1     ## 为Nagios开启event broker 
 
4.修改ndo2db.cfg以适应当前环境
 
  1. vim /var/www/html/nagios/etc/ndo2db.cfg  
  2.  # 确保下列内容为唯一项  
  3.      socket_type=tcp  
  4.      db_servertype=mysql  
  5.      db_host=localhost  
  6.      db_port=3306  
  7.    
  8.      db_name=cactidb  
  9.    
  10.      db_prefix=nagios_  
  11.      db_user=cactier 
  12.      db_pass=123456 
5.修改ndomod.cfg以适应当前环境 
 
  1. vim /var/www/html/nagios/etc/ndomod.cfg  
  2.    # 确保下列项的唯一内容为  
  3.     output_type=tcpsocket  
  4.     output=127.0.0.1  
6.为ndo2db添加启动进程
 
  1. cp ./daemon-init /etc/init.d/ndo2db  
  2. vim /etc/init.d/ndo2db 
  3.    # 检查里面的路径确保不会出现“//",并将Ndo2dbBin修改成下面的值:  
  4.      Ndo2dbBin=/var/www/html/nagios/bin/ndo2db-3x  
  5. chmod +x /etc/init.d/ndo2db   
7.启动守护进程与nagios 
 
service ndo2db start 
 
tail -20 /var/log/messages    ## 查看其中是否有错误出现。如无报错请继续 
service nagios start
二:安装ncp,以在Cacti中展现Nagios
  1. 1.先安装cacti扩展模块 
  2. wget http://www.cacti.net/downloads/pia/cacti-plugin-0.8.7h-PA-v3.0.tar.gz  
  3. tar xvf cacti-plugin-0.8.7h-PA-v3.0.tar.gz   
  4. cp -R cacti-plugin-arch/* /var/www/html/cacti/  
  5. cd /var/www/html/cacti/  
  6. mysql -ucactier -p123456 cactidb < pa.sql   
  7. patch -p1 -N < cacti-plugin-0.8.7h-PA-v3.0.diff 
   
 ## 为cacti配置文件打补丁的时候注意在为include/config.php打补丁的时候有可能它将 include/config.php.dist给打补丁了,我们只需要手动加入下面的内容即可。 
 
  1. vim include/config.php  
  2.    # 修改(或新加入)为  
  3.     $url_path = "/cacti/";  
  4. 从web进入cacti,启用cacti plugin扩展 
 
2.安装npc
 
  1. tar zxvf npc-2.0.4.tar.gz  
  2. mv npc /var/www/html/cacti/plugins/  
  3. vim /var/www/html/cacti/include/config.php  
  4.     # 加入:  
  5.      $plugins[] = 'npc';  
3.安装 npc支持:json
 
  1. wget http://pkgs.fedoraproject.org/repo/pkgs/php-pecl-json/json-1.2.1.tgz/d8904d2f004ceec85eeacf524cd25539/json-1.2.1.tgz  
  2. tar zxvf json-1.2.1.tgz   
  3. cd json-1.2.1  
  4. phpize   ## 如果发现没有Phpize文件,则是因为php-devel包没有安装导致的   
  5. ./configure   
  6. make && make install  
  
php -i | grep php.ini  ## 查看是否有导入信息 
4.打开php.ini文件添加对json的支持
 
vim /etc/php.ini 
 
   # 添加 
extension=json.so 
5.为apache添加php支持。
 
  1. vim /etc/httpd/conf/httpd.conf   
  2.    # 添加一行:  
  3.      AddType application/x-httpd-php .php .phtml  
  4.    # 修改原DirectoryIndex内容为:  
  5.      DirectoryIndex index.html index.html.var index.php  
  6.   
  7. usermod -G cactier apache  
  8. service httpd restart    ## 重启apache以让php生效  
  9. php -m   ## 查看是否有json被加载  
6.修改配置文件以让npc读取到新的数据。
 
  1. vim /var/www/html/nagios/etc/ndo2db.cfg  
  2.      db_prefix=npc_  
6.1
从Web进入Cacti,确保正确使用npc选项。
 
6.2 修改mysql中的表结构:
 
  1. ./mysql -ucactier -p cactidb  
  2. mysql> use cactidb; 
  3. mysql> alter table npc_eventhandlers add long_output TEXT NOT NULL default '' after output;  
  4. mysql> alter table npc_hostchecks add long_output TEXT NOT NULL default '' after output;  
  5. mysql> alter table npc_hoststatus add long_output TEXT NOT NULL default '' after output;  
  6. mysql> alter table npc_notifications add long_output TEXT NOT NULL default '' after output;  
  7. mysql> alter table npc_servicechecks add long_output TEXT NOT NULL default '' after output;  
  8. mysql> alter table npc_servicestatus add long_output TEXT NOT NULL default '' after output;  
  9. mysql> alter table npc_statehistory add long_output TEXT NOT NULL default '' after output;  
  10. mysql> alter table npc_systemcommands add long_output TEXT NOT NULL default '' after output;  
7.重启ndo2db进程,重新加载配置文件重启nagios服务。
 
service ndo2db restart 
service nagios restart 
8.在Web上配置NPC以使之正常读取工作。
在Settings->npc中 ,勾上Remote Commands
Nagios Command File Path= /var/www/html/nagios/var/rw/nagios.cmd
Nagios URL=你的地址(http://ocalhost/nagios/)
接下来刷新npc就可以看到数据啦:
#测试:
之后用web测试 ,index.php(前文有测试方法)如果有图片所示的这一项,则表示正常json正常安装
 
## 如果phpize 没有此指令,请yum安装php-devel包
说明:如果您是使用RPM方式安装php,那么一些动态的扩展是自动被加入的,这些动态扩展 在:/etc/php.d/*.ini这些文件,这里确认一下json.ini文件有这一行内容:extension=json.so;同时还要确认一下 /usr/lib/php/modules目录下有没有json.so文件,如果没有的话,要手动复制一份到这个目录,这样才能确保json.ini起作用。
 
全部装完在cacti中设置如图所示
 
 

cacti+nagios

 
#排错:
如果不出npc
可尝试npc先将相应插件文件放到plugin,然后需要:

vi /var/www/html/cacti/include/config.php     ## 在该文件中的"$plugins = array()"后增加如下一行内容
//$plugins[] = 'npc'; 
这样先注释掉,才可以安装上npc的.否则,不能在web页面的插件管理页面看到npc插件.

应当将ndo2db.cfg里面的
db_name=cactidb;
db_prefix=npc_;

#如果连接不上,注意配置文件中链接mysql的帐号密码是否一致。

 
这篇也忙活好多天,笔者用的大多都是最新版本,总是碰见bug ,纠结啊,如有错误的地方请指出,笔者尽快修改,多谢各位朋友多多支持,
此文凝聚笔者不少心血请尊重笔者劳动,转载请注明出处。http://freeze.blog.51cto.com/
 

 

本文出自 “夜的博客” 博客,请务必保留此出处http://freeze.blog.51cto.com/1846439/386828

 

 

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

############################################################################

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

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

 http://10956.blog.51cto.com/956/159249

Centos 5.2安装Cacti并集成Nagios安装文档

本文档并非原创,而是参照网上很多文档,因为不能全部都把参照者列举出来,特在此感谢我参照文档的作者.

一、本文档所用软件说明:
.
二、系统环境部署及调整
1. 检查系统是否正常
   # more /var/log/messages        (检查有无系统级错误信息)
   # dmesg (检查硬件设备是否有错误信息)
   # ifconfig(检查网卡设置是否正确)
   # ping www.163.com        (检查网络是否正常)

2. 关闭不需要的服务
   # ntsysv
   以下仅列出需要启动的服务,未列出的服务一律推荐关闭:
atd
crond
   irqbalance
   microcode_ctl
   network
   sendmail
   sshd
   syslog
   httpd
   mysqld

3. 重新启动系统
   # init 6

4. 配置 vim
   # vi /root/.bashrc
   在 alias mv='mv -i' 下面添加一行:alias vi='vim' 保存退出。
   # echo 'syntax on' > /root/.vimrc
   # source /root/.bashrc

5. 使用 yum 对系统进行更新并且安装必要软件包
        #wget http://dag.wieers.com/packages/r ... 4-1.el4.rf.i386.rpm
        #rpm –Uvh rpmforge-release-0.3.4-1.el4.rf.i386.rpm
        #rpm -Uvh http://download.fedora.redhat.co ... ease-5-2.noarch.rpm
   #yum install php mysql http php-gd php-devel php-mysql mysql-devel
# yum update -y
   # yum install ntp -y



6. 定时校正服务器时钟,定时与中国国家授时中心授时服务器同步
   # crontab -e
加入一行:
1 */6 * * * ntpdate 210.72.145.44 > /dev/null 2>&1
        
三.CACTI的安装
1安装 net-snmp
yum install net-snmp*
注意加个*,把所有的包都装上,否则没有cacti需要的命令.

2安装 php-snmp
yum install php-snmp

3.安装rrdtool
#yum –y install rrdtool
4.下载最新的CACTI
#wget http://www.cacti.net/downloads/cacti-0.8.7d.tar.gz
# tar -zxf cacti-0.8.7d.tar.gz
# mv cacti-0.8.7d /var/www/html/cact
# cd /var/www/html/cacti/
# mysqladmin -uroot -p create cacti
# mysql -u root -p
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser';
mysql> flush privileges;

#mysql -ucactiuser -pcactiuser cacti < /var/www/html/cacti/cacti.sql

crontab -e
插入
*/5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1
保存退出。

5.安装安装Cacti Plugins Arch

#wget http://mirror.cactiusers.org/dow ... -0.8.7d-PA-v2.4.zip
# tar xzf cacti-plugin-arch.tar.gz

plugin arch的安装有两种方法,第一中是运行patch文件修改现有的内容,第二种是使用已经patch好的文件覆盖源文件,我用第二种,直接把files-0.8.7b下面的文件复制到cacti下面
# cd cacti-plugin-arch
#cp  files-0.8.7b/* /var/www/html/cacti/
# mysql -ucactiuser -pcactiuser cacti<pa.sql
**********这个文件不导入的话,将来会看不到plugin management这个页面,对其他的影响不大,但是我们要用npc(nagios plugin),一定要用这个

现在cacti的配置文件global.php
# vi /var/www/html/cacti/include/global.php
找到
$database_username = "cactiuser";
$database_password = "cactiuser"; //设置成自己数据库用户名和密码

如果你的把CACTI放到WEB目录的根目录就不用改下面的设置,我的是放到CACTI目录下所以把下面的参数改成
$config['url_path'] = '/cacti/';

插件安装(这里只介绍一般插件的安装,主要讲NPC的安装)

# cd /soft
#wget http://cactiusers.org/downloads/settings.tar.gz
# wget http://cactiusers.org/downloads/thold.tar.gz
# wget http://www.assembla.com/spaces/n ... c-2.0.0b.166.tar.gz
# mv download\?filename\=npc-2.0.0b.166.tar.gz npc-2.0.0b.166.tar.gz


# tar zxf settings-0.5.tar.gz
# tar zxf thold-0.3.9.tar.gz
# tar zxf npc-2.0.0b.166.tar.gz
# cp -rf settings thold npc /var/www/html/cacti/plugins/

接下来在global.php中加载settings和thold
# vi /var/www/html/cacti/include/global.php
添加下面内容
$plugins[] = 'settings';
$plugins[] = 'thold';
回到网页中,记得要去user managerment里面,给予相应用户的permissions,具体做法是,点页面左边的菜单User Managerment,然后在右边点击某个用户(如admin),然后在Realm Permissions中选中相应的选项即可。

而NPC,直接进入网页,点击左边的Plugin Management,然后在右边的Uninstalled中install NPC,在Installed中enable NPC,就可以了。

安装php-json,在npc中要用到php-json这个组件,如果没有安装在npc中只是一片空白
# wget http://aurore.net/projects/php-json/php-json-ext-1.2.1.tar.bz2
# tar jxf php-json-ext-1.2.1.tar.bz2
# cd php-json-ext-1.2.1
# ./configure &&make &&make install
因为编译安装的不会加载到php中,所以要手动加个配置文件
# vi /etc/php.d/json.ini
extension=json.so

四,nagios的安装
1. # mkdir /usr/local/nagios
# useradd nagios -d /usr/local/nagios
# passwd nagios
# chmod 755 /usr/local/nagios/
# grep ^User /etc/httpd/conf/httpd.conf 
User apache
查找运行apache的用户

# groupadd nagcmd
# usermod -G nagcmd apache
# usermod -G nagcmd nagios

2下载并安装nagios
nagios 主页:http://www.nagios.org 
nagios 当前版本:nagios-3.0.6 
nagios 插件当前版本:nagios-plugins-1.4.6 
fruity:图形化配置nagios的工具,需要php5.x版本才能运行
http://heanet.dl.sourceforge.net/sourceforge/fruity/
http://pear.php.net/get/HTML_TreeMenu-1.2.1.tgz
http://puzzle.dl.sourceforge.net/sourceforge/adodb/adodb471-1.tgz
将HTML_TreeMenu-1.2.0.tgz和adodb471-1.tgz直接解压复制到fruity 下 分别改名为HTML 和adodb 其他不做修改 修改 fruity/includes下的config.ifg,需要更改的地方有,路径,mysql信息 mysql 添加fruity 数据库和user,password. 这样,就可以用fruity来进行配置了。 注意: 在cacti服务器上的mysql版本必须是4.1以上,因为npc是以mysql4.1为基础进行开发的。

# tar zxf nagios-cn-3.0.6.tgz

# cd nagios-cn-3.0.6
#./configure --prefix=/usr/local/nagios --with-gd-lib --with-gd-inc --enable-event-broker
# make all
# make all install
# make install-init   //安装启动脚本到/etc/init.d/
# make install-commandmode
# make install-config                         //安装初始配置文件到/usr/local/nagios


nagios-plugins的安装
#cd /soft
# tar zxf nagios-plugins-1.4.13.tar.gz
# cd nagios-plugins-1.4.13
# ./configure --prefix=/usr/local/nagios-plugins
# make&&make install
安装完成以后在/usr/local/nagios-plugins会产生一个libexec的目录,将该目录全部移动到/usr/local/nagios目录下即可。 如下:
# mv /usr/local/nagios-plugins/libexec /usr/local/nagios/

现在配置apache:
在apache的httpd.conf文件中加入如下内容:
ScriptAlias /nagios/cgi-bin/ /usr/local/nagios/sbin/ 
<Directory "/usr/local/nagios/sbin/"> 
        AllowOverride AuthConfig 
        Options ExecCGI 
        Order allow,deny 
        Allow from all 
</Directory>

Alias /nagios/ /usr/local/nagios/share/ 
<Directory "/usr/local/nagios/share"> 
        Options None 
        AllowOverride AuthConfig 
        Order allow,deny 
        Allow from all 
</Directory>
然后重启apache


配置页面访问权限:
在/usr/local/nagios/share目录下加个.htaccess文件
# cd /usr/local/nagios/share
# vi .htaccess
AuthName "Nagios Access" 
AuthType Basic 
AuthUserFile /usr/local/nagios/etc/.htpasswd 
require valid-user

然后复制此.htaccess文件到/usr/local/nagios/sbin下
# cp .htaccess /usr/local/nagios/sbin
# htpasswd -c /usr/local/nagios/etc/.htpasswd nagiosadmin

这个apache目录根据安装目录的不同而不同,用htpasswd命令生成用户名和密码以控制访问权限。

配置和启动nagios过程 
# cd /usr/local/nagios/etc 
把目录里的.cfg-sample文件全部拷贝成.cfg 
例如: 
# cp nagios.cfg-sample nagios.cfg 
修改cgi.cfg,把use_authentication=1改为use_authentication=0,即不用验证.不然有一些页面不会显示。 
修改后用如下命令检查配置文件是否正常: 
#/usr/local/nagios/bin/nagios –v /usr/local/nagios/etc/nagios.cfg

如果出现如下显示就说明配置没问题
Total Warnings: 0
Total Errors:   0

现在您就可以http://您的IP/nagios/访问nagios了

五集成nagios到cacti
.1.安装NDoutils
NDoutils是把Nagios的数据写到mysql里的插件,这个是集成的关键
http://www.nagios.org/download/addons/中下载ndoutils-1.4b7

#cd /soft
# tar zxf ndoutils-1.4b7.tar.gz
# cd ndoutils-1.4b7
# ./configure
#make
然后直接把我们想要的程序及配置文件复制到nagios中就可以
# cd src
# cp ndomod-3x.o ndo2db-3x log2ndo file2sock /usr/local/nagios/bin
# cd ../config
# cp ndomod.cfg ndo2db.cfg /usr/local/nagios/etc/
修改相关配置文件
# vi /usr/local/nagios/etc/ndo2db.cfg
db_name=cacti
db_prefix=npc_
db_user=cactiuser
db_pass=cactiuser
debug_level=1
这里是用Cacti在mysql中使用的用户和密码以及数据库.

修改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

然后分别启动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

配置到此结束

本文出自 “自由的时空” 博客,请务必保留此出处http://10956.blog.51cto.com/956/159249

 

###############################

http://renhm.blog.51cto.com/1527213/891107

 

nagios&cacti完全安装与整合
2012-06-07 13:06:15

  现在开源界用得比较多的两款监控软件就是NAGIOS/CACTI,下面笔者全面讲解二者的安装与整合,其实网上这类文件也比较多,但是都比较零散,对于新手来说搭建起来很容易出问题,本人发一篇完全适合新手的教程!关于二者的差别,废话不多说!!


系统初使化软件库安装:
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

-----------------------------------------------第一部分:nagios------------------------------------------

所有软件包都放在:/usr/local/src  (养成好的习惯!!)


一、安装Nagios必须的基本组件的运行依赖于httpd、mysql、gd以及编译用到的gcc
 
yum -y install httpd gcc glibc glibc-common *gd* php php-mysql mysql mysql-server mysql-devel openssl-devel

二、创建运行nagios的用户和组
groupadd nagcmd
useradd -M nagios
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache
usermod -G nagios apache

三、安装nagios
cd /usr/local/src
tar zxvf nagios-3.3.1.tar.gz
cd nagios
mkdir /usr/local/nagios
chown -R nagios:nagios /usr/local/nagios
./configure --prefix=/usr/local/nagios
make all   
make install   
make install-init   
make install-config   
make install-commandmode   
make install-webconf

创建认证用户:
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
PS: 此处用户名尽量使用默认nagiosadmin,否则就需要修改cgi.cfg文件中所有关于认证选项的用户.
启动apache
service httpd restart
PS:这里你可以修改下apache配置文件的ServerName ,不然每次启动都非常慢!!!这个可以改成你的IP!


四、安装nagios-pugins插件
安装nagios常规插件
cd ..
tar zxvf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure --prefix=/usr/local/nagios
make;make install

安装nagios-snmp-plugins插件
wget 
http://nagios.manubulon.com/nagios-snmp-plugins.1.1.1.tgz
安装这个插件要装几个perl模块:
Crypt::DES
Digest::MD5
Digest::SHA1
Digest::HMAC
Net::SNMP
www.cpan.org上下载!!
下面安装这几个模块(最后安装Net::SNMP这个模块):
tar zxvf Crypt-DES-2.05.tar.gz
cd Crypt-DES-2.05
perl Makefile.PL
make;make install
cd ..

gunzip Digest-HMAC-1.03.tar.gz
tar xvf Digest-HMAC-1.03.tar

cd Digest-HMAC-1.03   
perl Makefile.PL   
make;make install   
cd ..

tar zxvf Digest-MD5-2.51.tar.gz  
cd Digest-MD5-2.51   
perl Makefile.PL   
make ;make install  
cd ..
   
tar zxvf Digest-SHA1-2.13.tar.gz  
cd Digest-SHA1-2.13   
perl Makefile.PL   
make;make install   
cd ..

gunzip Net-SNMP-v6.0.1.tar.gz   
tar xvf Net-SNMP-v6.0.1.tar  
cd Net-SNMP-v6.0.1   
perl Makefile.PL   
make;make install

现在开始安装nagios-snmp-plugins插件:
tar zxvf nagios-snmp-plugins.1.1.1.tgz
cd nagios_plugins
./install.sh
运行后一路回车!!!!!!!!!!!!!!!


安装nagios中文插件(这个插件最好与nagios版本相同,我发现不同也没多大关系):
cd /usr/local/src
tar jxvf nagios-cn-3.2.3.tar.bz2
cd nagios-cn-3.2.2
./configure
make all;make install


把nagios加入到系统服务:
chkconfig --add nagios  
chkconfig nagios on


指定nagios指令的path
vi /etc/profile
大文件最后加入:
export PATH=$PATH:/usr/local/nagios/bin
再用 source /etc/profile 直接生效!

检查配置文件:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

chkconfig httpd on
chkconfig mysqld on
启动apache: service httpd start
启动mysqld: service mysqld start
启动nagios: service nagios start


五、nagios性能分析图表_PNP插件
yum install perl-Time-HiRes

先安装rrdtool
32位系统
wget 
http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
rpm -Uvh rpmforge-release-0.5.1-1.el5.rf.i386.rpm
yum -y install rrdtool
64位系统
wget 
http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
rpm -Uvh rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
yum -y install rrdtool

1.安装PNP
tar zxvf pnp4nagios-0.6.16.tar.gz
cd pnp4nagios-0.6.16
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-rrdtool=/usr/bin/rrdtool
make all
make install
make install-webconf
make install-config
make install-init

2.配置PNP
cd /usr/local/pnp4nagios/etc
mv misccommands.cfg-sample  misccommands.cfg
mv nagios.cfg-sample  nagios.cfg
mv rra.cfg-sample rra.cfg
cd pages
mv web_traffic.cfg-sample web_traffic.cfg
cd ../check_commands
mv check_all_local_disks.cfg-sample  check_all_local_disks.cfg
mv check_nrpe.cfg-sample  check_nrpe.cfg
mv check_nwstat.cfg-sample  check_nwstat.cfg
service npcd start

3.修改 nagios 的配置文件,打开performance_data
cd /usr/local/nagios/etc
vi nagios.cfg

process_performance_data=1   //把0变成1,启动nagios的数据输出功能,这样nagios将收集的数据写入到某个文件当中,以备提取!
host_perfdata_command=process-host-perfdata        //启用主机的数据输出功能
service_perfdata_command=process-service-perfdata  //启用服务的数据输出功能

4.修改 commands.cfg
cd /usr/local/nagios/etc/objects
vim commands.cfg
把默认的process-host-perfdata和process-service-perfdata 删除掉或注释掉,添加如下内容:

# 'process-host-perfdata' command definition
define command{
        command_name    process-host-perfdata
        command_line    /usr/local/pnp4nagios/libexec/process_perfdata.pl
        }
# 'process-service-perfdata' command definition
define command{
        command_name    process-service-perfdata
        command_line    /usr/local/pnp4nagios/libexec/process_perfdata.pl
        }

5.添加模板
vim templates.cfg
在配置文件最后添加
define host {
name       hosts-pnp
action_url /pnp4nagios/graph?host=$HOSTNAME$&
register   0
}
define service {
name       services-pnp
action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
register   0
}

6.最后在各服务器的hosts和services处添加hosts-pnp、services-pnp
如:
define host{
        use               linux-server,hosts-pnp  
        host_name         andy.com
        alias             andy_web.com
        address           192.168.1.101
        }


define service{
        use                        local-service,services-pnp      
        host_name                  andy.com
        service_description        PING
        check_command              check_ping!100.0,20%!500.0,60%
}

7.重启nagios
/etc/init.d/nagios restart


六、Nconf的安装与配置
1.nconf的准备工作
mysql -uroot -p
mysql> create database nconf;
mysql> grant all privileges on nconf.* to 
nconf@"%" identified by 'nconf';
mysql> flush privileges;
mysql> quit

2.安装nconf
下载: 
http://sourceforge.net/projects/nconf/files/nconf/
tar nconf-1.3.0-0.tgz
mv nconf /usr/local
chown -R apache:apache /usr/local/nconf

3.在apache添加nconf目录虚拟主机
vi /etc/httpd/conf.d/nconf.conf
加入如下内容:
<VirtualHost *:80>
DocumentRoot /usr/local
ServerName 192.168.1.151
</VirtualHost>

重启apache
service httpd restart

4.进入Web页面在按照安装提示一步步安装---比较简单!!

5.使用上面建立的数据库和用户(nconf)成功连接mysql数据库,之后一切保持默认,直到下面认证设置时选择"ture",再设置nconf管理员密码,默认登录用户为admin!

6.安装完成之后,提示删除安装时的初始化文件
cd /usr/local/nconf
rm -rf INSTALL INSTALL.php UPDATE UPDATE.php
ln -s /usr/local/nagios/bin/nagios bin/nagios
chmod +x /usr/local/nconf/bin/generate_config.pl
chown -R apache.apache bin
chmod +x /usr/local/nagios/bin/nagios
chmod +x /usr/local/nconf/ADD-ONS/deploy_local.sh

7.重新刷新页面,输入admin/您设置的密码,进入nconf页面

8.点击Generate Nagios config尝试生成配置文件,以测试是否与nagios成功关联

deploy_local.sh是nconf自带配置文件导入脚本
/usr/local/nconf/ADD-ONS/deploy_local.sh
手动执行此脚本,将在/usr/local/nagios/etc下生成两目录Default_collector与global

修改nagios主配置文件
vim /usr/local/nagios/etc/nagios.cfg
# 将其中cfg_file=*******字段全部注释 ,并加入
cfg_dir=/usr/local/nagios/etc/Default_collector
cfg_dir=/usr/local/nagios/etc/global
service nagios reload
# 重载nagios配置文件使之生效

 

------------------------------------------------第二部分:nagios配置文件分配问题---------------------------------------
配置文件的规划--有两种方案
方案一:根据主机服务分开放
系统文件统一放在objects目录下:
commands.cfg  localhost.cfg  timeperiods.cfg  contacts.cfg  templates.cfg
主机目录:建立hosts目录存放主机
服务目录:建立services目录存放服务
命令目录:建立commands目录存放命令
在nagios.cfg配置文件中修改相应地方如下:
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

cfg_dir=/usr/local/nagios/etc/services 
cfg_dir=/usr/local/nagios/etc/hosts
cfg_dir=/usr/local/nagios/etc/commands

方案二:每个服务器独立配置文件
系统文件统一放在objects目录下:
commands.cfg  localhost.cfg  timeperiods.cfg  contacts.cfg  templates.cfg
第个被监控服务器独立一个配置文件:
如:192.168.1.100.cfg
在配置文件中修改相应地方如下:
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/linux_srv/192.168.1.100.cfg
...
...
...
cfg_file=/usr/local/nagios/etc/linux_srv/192.168.1.110.cfg


根据情况自己做选择!!

 


一、配置监控Linux主机 实例
监控linux时是通过nrpe来建立连接,所以要在服务端和客户端先安装上pcre
服务端的安装:
tar zxvf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure
make all
make install-plugin

测试插件与客户端是否正常通信
/usr/local/nagios/libexec/check_nrpe -H 192.168.8.30
NRPE v2.13
说明之间是连通的!!

定义check_nrpe监控命令
vi /usr/local/nagios/etc/objects/commands.cfg
添加如下内容:

# 'check_nrpe' command definition
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }


客户端的安装:

tar zxvf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config

修改nrpe配置文件
vi /usr/local/nagios/etc/nrpe.cfg
找到下面两处并修改成如下样子:
server_address=192.168.8.30    //这是客户端本身自己IP地址,这里一定要写真实IP
allowed_hosts=192.168.8.130,127.0.0.1   //192.168.8.130是我的nagios监控机

启动nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
netstat -tunpl |grep 5566
lsof -i:5666

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

 


----------------------------------第三部分:cacti部分-----------------------------------------------------------
      


一、cacti服务器配置部分
++++++++++++++++++++++++++++++++++++++++++++++++++
cacti安装与配置
1.cacti绘图要用到rrdtool这个工具
可以用源码安装,也可用yum来安装。。
rrdtool前面在安装nagios--pnp时已经装了,这里只说下

这里介绍用yum来安装:
wget 
http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
yum -y install rrdtool

2.安装依赖包
在主监控机上安装apache+php+gd的web环境,为了方便就用yum安装了!
yum -y install php php-devel php-mysql php-snmp mysql mysql-server net-snmp net-snmp-libs net-snmp-utils php-pdo perl-DBD-MySQL
由于本机上同时装了nagios,所以这里php与mysql相关的软件包就不用装了!
yum -y install php-devel php-snmp  net-snmp net-snmp-libs net-snmp-utils

3.配置snmp
vi /etc/snmp/snmp.conf
#将下边这行中的default 改为127.0.0.1
com2sec notConfigUser default public

com2sec notConfigUser 127.0.0.1 public

#将下边这行中的systemview 改为all
access notConfigGroup "" any noauth exact systemview none none

access notConfigGroup "" any noauth exact all none none
#将下边这行的注释“#”号去掉
#view all included .1 80

启动snmpd服务
service snmpd start


4.安装cacti
cd /usr/local/src/cacti
wget 
http://www.cacti.net/downloads/cacti-0.8.7h.tar.gz
tar zxvf cacti-0.8.7h.tar.gz
mv cacti-0.8.7h /usr/local/cacti

5.在数据库中建库、授权、导入数据库结构
先启动mysql服务
service mysqld start

#注意导入cacti.sql时该文件的路径
mysql
mysql> create database cacti;
mysql> grant all privileges on cacti.* to 
cacti@localhost identified by 'cacti' with grant option;
mysql> grant all privileges on cacti.* to 
cacti@127.0.0.1 identified by 'cacti' with grant option;
mysql> use cacti;
mysql> source /usr/local/cacti/cacti.sql;

配置cacti以连接数据库
vi /usr/local/cacti/include/config.php
改成如下:
*/
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";
/* Default session name - Session name must contain alpha characters */
#$cacti_session_name = "Cacti";
保存退出!!

同时也修改下 /usr/local/cacti/include/global.php  按以上形式修改.

6.在apache中配置cacti的虚拟主机配置文件
vi /etc/http/conf.d/cacti.conf
加入如下内容:
Alias /cacti "/usr/local/cacti"
<Directory "/usr/local//cacti ">
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

重新启动apache
service httpd restart

7.浏览器进行cacti初使配置
用浏览器打开 
http://IP/cacti  #这里IP是cacti服务器的IP
这个很简单。。就不用说了!

8.先手工生成图表
php /usr/local/cacti/poller.php
创建任务计划
crontab -e
*/5 * * * * php /usr/local/cacti/poller.php > /dev/null 2>&1

确保 /usr/local/cacti/rra/目录存在
过几分种后,我们打开cacti web监控页面,点击graphs ,就可以查看到cacti 监控本机的图表~~~


二、cacti常用插件安装
cacti-plugin、npc、monitor、setting、thold、weathermap等。。。。

1.先安装cacti扩展模块
cd /usr/local/src/cacti
wget 
http://www.cacti.net/downloads/pia/cacti-plugin-0.8.7h-PA-v3.0.tar.gz
tar xvf cacti-plugin-0.8.7h-PA-v3.0.tar.gz
alias cp=cp
cp -R cacti-plugin-arch/* /usr/local/cacti/
cd /usr/local/cacti/
mysql -ucacti -pcacti cacti < pa.sql
patch -p1 -N < cacti-plugin-0.8.7h-PA-v3.0.diff

PS:为cacti配置文件打补丁的时候有可能它将 include/config.php.dist给打补丁了!!
vi /usr/local/cacti/include/config.php
加入此条语句:$url_path = "/cacti/"
......
#$cacti_session_name = "Cacti";
$url_path = "/cacti/";
.......

打开插件管理功能:
打开“Console----> User Management----> admin”然后在“Realm Permissions”选
项卡中勾选“Plugin Management”,然后点击Save 进行保存!
此时我们会在控制台---> Configuration 选项卡下多了一个Plugin Management 选项卡,到此cacti 架构扩展完成!!


2.settings 安装
可以到此站点下载:
http://docs.cacti.net/plugin:settings
tar zxvf settings-v0.71-1.tgz
mv settings /usr/local/cacti/plugins/

回到web控制台:点击Console---> Plugin Management,我们看到多了一个settings 插件,然后点击蓝色向下箭头,再点击向右蓝色箭头启用!!
再点击 Console ---> Settings 后我们会发现多了一个Mail/DNS 选项卡!

在 cacti 配置文件中添加settings 插件:
vi /usr/local/cacti/include/config.php
$plugins[] = 'settings';

3.Monitor 安装
下载:
http://docs.cacti.net/plugin:monitor
tar zxvf monitor-v1.3-1.tgz
mv monitor /usr/local/cacti/plugins/
cd /usr/local/cacti/plugins/monitor/
mysql -ucacti -pcacti cacti < monitor.sql

修改 cacti 配置文件,添加monitor 插件
vi /usr/local/cacti/include/config.php
加入如下内容:
$plugins[] = 'monitor';
启用方法同其它插件方法一样!!!!!!!!!!!!!!!!!


4.thold 安装
下载:
http://docs.cacti.net/plugin:thold
tar zxvf thold-v0\[1\].4.9-3.tgz
mv thold /usr/local/cacti/plugins/
启用方法同其它插件方法一样!!!!!!!!!!!!!!!!!
回到控制台,我们会发现多了一个“thold”选项
打开“Console --->Settings”,发现多了一个“thresholds”选项卡


5.Weathermap 安装
下载:wget 
http://www.network-weathermap.com/files/php-weathermap-0.97a.zip
unzip php-weathermap-0.97a.zip
mv weathermap /usr/local/cacti/plugins/
chmod -R 777 /usr/local/cacti/plugins/weathermap
启用方法同其它插件方法一样!!!!!!!!!!!!!!!!!
回到控制台,我们会发现多了一个“weathermap”选项!

到此为止,几个常用插件安装完成!!!!!!!!!!!!!!
PS:其它大部分插件可以到这个网站下载:
http://docs.cacti.net/plugins


----------------------------------第四部分:整合nagios与cacti---------------------------------------------------


整合cacti和nagios是利用了cacti的一个插件nagios for cacti,它的原理是将nagios的数据通过ndo2db导入到mysql数据库(cacti的库中),然后cacti读取数据库信息将nagios的结果展示出来。

1.首先需要安装ndoutils以将nagios的数据能导入到mysql数据库中
yum -y install mysql-devel

下载并安装ndoutils
wget 
http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.4b9/ndoutils-1.4b9.tar.gz/download
tar zxvf ndoutils-1.4b9.tar.gz
cd ndoutils-1.4b9

./configure --prefix=/usr/local/nagios LDFLAGS=-L/usr/lib64 --with-mysql-inc=/usr/include/mysql --with-mysql-lib=/usr/lib64/mysql --enable-mysql --disable-pgsql --with-ndo2db-user=nagios --with-ndo2db-group=nagios
make

2.建立配置文件
cp src/{ndomod-3x.o,ndo2db-3x,file2sock,log2ndo} /usr/local/nagios/bin
cd db
./installdb -ucacti -pcacti -d cacti
cd ..
cp config/{ndo2db.cfg-sample,ndomod.cfg-sample} /usr/local/nagios/etc
mv /usr/local/nagios/etc/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg
mv /usr/local/nagios/etc/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg
chmod 644 /usr/local/nagios/etc/ndo*
chown nagios:nagios /usr/local/nagios/etc/*
chown nagios:nagios /usr/local/nagios/bin/*

3.修改nagios.cfg配置文件以适应当前环境
vi /usr/local/nagios/etc/nagios.cfg
在文件中添加如下内容:
broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg

4.修改ndo2db.cfg以适应当前环境
vi /usr/local/nagios/etc/ndo2db.cfg
把与下面相关的参数修改成如下形式(有此不用改):
socket_type=tcp
db_servertype=mysql
db_host=localhost
db_port=3306
db_name=cacti
db_prefix=nagios_
db_user=cacti
db_pass=cacti

5.修改ndomod.cfg以适应当前环境
vi /usr/local/nagios/etc/ndomod.cfg
把与下面相关的参数修改成如下形式:
output_type=tcpsocket
output=127.0.0.1

6.让ndo2db开机启动
方法一:
加入到开机启动配置文件:
echo 'rm -f /usr/local/nagios/var/ndo.sock' >> /etc/rc.local
echo '/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg' >> /etc/rc.local

方法二:
cd /usr/local/src/ndoutils-1.4b9
cp ./daemon-init /etc/init.d/ndo2db
vi /etc/init.d/ndo2db
把Ndo2dbBin=/usr/local/nagios/bin/ndo2db改成
Ndo2dbBin=/usr/local/nagios/bin/ndo2db-3x

chmod +x /etc/init.d/ndo2db
service ndo2db start
启动时出现如下错误:
Starting ndo2db:Support for the specified database server is either not yet supported, or was not found on your system.
 done.
这个是由于没有安装mysql-devel这个包造成的@!@@@@
解决办法:
yum -y install mysql-devel
./configure --prefix=/usr/local/nagios LDFLAGS=-L/usr/lib64 --with-mysql-inc=/usr/include/mysql --with-mysql-lib=/usr/lib64/mysql --enable-mysql --disable-pgsql --with-ndo2db-user=nagios --with-ndo2db-group=nagios
make
alias cp=cp
cp src/{ndomod-3x.o,ndo2db-3x,file2sock,log2ndo} /usr/local/nagios/bin
alias cp="cp -i'


7..npc安装
tar zxvf npc-2.0.4.tar.gz
mv npc /usr/local/cacti/plugins/

修改 cacti 配置文件,添加npc 插件
vi /usr/local/cacti/include/config.php
加入:
$plugins[] = 'npc';
启用方法同其它插件方法一样!!!!!!!!!!!!!!!!!
回到控制台,我们会发现多了一个“npc”选项

安装 npc支持:json
wget 
http://pecl.php.net/get/json-1.2.1.tgz
tar zxvf json-1.2.1.tgz
cd json-1.2.1
phpize
./configure ;make ;make install

查看是否安装成功:
root@nagios_cacti json-1.2.1]# ll /usr/lib64/php/modules
总计 840
-rwxr-xr-x 1 root root  32344 2010-01-14 dbase.so
-rwxr-xr-x 1 root root 337768 2010-01-14 gd.so
-rwxr-xr-x 1 root root  92798 03-14 06:05 json.so
-rwxr-xr-x 1 root root 119568 2010-01-14 mysqli.so
-rwxr-xr-x 1 root root  53008 2010-01-14 mysql.so
-rwxr-xr-x 1 root root  28264 2010-01-14 pdo_mysql.so
-rwxr-xr-x 1 root root  92464 2010-01-14 pdo.so
-rwxr-xr-x 1 root root  24200 2010-01-14 pdo_sqlite.so
-rwxr-xr-x 1 root root  15416 2009-09-04 phpcups.so
-rwxr-xr-x 1 root root  28568 2010-01-14 snmp.so

修改php.ini文件添加对json的支持
vi /etc/php.ini
添加如下内容:
extension=json.so

重新启动apache
service httpd restart

查看是否加载了这个模块:
php -m |grep json

接着在右侧栏目中选择settings,点选npc的标签
钩选Remote Commands
Nagios Command File Path: /usr/local/nagios/var/rw/nagios.cmd
<这个文件启动nagios后会产生,根据实际的位置写>
Nagios URL: 
http://IP/nagios/  (这里ip为nagios服务器IP)
保存就可以了。

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


附:linux客户端通用配置

在被监控的linux主机上安装net-snmp
yum -y install net-snmp
vi /etc/snmp/snmpd.conf
将下边这行中的default 改为192.168.1.151 (cacti服务器的IP地址)
com2sec notConfigUser default public
 
com2secnotConfigUser 172.28.12.36 public
将下边这行中的systemview改为all
access notConfigGroup "" any noauth exact systemview none none

access notConfigGroup "" any noauth exact all none none
将下边这行的注释“#”号去掉
#view all included .1 80

启动snmp
service snmpd start

 

===============================

http://alice.blog.51cto.com/707092/164130

 

也谈cacti整合nagios(centos)
2009-06-09 08:55:14
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://alice.blog.51cto.com/707092/164130
花了近一天的时间整合了cacti和nagios,cacti用来检测运行状态nagios主要用来预警。期间参考了很多网友的文章,在此感谢下!在这里记录一下配置过程,以备后忘。。说整合其实只是表面的,cacti和nagios还是以他们原来的方式进行工作,ndo负责将nagios收集的数据存在数据库中,cacti的npc插件会从数据库中取数据在cacti的npc标签中来展现。 

环境是cenos5.1+最小化安装+development tools 
开始配置。。 

vi /etc/yum.repos.d/Dag.repo###定义第三方源 
[dag] 
name=Dag RPM Repository for Red Hat Enterprise Linux 
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag 
http://rh-
mirror.linux.iastate.edu/pub/dag/redhat/el$releasever/en/$basearch/dag 
http://wftp.tu-
chemnitz.de/pub/linux/dag/redhat/el$releasever/en/$basearch/dag 
http://archive.cs.uu.nl/mirror/dag.wieers/redhat/el$releasever/en/$basearch/dag 
http://apt.sw.be/redhat/el$releasever/en/$basearch/dag 
http://mirror.cpsc.ucalgary.ca/mirror/dag/redhat/el$releasever/en/$basearch/dag 
http://rpmfind.net/linux/dag/redhat/el$releasever/en/$basearch/dag 
http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag 
http://mirrors.ircam.fr/pub/dag/redhat/el$releasever/en/$basearch/dag 
gpgcheck=0 
enabled=1 
protect=0 
gpgcheck=1 
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
 
################################################## 

vi utterramblings.repo ###定义php独立源 

name=Jason's Utter Ramblings Repo 
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/     
enabled=1     
gpgcheck=1     
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka 
#########################################################################
 

一次性安装所需软件 
yum -y install httpd mysql-server rrdtool mysql-devel php-devel net-snmp php php-mysql php-gd php-pdo   php-snmp cacti nagios nagios-plugins 
或者也可以直接安装centos官方推荐软件库: 
下载rpm包 
wget http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
 
安装DAG的PGP Key 
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
 
验证下载包的完整性 
rpm -K rpmforge-release-0.3.6-1.el5.rf.*.rpm
 
安装包 
rpm -ivh rpmforge-release-0.3.6-1.el5.rf.*.rpm
 
参考网址: 
http://doc.linuxpk.com/58083.html
 

安装php-json 
wget http://www.aurore.net/projects/php-json/php-json-ext-1.2.0.tar.bz2 
tar xvjf php-json-ext-1.2.0.tar.bz2 
cd php-json-ext-1.2.0 
###初始化PHP环境 
phpize 
./configure 
make&&make install#####
 
(如果提示没有这个命令则首先要 
yum -y install php-devel 
如果还不行,说明你的编译工具有问题,安装一下就可以了 
yum -y install autoconf 
yum -y install automake 
yum -y install libtool 
 
查看有没有安装成功 
find / -name '*json.so' 
./usr/lib/php/modules/json.so 
说明已经有了 
vi /etc/php.ini 
添加 include ('/etc/php.d/json.ini')
 
vi /etc/php.d/json.ini 
内容如下: 
extension=json.so 
重启httpd 
apachectl graceful 

到此所需要的软件都安装完毕 

开始配置cacti 
修改cacti访问权限 
vi /etc/httpd/conf.d/cacti.conf 
如下: 
<Directory /var/www/cacti/> 
    DirectoryIndex index.php 
    Options -Indexes 
    AllowOverride all 
    order deny,allow 
    #deny from all 
    #allow from 127.0.0.1 
    allow from all 
    AddType application/x-httpd-php .php 
    php_flag magic_quotes_gpc on 
    php_flag track_vars on 
</Directory>
 
建立cacti数据库和授权 
mysqladmin create cacti 
mysql>grant all privileges on cacti.* to cacti@localhost identified by 'cacti'; 
mysql>flush privileges; 
mysql>exit;
 
导入数据: 
cd /var/www/cacti 
mysql -ucacti -p  cacti<cacti.sql
 
更改配置: 
vi /var/www/cacti/include/config.php 
$database_username = "cacti"; 
$database_password = "cacti";
 
vi /var/www/cacti/include/globle.php 
$database_username = "cacti"; 
$database_password = "cacti";
 
制定任务计划: 
crontab -e -u cacti
 
*/5 * * * * php -f /var/www/cacti/poller.php >/dev/null 2>&1 
重新启动apache 
service httpd restart
 
访问http://yourserver/cacti/ 进行安装,用户名密码都是admin 
下载cacti插件管理器 
wget http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7d-PA-v2.4.zip 
unzip cacti-plugin-0.8.7d-PA-v2.4.zip 
cd files-0.8.7d 
cp -rf * /var/www/cacti/
 
导入数据: 
cd .. 
mysql -ucacti -pcacti cacti<pa.sql####也可以使用root
 
更改访问路径: 
vi /var/www/cacti/include/globle.php 
$config['url_path'] = '/cacti/';
 

配置nagios 
我这里面没有更进一步配置nagios,npc安装完后nagios会自动启动本机的一些监控项目,如果想要监控其他的主机,则需要单独配置nagios,npc会予以展示 
更改apache访问权限使nagios可以正常使用 
htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
 
安装ndoutils 
wget http://sourceforge.net/project/downloading.php?group_id=26589&filename=ndoutils-1.4b7.tar.gz 
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 --disable-pgsql --with-ndo2db-user=nagios --with-ndo2db-group=nagios 
make clean 
make 
复制文件 
cd src 
cp ndomod-3x.o ndo2db-3x log2ndo file2sock /usr/bin/ 
cd ../config 
cp ndo2db.cfg ndomod.cfg /etc/nagios/ 
配置文件 
vi /etc/nagios/ndo2db.cfg
 
socket_name=/var/nagios/ndo.sock 
db_name=cacti 
db_prefix=npc_ 
db_user=cacti 
db_pass=cacti 
debug_level=1 
debug_file=/var/nagios/ndo2db.debug
 
vi /etc/nagios/ndomod.cfg 
output=/var/nagios/ndo.sock 
buffer_file=/var/nagios/ndomod.tmp
 
vi /etc/nagios/nagios.cfg ##确认以下五项的值正确 
check_external_commands=1 
command_check_interval = -1     
event_broker_options = -1 
broker_module = /usr/bin/ndomod-3x.o config_file=/etc/nagios/ndomod.cfg 
process_performance_data=1 


安装npc 
wget http://www.assembla.com/spaces/npc/documents/aUjAwmdW8r3BuPab7jnrAJ/download?filename=npc-2.0.0b.166.tar.gz 
tar zxvf npc-2.0.0b.166.tar.gz 
cd npc 
拷贝内容到cacti plugins文件夹 
cp npc /var/www/cacti/plugins/ 
添加插件识别 
vi /var/www/cacti/include/globle.php 
$plugins[] = 'npc'; 
到此 所有需要安装的东西完毕
 
使用npc 
进入你的cacti主页面 
在'User Management'中选择'admin',在下边'Realm Permissions'中钩选'Plugin Management'。这时右侧会出现'Plugin Management'连接,进去后在'uninstalled'中安装npc,然后在'intalled'中enable npc,然后在回去admin的'Realm Permissions'中会出现'use npc',把它选中。 
接着在右侧栏目中选择settings,点选npc的标签 
钩选Remote Commands 
Nagios Command File Path:      /var/nagios/rw/nagios.cmd 
Nagios URL:                    http://yourserver/nagios/ 
save一下
 
 
可能出现的问题 
1.npc页面空白或者提示无法访问npc.php 
确认安装并配置php-jsion正确 
2.cacti无图或者没有数据 
这个问题很多 
参考http://www.youyongming.cn/blog/article.asp?id=790
3.出现类似Error: Missing Dependency: mysql = 5.0.45-7.el5 is needed by package mysql-server的情况
请删除系统中已经安装的包,例如已经安装不同版本的mysql则出现上述问题
4.使用root登陆时候提示:Access denied for user 'root'@'localhost' (using password: NO/YES)
默认使用yum安装mysql后,root密码为空,出现这个问题从下面两个点入手,以下部分内容参考网络,感谢网友;
如果此方法行不通,那么参考我如下的方法(偶弄了半天,毕竟是菜鸟。。)
service mysqld stop
 mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
 mysql -uroot mysql
select user();查看返回的内容,如果如下所示:
+--------+
| user() |
+--------+
| root@  | 
+--------+
则需更改root登陆主机,参考如下命令:
mysql> UPDATE mysql.user SET Host='%' WHERE Host=' ' ;
mysql>GRANT ALL PRIVILEGES ON *.* TO root@"%";
mysql> FLUSH PRIVILEGES ;
mysql>exit
service mysqld restart
登陆成功。至于这个问题是如何引起的,还不明确,怀疑和主机名有关系,知道的高手们请指点下,小弟mysql超级菜鸟

其他问题一起交流
 

本文出自 “山岳不知” 博客,请务必保留此出处http://alice.blog.51cto.com/707092/164130

 

 

===============================

http://c.cnwebtool.com/C/100512.html

Apache+PHP+Nagios+Cacti服务器监控部署笔记

 
null

获取操作系统Centos源更新

修改更新源

rpm --import  http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

yum update

yum -y install gcc gcc-c++ bison patch unzip mlocate flex wget automake autoconf gd cpp gettext readline-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel libidn libidn-devel openldap openldap-devel openldap-clients openldap-servers nss_ldap expat-devel libtool libtool-ltdl-devel

如果系统默认安装了apache,请先卸载.执行:

yum remove httpd

下载最新稳定版的程序源码包,以下都是到官方网站或sourceforge下载的源码包.

wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.45.tar.gz/from/http://mysql.he.net/
wget http://www.apache.org/dist/httpd/httpd-2.2.15.tar.gz
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download
wget http://sourceforge.net/projects/mcrypt/files/MCrypt/2.6.8/mcrypt-2.6.8.tar.gz/download
wget http://sourceforge.net/projects/mhash/files/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2/download
wget http://www.php.net/get/php-5.2.13.tar.gz/from/this/mirror
wget http://php-fpm.org/downloads/php-5.2.13-fpm-0.5.13.diff.gz
wget http://www.lancs.ac.uk/~steveb/patches/php-mail-header-patch/php5-mail-header.patch
wget http://pecl.php.net/get/memcache-2.2.5.tgz
wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2
wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
wget http://pecl.php.net/get/imagick-2.3.0.tgz
wget http://download.suhosin.org/suhosin-0.9.29.tgz
wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
wget http://monkey.org/~provos/libevent-1.4.13-stable.tar.gz
wget http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz

一.安装Mysql.安装最新稳定版5.1.44版本

tar -zxf mysql-5.1.44.tar.gz

cd mysql-5.1.44

./configure --prefix=/usr/local/mysql --enable-assembler --enable-thread-safe-client --with-extra-charsets=all --with-big-tables --with-readline --with-ssl --with-embedded-server --enable-local-infile --with-plugins=partition,innodb_plugin,myisam,myisammrg

make && make install

cd ../

groupadd mysql -g 27

useradd mysql -u 27 -g 27 -c "MySQL Server" -d /var/lib/mysql -M

cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

/usr/local/mysql/bin/mysql_install_db --user=mysql

chown -R mysql /usr/local/mysql/var

chgrp -R mysql /usr/local/mysql/.

cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql

chmod u+x /etc/init.d/mysql

chkconfig --level 345 mysql on

echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf

echo "/usr/local/lib" >>/etc/ld.so.conf

ldconfig

ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

ln -s /usr/local/mysql/include/mysql /usr/include/mysql

ln -s /usr/local/mysql/bin/mysql_config /usr/bin/mysql_config

service mysql start

/usr/local/mysql/bin/mysqladmin -u root password root

service mysql restart

service mysql stop

二.编译安装apache(httpd).apache的执行用户为httpd.

groupadd httpd

useradd -g httpd -s /sbin/nologin -M httpd

cd /usr/local/src

tar zxvf httpd-2.2.8.tar.gz

cd httpd-2.2.8

./configure --prefix=/usr/local/apache --enable-headers --enable-mime-magic --enable-proxy --enable-rewrite --enable-ssl --enable-suexec --disable-userdir --with-included-apr --with-mpm=prefork --with-ssl=/usr --with-suexec-caller=nobody --with-suexec-docroot=/ --with-suexec-gidmin=100 --with-suexec-logfile=/usr/local/apache/logs/suexec_log --with-suexec-uidmin=100 --with-suexec-userdir=public_html

make

make install

mkdir /usr/local/apache/domlogs

cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

1.编辑/etc/init.d/httpd,在首行#!/bin/sh下添加:

# Startup script for the Apache Web Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve \
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache/logs/httpd.pid
# config: /usr/local/apache/conf/httpd.conf
ulimit -n 1024
ulimit -n 4096
ulimit -n 8192
ulimit -n 16384
ulimit -n 32768
ulimit -n 65535

保存退出.

2.配置apache配置参数文件httpd.conf,位于/usr/local/apache/conf/目录

cd /usr/local/apache/conf/

mv httpd.conf httpd.conf.bak

mkdir vhosts

vi httpd.conf

输入以下内容:

PidFile logs/httpd.pid
LockFile logs/accept.lock
ServerRoot "/usr/local/apache"
Listen 0.0.0.0:80
User httpd
Group httpd
ServerAdmin admin@vivaing.com
ServerName nagios.gviva.com

Timeout 300
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 5
UseCanonicalName Off
AccessFileName .htaccess
TraceEnable Off
ServerTokens ProductOnly
FileETag None
ServerSignature Off
HostnameLookups Off

# LoadModule perl_module modules/mod_perl.so

DocumentRoot "/usr/local/apache/htdocs"

<Directory "/">
 Options ExecCGI FollowSymLinks Includes IncludesNOEXEC -Indexes -MultiViews SymLinksIfOwnerMatch
 Order allow,deny
 Allow from all
 AllowOverride All
</Directory>

<Directory "/usr/local/apache/htdocs">
 Options Includes -Indexes FollowSymLinks
 AllowOverride None
 Order allow,deny
 Allow from all
</Directory>

DefaultType text/plain
RewriteEngine on
AddType text/html .shtml
AddHandler cgi-script .cgi .pl .plx .ppl .perl
AddHandler server-parsed .shtml
<IfModule mime_module>

    TypesConfig conf/mime.types
    AddType application/perl .pl .plx .ppl .perl
    AddType application/x-img .img
    AddType application/x-httpd-php .php .php3 .php4 .php5 .php6
    AddType application/x-httpd-php-source .phps
    AddType application/cgi .cgi
    AddType text/x-sql .sql
    AddType text/x-log .log
    AddType text/x-config .cnf conf
    AddType text/x-registry .reg
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddType application/x-tar .tgz
    AddType application/rar .rar
    AddType application/x-compressed .rar
    AddType application/x-rar .rar
    AddType application/x-rar-compressed .rar
    AddType text/vnd.wap.wml .wml
    AddType image/vnd.wap.wbmp .wbmp
    AddType text/vnd.wap.wmlscript .wmls
    AddType application/vnd.wap.wmlc .wmlc
    AddType application/vnd.wap.wmlscriptc .wmlsc
</IfModule>

<IfModule dir_module>
 DirectoryIndex index.html index.htm index.shtml index.php index.perl index.pl index.cgi
</IfModule>

<Files ~ "^error_log$">
 Order allow,deny
 Deny from all

 Satisfy All
</Files>

<FilesMatch "^\.ht">
 Order allow,deny
 Deny from all
 Satisfy All
</FilesMatch>

ErrorLog "logs/error_log"
LogLevel warn

<IfModule log_config_module>
 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
 LogFormat "%h %l %u %t \"%r\" %>s %b" common

 <IfModule logio_module>

 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
 </IfModule>
 CustomLog "logs/access_log" common
</IfModule>

<IfModule alias_module>
 ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
</IfModule>

<Directory "/usr/local/apache/cgi-bin">
 AllowOverride None
 Options None
 Order allow,deny
 Allow from all
</Directory>

<IfModule mpm_prefork_module>
 StartServers          3
 MinSpareServers       3
 MaxSpareServers       5
 MaxClients          150
 MaxRequestsPerChild   1024
</IfModule>

<IfModule mod_headers.c>
<FilesMatch "\.(html|htm|shtml)$">

Header set Cache-Control "max-age=3600, must-revalidate"
</FilesMatch>
</IfModule>

ReadmeName README.html
HeaderName HEADER.html

IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t

Include conf/extra/httpd-languages.conf

<Location /server-status>
 SetHandler server-status
 Order deny,allow
 Deny from all
 Allow from 127.0.0.1
</Location>
ExtendedStatus On

<Location /server-info>
 SetHandler server-info
 Order deny,allow
 Deny from all
 Allow from 127.0.0.1

</Location>

<IfModule ssl_module>
Listen 0.0.0.0:443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
SSLCipherSuite ALL:!ADH:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP
SSLPassPhraseDialog  builtin
SSLSessionCache         dbm:/usr/local/apache/logs/ssl_scache
SSLSessionCacheTimeout  300
SSLMutex  file:/usr/local/apache/logs/ssl_mutex
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

#Vhosts
NameVirtualHost 127.0.0.1:80
NameVirtualHost *

<VirtualHost 127.0.0.1:80 *>
 ServerName host.evlit.com
 DocumentRoot /var/www/html
 ServerAdmin admin@evlit.com
</VirtualHost>

Include conf/vhosts/*上述出现的127.0.0.1请改为你本机公网IP.

配置apache

将下面的内容加入apache配置文件的alias模块<IfModule alias_module>

ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"

<Directory "/usr/local/nagios/sbin">
#  SSLRequireSSL
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
    AuthName "Nagios Access"
    AuthType Basic
    AuthUserFile /usr/local/nagios/etc/htpasswd.users
    Require valid-user
</Directory>

Alias /nagios "/usr/local/nagios/share"

<Directory "/usr/local/nagios/share">
#  SSLRequireSSL
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
#  Order deny,allow
#  Deny from all
#  Allow from 127.0.0.1
    AuthName "Nagios Access"
    AuthType Basic
    AuthUserFile /usr/local/nagios/etc/htpasswd.users
    Require valid-user
</Directory>

安装服务并开机启动
 
chmod 755 /etc/init.d/httpd
chkconfig --add httpd
chkconfig --level 345 httpd on
service httpd start

三.编译安装php(mod_php)
1.编译安装相关支持库

tar -zxf libiconv-1.13.1.tar.gz

cd libiconv-1.13.1/

./configure

make

make install

cd ../

tar -jxf libmcrypt-2.5.8.tar.bz2

cd libmcrypt-2.5.8/

./configure

make

make install

/sbin/ldconfig

cd libltdl/

./configure --enable-ltdl-install

make

make install

cd ../

tar -jxf mhash-0.9.9.9.tar.bz2

cd mhash-0.9.9.9/

./configure

make

make install

ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la
ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so
ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4
ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8
ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a
ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la
ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so
ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2
ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1
ln -s /usr/local/bin/libmcrypt-config /usr/bin/libmcrypt-config

cd ../

tar -zxf mcrypt-2.6.8.tar.gz

cd mcrypt-2.6.8/

/sbin/ldconfig

./configure

make

make install

2.编译php,这里我们为php打入补丁.有助于防止邮件发送被滥用(多用户)以及在邮件中提供有价值的信息.
补丁介绍信息请点击:http://www.lancs.ac.uk/~steveb/patches/php-mail-header-patch/

tar -zxf php-5.2.13.tar.gz

patch -d php-5.2.13 -p1 < php5-mail-header.patch

cd php-5.2.13

./configure --prefix=/usr/local --with-config-file-path=/etc --with-apxs2=/usr/local/apache/bin/apxs --enable-bcmath --enable-calendar --enable-exif --enable-ftp --enable-gd-native-ttf --enable-libxml --enable-magic-quotes --enable-mbstring --enable-pdo=shared --enable-soap --enable-sockets --enable-zip --with-bz2 --with-curl --with-curlwrappers --with-freetype-dir --with-gd --with-gettext --with-jpeg-dir --with-kerberos --with-libexpat-dir=/usr --with-libxml-dir=/usr --with-mcrypt=/usr --with-mhash=/usr --with-mysql=/usr --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mysqli=/usr/bin/mysql_config --with-openssl=/usr --with-openssl-dir=/usr --with-pdo-mysql=shared --with-pdo-sqlite=shared --with-png-dir=/usr --with-sqlite=shared --with-ttf --with-xmlrpc --with-zlib -with-zlib-dir=/usr --enable-pcntl

make ZEND_EXTRA_LIBS='-liconv'

make install

cp php.ini-dist /etc/php.ini

cd ../

3.安装php扩展模块

tar -zxf memcache-2.2.5.tgz

cd memcache-2.2.5/

phpize

./configure --with-php-config=/usr/local/bin/php-config --with-zlib-dir --enable-memcache

make

make install

cd ../

tar -jxf eaccelerator-0.9.6.tar.bz2

cd eaccelerator-0.9.6/

phpize

./configure --enable-eaccelerator=shared --with-php-config=/usr/local/bin/php-config

make

make install

mkdir -p /tmp/eaccelerator

chmod 777 /tmp/eaccelerator

echo "mkdir -p /tmp/eaccelerator" >> /etc/rc.local

echo "chmod 777 /tmp/eaccelerator" >> /etc/rc.local

cd ../

tar -zxf ImageMagick.tar.gz

cd ImageMagick-*

./configure

make

make install

cd ../

tar -zxf imagick-2.3.0.tgz

cd imagick-2.3.0/

phpize

./configure --with-php-config=/usr/local/bin/php-config

make

make install

cd ../

tar -zxf suhosin-0.9.29.tgz

cd suhosin-0.9.29

phpize

./configure

make

make install

cd ../

tar -zxf ioncube_loaders_lin_x86.tar.gz

cd ioncube

mkdir /usr/local/ioncube

mv ioncube_loader_lin_5.2.so /usr/local/ioncube/

cd /usr/local/src

tar -zxf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

mkdir -p /usr/local/Zend/lib/Optimizer-3.3.9/php-5.2.x

cp ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp/ZendOptimizer.so /usr/local/Zend/lib/Optimizer-3.3.9/php-5.2.x/ZendOptimizer.so

3.1.修改php.ini.

查找/etc/php.ini中的extension_dir = "./".将其修改为extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"

查找;include_path = ".:/php/includes",删除前面的分号,并修改为include_path = ".:/usr/lib/php:/usr/local/lib/php"

跳到最后一行,然后添加以下内容:

extension = "memcache.so"
extension = "pdo.so"
extension = "pdo_mysql.so"
extension = "pdo_sqlite.so"
extension = "sqlite.so"
extension = "eaccelerator.so"
eaccelerator.shm_size = 32
eaccelerator.cache_dir = "/tmp/eaccelerator"
eaccelerator.enable = 1
eaccelerator.optimizer = 0
eaccelerator.debug = 0
eaccelerator.name_space = ""
eaccelerator.check_mtime = 1
eaccelerator.filter = ""
eaccelerator.shm_max = 0
eaccelerator.shm_ttl = 7200
eaccelerator.shm_prune_period = 7200
eaccelerator.shm_only = 1
eaccelerator.compress = 0
eaccelerator.compress_level = 9
eaccelerator.keys = shm
eaccelerator.sessions = shm
eaccelerator.content = shm
zend_extension = "/usr/local/ioncube/ioncube_loader_lin_5.2.so"
zend_extension = "/usr/local/Zend/lib/Optimizer-3.3.9/php-5.2.x/ZendOptimizer.so"

4,安装Memcached(可选)

cd /usr/local/src

tar -xzf libevent-1.4.13-stable.tar.gz

cd libevent-1.4.13-stable

./configure

make

make install

ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib

cd ../

tar -xzf memcached-1.4.4.tar.gz

cd memcached-1.4.4

./configure --with-libevent=/usr

make

make install

基本使用方法:

启动:/usr/local/bin/memcached -d -m 64 -p 11211 -u nobody -l localhost

关闭:killall -9 memcached


以下内容为安装Nagios3.2.3:


下载Nagios3.2.3,Nagios-plugins1.4.15,nrpe2.12,nsclient++

http://www.nagios.org/download/wgethttp://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz

wget http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.11.tar.gz

Nagios3.2.3,Nagios-plugins1.4.15,nrpe2.12安装在监控服务器上。

去http://www.nagios.org/download/addons/下载nrpe和nsclient++插件。

nrpe2.12安装在Linux/Unix被监控端。
nsclient++安装在Windows被监控端。

创建帐号及组

创建帐号

useradd -m nagios
passwd nagios

加入Nginx用户组

/usr/sbin/usermod -a -G httpd nagios

httpd 为运行Nginx的帐号。

安装nagios

tar xvf nagios-cn-3.2.3.tar.bz2

cd nagios-cn-3.2.3

./configure --with-command-group=httpd --prefix=/usr/local/nagios --with-gd-lib=/usr --with-gd-inc=/usr

make all

使用make install来安装主程序,CGI和HTML文件

make install

使用make install-init在/etc/rc.d/init.d安装启动脚本

make install-init

使用make install-cofig来安装示例配置文件,安装的路径是/usr/local/nagios/etc.

make install-config

使用make install-commandmode来配置目录权限

make install-commandmode

nagios目录功能的简要说明:

bin    Nagios执行程序所在目录,nagios文件即为主程序
etc    Nagios配置文件位置
sbin    Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录
Share    Nagios网页文件所在的目录
var    Nagios日志文件、spid 等文件所在的目录
var/archives    日志归档目录
var/rw    用来存放外部命令文件

创建Nginx目录验证文件

需要使用有apache服务器创建密码文件

/usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password: (输入密码)
Re-type new password: (再输入一次密码)
Adding password for user nagiosadmin

当然也可以使用perl 创建密码文件 新建 一个 pw.pl 文件 其内容:

#!/usr/bin/perl
use strict;
my $pw=$ARGV[0] ;
print crypt($pw,$pw)."\n";

然后执行 chmod +x pw.pl
./pw.pl password
papAq5PwY/QQM
papAq5PwY/QQM 就是password 的crypt()密码
然后 将上面用 perl 生成的 加密后的密码
按照
用户名:密码
的格式写到 htpasswd 文件中

这样既完成了设置


配置nagios配置文件

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

将里面的email地址改为自己的email地址。

cd ../

安装Nagios插件

tar xzvf nagios-plugins-1.4.15.tar.gz

cd nagios-plugins-1.4.15

./configure --with-nagios-user=nagios --with-nagios-group=httpd

make

make install

安装nagios-snmp-plugins

nagios-snmp-plugins是一套用Perl编写的通过SNMP方式监控主机的插件程序。

wget http://nagios.manubulon.com/nagios-snmp-plugins.1.1.1.tgz
tar xzf nagios-snmp-plugins.1.1.1.tgz
cd nagios_plugins

配置check_snmp_int.pl这些插件的使用时需要配置cpan,CPAN是Comprehensive Perl Archive Network的缩写.。它是一个巨大的Perl软件收藏库,收集了大量有用的Perl模块(modules)及其相关的文件。这里主要是使用Perl-Net-SNMP模块。有两种方式安装:

A)通过CPAN来安装
#perl -MCPAN -e shell
cpan> install Net::SNMP

B) 手工安装

首先去官方网站www.cpan.org下载以下几个模块
Crypt::DES
Digest::MD5
Digest::SHA1
Digest::HMAC
Net::SNMP

下载后对于每个模块依次按照下面的方式安装

tar zxf <module>.tar.gz   <module>表示模块名,具体请按上面提到的模块替换
cd <module>            <module>表示模块名,具体请按上面提到的模块替换
perl Makefile.pl
make test
make install

注意:Net::SNMP模块必须在最后安装。至此Net::SNMP手动安装完毕

./install.sh 

执行nagios-snmp-plugins安装脚本,执行之后会将插件命令安装到/usr/local/nagios/libexec下

启动Nagios

配置机器启动时自动启动Nagios

chkconfig --add nagios

chkconfig nagios on

检查Nagios配置文件

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

启动Nagios

service nagios start

2).如果开启防火墙,应该允许访问apache(一般为80端口)并允许nagios去抓取被监控机信息(一般nrpe为5666端口)。

访问Nagios服务器

http://localhost/

输入用户名及密码登录。

安装nrpe插件,用来监控Linux机器

tar xzvf nrpe-2.12.tar.gz

cd nrpe-2.12

./configure

make all

在Nagios服务器端只要安装nrpe监控插件就行

make install-plugin

在/usr/local/nagios/etc/objects/commands.cfg中定义check_nrpe命令

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

########################################################################
#
# 2008.11.18 add by Stone
# NRPE COMMAND
#
########################################################################
# 'check_nrpe ' command definition
define command{
         command_name check_nrpe
         command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
         }

在被监控服务器(Linux/unix)上安装Nagios-plugins和nrpeuseradd nagios

tar xzvf nagios-plugins-1.4.15.tar.gz

cd nagios-plugins-1.4.15

Nagios-plugins默认安装到/usr/local/nagios

./configure

make

make install

chown nagios.nagios /usr/local/nagios/

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

tar xzvf nrpe-2.12.tar.gz

cd nrpe-2.12

./configure

make all

安装nrpe插件,本监控端可以不装

make install-plugin

安装nrpe守护进程

make install-daemon

安张nrpe配置文件

make install-daemon-config

修改nrpe配置文件,允许Nagios监控服务器(NagiosServer IP)监控

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

多台机器用逗号隔开

allowed_hosts=127.0.0.1,(NagiosServer IP)

以独立守护进程启动nrpe,也可以使用xinetd启动nrpe,具体清查看nrpe官方文档。

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

开机自动启动nrpe

vi /etc/rc.d/rc.local

加入下面行

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

检查nrpe是否安装正常

/usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.12

返回nrpe版本说明安装没问题。

查看启动端口

如果有防火墙应该开放5666端口:


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

注意:我们需要在/usr/local/nagios/etc/nrpe.cfg中定义我们用到的监控本地资源的命令。

下面的命令是默认定义的:
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

复制代码下面的命令是自己定义的:

# 监控交换分区的使用情况,使用超过20%时为警告状态,超过10%时为严重状态

command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

# 监控根分区磁盘使用情况

command[check_disk_root]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
***********************************************************

附:

做好必要的安全工作

设置用户家目录/home/user,相关配置参数文件,以及访问日志等目录的权限.

chmod 711 /home

chmod 711 /usr/local/pureftpd

chmod 711 /usr/local/apache/conf/vhosts

chmod 711 /usr/local/apache/domlogs

chmod 711 /usr/local/apache/logs

基础环境为Apache+PHP+Mysql+Nagios在这个基础上我们进行安装CACTI并与Nagios进行整合;

基础环境的安装请参见我前面的文章:Apache+PHP+Nagios服务器监控部署笔记(一)Nagios安装篇

下载Cacti并安装

安装rrdtool(http://oss.oetiker.ch/rrdtool/)

 

yum install pango pango-devel

wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.3.tar.gz
tar zxvf rrdtool-1.4.3.tar.gz
cd rrdtool-1.4.3
make
make install

安装net-snmp(http://www.net-snmp.org/)

wget http://netcologne.dl.sourceforge.net/project/net-snmp/net-snmp/5.5/net-snmp-5.5.tar.gz
tar zxvf net-snmp-5.5.tar.gz
cd net-snmp-5.5
./configure --prefix=/usr/local/net-snmp --with-mysql=/usr/local/mysql/bin/mysql_config --enable-developer
make
make install

###########提示信息##############

default version of-snmp-version(3):3(在这里版本通常有三种形式:1,2c,3)
Systemcontact information(配置该设备的联系信息): ruanxi@163.com(也可以是邮箱地址)
System location (该系统设备的地理位置):Fujian P.R.C
Location to write logfile (日志文件位置):/var/log/snmpd.log
Location to Write persistent(数据存储目录):/var/net-snmp
说明:也可以使用yum install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils net-snmp-perl

或者yum net-snmp*来进行安装

ln -s /usr/local/net-snmp/bin/* /usr/local/bin/
cp EXAMPLE.conf  /usr/local/net-snmp/share/snmp/snmpd.conf
vi /usr/local/net-snmp/share/snmp/snmpd.conf         //修改snmpd.conf(修改COMMUNITY、允许抓取snmp数据的主机、抓取数据范围等)。

以下是我的snmpd.conf配置##########################################
#       sec.name  source          community
com2sec local     localhost       public
##########################################

/usr/local/net-snmp/sbin/snmpd     //启动SNMP服务
 vi /etc/rc.d/rc.local       //在rc.local上加入一行/usr/local/net-snmp/sbin/snmpd,系统启动时启动SNMP服务。

安装cacti与cacti-spine(http://cactiusers.org/)

wget http://www.cacti.net/downloads/cacti-0.8.7g.tar.gz
wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.7g.tar.gz

安装cacti
tar zxvf cacti-0.8.7g.tar.gz
mv cacti-0.8.7g /usr/local/cacti
useradd -s /sbin/nologin cacti
passwd cacti
usermod -a -G httpd cacti
chown -R httpd:cacti /usr/local/cacti

安装cacti-spine

tar zxvf cacti-spine-0.8.7g.tar.gz
cd cacti-spine-0.8.7g
获取补丁程序并安装补丁
wget http://www.cacti.net/downloads/spine/patches/0.8.7g/unified_issues.patch
patch -p1 -N < unified_issues.patch
./configure --prefix=/usr/local/cacti-spine --with-mysql=/usr/local/mysql --with-snmp=/usr/local/net-snmp
make
make install

配置cacti、cacti-spine

创建cacti数据库,并初始化该数据库
/usr/local/mysql/bin/mysql -u root -pXXXX  (XXXX为数据库密码)
mysql> create database cacti;
mysql> GRANT ALL PRIVILEGES ON *.* TO cacti@localhost IDENTIFIED BY 'cacti' WITH GRANT OPTION; 
mysql> flush privileges;

/usr/local/mysql/bin/mysql -ucacti -pcacti cacti < /usr/local/cacti/cacti.sql

编译配置文件/usr/local/cacti-spine/etc/spine.conf(注意:如果是RPM方式安装,那么配置文件位于/etc/spine.conf)

vi /usr/local/cacti-spine/etc/spine.conf
写入如下内容
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass 2010
DB_Port 3306
DB_PreG 0

配置cacti的虚拟主机指向目录/usr/local/cacti/


配置cacti的config.php配置文件

vi /usr/local/cacti/include/config.php
修改如下内容
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";


配置/etc/cron.d/cacti任务文件,即:系统每5分钟进行收集SNMP代理上的数据

crontab -e
*/5 * * * * /usr/local/bin/php /usr/local/cacti/poller.php  &>/dev/null 2>&1

测试一下

重启apache

http://ip/,登录cacti,还要相关配置,下面是一个配置例子

说明:路径要设置对,也可以先跳过,然后登录cacti主页后,选择"settings" -> "Paths"进行修改

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

Cacti插件的安装

安装Plugin Architecture(http://cactiusers.org/)

作用:让cacti支持更多的插件

tar zxvf cacti-plugin-0.8.7g-PA-v2.9.tar.gz

mv cacti-plugin-arch /usr/local/cacti/

cd /usr/local/cacti/

/usr/local/mysql/bin/mysql -ucacti -pcacti cacti < cacti-plugin-arch/pa.sql

patch -p1 -N < cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.9.diff
 
rm -rf cacti-plugin-arch
chown -R httpd:cacti /usr/local/cacti

vi /usr/local/cacti/include/global.php,修改并增加如下
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "2010";
$database_port = "3306";


显示Plugin-Management

User Management -> "admin" or "other user" -> "Realm Permissions" -> "Plugin Management" -> 打勾并保存

安装相关插件

安装Settings插件(http://docs.cacti.net/plugins)
wget http://docs.cacti.net/_media/plugin:settings-v0.7-1.tgz
tar zxvf settings-v0.7-1.tgz 
mv settings /usr/local/cacti/plugins/settings
根据新旧版本插件,进行设置

安装Thold插件(http://docs.cacti.net/plugins)
wget http://docs.cacti.net/_media/plugin:thold-latest.tgz -O thold-latest.tgz
tar zxvf thold-latest.tgz
mv thold-0.41 /usr/local/cacti/plugins/thold
根据新旧版本插件,进行设置

安装Monitor插件(http://docs.cacti.net/plugins)

tar zxvf monitor-v1.2-1.tgz
mv monitor /usr/local/cacti/plugins/monitor
根据新旧版本插件,进行设置

WeatherMap插件(http://www.network-weathermap.com/download)
wget http://www.network-weathermap.com/files/php-weathermap-0.97a.zip
unzip php-weathermap-0.97a.zip
mv weathermap /usr/local/cacti/plugins/

cd /usr/local/cacti/plugins/weathermap/
chown -R httpd:cacti /usr/local/cacti
chmod u+w configs #设置configs目录的所属主对该目录可写
cp editor-config.php-dist editor-config.php
vi editor-config.php,修改如下参数
$cacti_base = "/usr/local/cacti"; #cacti目录的绝对路径
$cacti_url = "http://localhost/cacti/"; #访问cacti的地址
$mapdir= $cacti_base.'/plugins/weathermap/configs'; #设置configs目录的绝对路径

根据新旧版本插件,进行设置

Nagios整合到Cacti

安装Nagios Plugin for Cacti(NPC)插件(http://trac2.assembla.com/npc)

作用:将nagios的数据通过ndo2db导入到mysql数据库,然后cacti读取数据库信息将nagios的结果通过NPC展示出来

安装NPC

wget http://www.constructaegis.com/downloads/npc-2.0.4.tar.gz
tar zxvf npc-2.0.4.tar.gz
mv npc /usr/local/cacti/plugins/
最后:根据新旧版本插件,进行设置

安装php-json(http://pecl.php.net/package/json),因为NPC需要用到它

wget http://pecl.php.net/get/json-1.2.1.tgz
tar zxvf json-1.2.1.tgz
cd json-1.2.1
/usr/bin/phpize
./configure --with-php-config=/usr/local/bin/php-config --enable-shared --enable-static --with-json
make
make install
service httpd restart
http://ip /phpinfo.php

访问phpinfo.php文件,确定一下是否已经加载了json,文件可以自行创建,内容如下:

<?php
phpinfo();
?>

安装NDOUtils

cd /usr/src/ndoutils-1.4b9/

./configure --prefix=/usr/local/nagios --enable-mysql --disable-pgsql LDFLAGS=-L/usr/local/mysql/lib/mysql  --with-mysql-lib=/usr/local/mysql/lib/mysql --with-mysql=/usr/local/mysql

make

在编译没有出错后,复制相应的配置文件与相关的执行文件,他们的主要作用就是做相关的配置与让nagios可以正确的调用。

cd /usr/src/ndoutils-1.4b9/src/

cp ndo2db-3x ndo2db-2x file2sock log2ndo /usr/local/nagios/bin/

cd ../config

cp ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg

cp ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg

以上复制的文档中前两项是版本相关的,即假如您的nagios主版本号是2系列,则需要拷贝名为ndomod-2x.o和ndo2db-2x的两个文档。后两项是通用文档,随便复制过去就OK了。

修改NPC在CACTI数据库中的相关表,这个应该是个BUG。所以需要执行如下操作:

ALTER TABLE `npc_hostchecks` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_hoststatus` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_servicechecks` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_servicestatus` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_statehistory` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_eventhandlers` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_systemcommands` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;
ALTER TABLE `npc_notifications` ADD COLUMN `long_output` varchar(8192) NOT NULL default '' AFTER `output`;

配置ndo2db.cfg文件:

[root@node3 etc]# vim /usr/local/nagios/etc/ndo2db.cfg

lock_file=/usr/local/nagios/var/ndo2db.lock
ndo2db_user=nagios
ndo2db_group=nagios
socket_type=tcp
socket_name=/usr/local/nagios/var/ndo.sock
tcp_port=5668
use_ssl=0
db_servertype=mysql
db_host=localhost
db_port=3306
db_name=cacti
db_prefix=npc_
db_user=cacti
db_pass=cacti
max_timedevents_age=1440
max_systemcommands_age=10080
max_servicechecks_age=10080
max_hostchecks_age=10080
max_eventhandlers_age=44640
max_externalcommands_age=44640
debug_level=0
debug_verbosity=1
debug_file=/usr/local/nagios/var/ndo2db.debug
max_debug_file_size=1000000

配置ndomod.cfg文件

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

instance_name=node3
output_type=tcpsocket
output=127.0.0.1
tcp_port=5668
use_ssl=0
output_buffer_items=5000
buffer_file=/usr/local/nagios/var/ndomod.tmp
file_rotation_interval=14400
file_rotation_timeout=60
reconnect_interval=15
reconnect_warning_interval=15
data_processing_options=-1
config_output_options=2

配置nagios的配置文件

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

添加以下两句,第二句如果没有才加上去,默认是有的。

broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg

event_broker_options=-1

启动ndo2db守护进程

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

执行完以上这条命令,如果没有报错,就看看nagios.log的日志,如果出现以下提示:

nagios: ndomod: Could not open data sink!  I'll keep trying, but some output may get lost...

解决方法就是:

查看/usr/local/nagios/etc/ndo2db.cfg文件里的ndo2db_user=nagios ndo2db_group=httpd db_user=cacti

db_pass=ndouser 这几项是否正确配置了,ndo2db_user就是你运行nagios的用户名;ndo2db_group是运行nagios的组,db_user表示的是你授权访问ndodb数据库的用户名,db_pass访问数据的密码。

如果在加载守护进程出现:

Failed to obtain lock on file /usr/local/nagios/var/ndo2db.lock: Permission denied  : Permission denied

解决方法是:确认你在/usr/local/nagios/etc/ndo2db.cfg里ndo2db_user与ndo2db_group这两项的填写的用户是否对目录/usr/local/nagios/var/有写入的权限。

重新启动nagios

service nagios restart

至此已经全部配置完成,下面确认我们已经安装成功,进入mysql看看我们创建的数据表里是否有数据。并且访问CACTI

 

 

实现MSN报警
基础环境,请参考我的前面的文章:《Apache+PHP+Nagios+Cacti+MSN服务器监控部署笔记(一)Nagios安装篇》
要实现MSN报警需要使用phpmsnclass,这是一个用php实现的msn机器人程序。
wget http://phpmsnclass.googlecode.com/files/phpmsnclass_1.10.7z
下载phpmsnclass,此文件为7zip压缩格式,需要安装7z

 

wget http://nchc.dl.sourceforge.net/sourceforge/p7zip/p7zip_4.65_x86_linux_bin.tar.bz2
tar jxvf p7zip_4.65_x86_linux_bin.tar.bz2
cd p7zip_4.65
./install.sh  安装7z
7z e phpmsnclass_1.9.7z  解压文件
msn报警有2种方式,一种是直接使用php进行登陆验证发送消息,另外一个是以msn机器人的形式发送,将消息存储在目录内。这里采用第二种。
cd phpmsnclass
mkdir /var/spool/msnbot
mkdir /var/spool/msnbot/log
mkdir /var/spool/msnbot/spool
下面把msnbot.php, config.php和msn.class.php拷贝到/var/spool/msnbot/
cp msnbot.sh msnbot.php msn.class.php msnsendmsg.php notify_add.php notify_send.php notify.sql sample.php test.msn changelog.txt config.php notify_config.php /var/spool/msnbot/

 

chmod 777 /var/spool/msnbot/spool 
chmod o+t /var/spool/msnbot/spool
这个机器人的工作原理是如果要发送消息,就调用php生成消息文件到
/var/spool/msnbot/spool目录中,发送程序检查到该目录有新文件就会模拟msn登陆和发信将信息发送出去。
chmod +x /var/spool/msnbot/msnbot.php
 vi config.php        
在配置文件中设置MSN的账号和密码(以后报警通过这个MSN发出)
cp msnbot.sh /etc/init.d/
chmod +x msnbot.sh     加上执行权限
vi msnbot.sh            
修改后的内容如下:
#! /bin/sh
#
# MSN bot
#
NAME=msnbot
DESC="MSN bot"
set -e
case "$1" in
  start)
        echo -n "Starting $DESC: $NAME"
        /usr/local/php/bin/php -Cq /var/spool/msnbot/msnbot.php
        echo "."
        ;;
  stop)
        echo -n "Stopping $DESC: $NAME"
    MSNPID=`cat /var/spool/msnbot/log/msnbot.pid`
        kill $MSNPID
        echo "."
        ;;
  restart|force-reload)
        $0 stop
        sleep 5s
        $0 start
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac
exit 0
需要修改/var/spool/msnbot/msnbot.php这句
前面添加php程序的具体位置并添加具体参数:
/usr/local/php/bin/php -Cq /var/spool/msnbot/msnbot.php
修改msnbot.php文件
vi /var/spool/msnbot/msnbot.php

去除文件中第一行的内容;

启动MSN机器人

./msnbot.sh start

下面发个消息测试一下 
php msnsendmsg.php netkey530@hotmail.com "this is a test2"

向netkey530@hotmail.com的MSN账号发送测试信息

注意需要将netkey530@hotmail.com和config.php里设置的MSN账号相互加为好友

如果成功接收到信息说明配置正确,此步骤到此结束,后面的能让Nagios使用MSN进行报警的功能需要到Nagios里设置了。

 

 

 

 

 

###############################

http://88fly.blog.163.com/blog/static/122680390201151511253223/

Nagios的安装部署和与Cacti的整合  

2011-06-15 23:02:53|  分类: Monit |  标签:nagios  |字号 订阅

 
 

本文档基于CENTOS5.2系统和Nagios实现网管监控功能,并与Cacti实现整合。Centos初始安装后的一些系统基本设置工作本文档不做说明,请参考相关资料。 
文档版本:V1.0 
最后修改:2009-3-19 By NetKey 
系统环境:CentOS5.2 
格式约定:

黑色粗体:为输入命令部分

红色粗体:为需要按你的环境修改的部分

绿色粗体:系统返回的提示信息

蓝色粗体:文档注释部分

 

Nagios是一款开源的免费网络监视工具,其功能强大,灵活性强。能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。本文档主要实现nagios监控windows主机,nagios监控windows系统有三种实现方式:SNMP、NSClient++、NRPE,后面两种方式都需要在windows上安装agent,因目前服务器上都开启了SNMP,所以本文档只介绍使用SNMP方式来监控Windows。 
第一部分:Nagios的安装 
1.安装基础支持套件和添加用户 
nagios需要一些基础支持套件才能运行,如httpd;gcc;glibc;glibc-common;gd;gd-devel库等。

创建一个用户组名为nagcmd 用于从web执行外部命令:将nagios与apache用户加入到这个用户主:

#yum install httpd

#yum install gcc

#yum install glibc glibc-common

#yum install gd gd-devel

#/usr/sbin/useradd -m nagios 添加一个名为nagios的用户用以专门跑nagios

#passwd nagios 设置密码

#/usr/sbin/groupadd nagcmd 添加nagcmd用户组,用以通过web页面提交外部控制命令

#/usr/sbin/usermod -a -G nagcmd nagios 将nagios用户加入nagcmd组

#/usr/sbin/usermod -a -G nagcmd apache 将apache用户加入nagcmd组

 


2.编译与安装nagios 

#mkdir ~/downloads
#cd ~/downloads
#wget http://osdn.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.6.tar.gz
#wget http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz
#cd ~/downloads
#tar xzf nagios-3.0.6.tar.gz
#cd nagios-3.0.6
#./configure --with-command-group=nagcmd  
#make all
#make install
#make install-init   
#make install-config
#make install-commandmode
这时nagios基本已经安装完成,默认安装后的配置文件用于启动nagios是没有问题的。
#vi usr/local/nagios/etc/objects/contacts.cfg
修改nagiosadmin这行其中的邮件地址为你的email地址,以将报警邮件发到你的邮箱
#make install-webconf   安装nagios的web接口
#htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
设置登陆web界面时HTTP验证的账号密码
#service httpd restart  启动apache

 

验证程序是否被正确安装。切换目录到安装路径(默认是/usr/local/)看是否存在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

 


3. 编译并安装nagios-plugins 
nagios-plugins是nagios官方提供的一套插件程序,nagios监控主机的功能其实都是通过执行插件程序来实现的。

#cd ~/downloads

#tar xzf nagios-plugins-1.4.13.tar.gz

#cd nagios-plugins-1.4.13

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

#make

#make install 
安装插件,安装后所有插件命令将被安装到/usr/local/nagios/libexec 目录下

 

4. 验证:

ls /usr/local/nagios/libexec

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

3.2.5 配置WEB接口

方法一:直接在安装nagios时 make install‐webconf

创建一个nagiosadmin的用户用于Nagios的WEB接口登录。记下你所设置的登录口令,一会儿你会用到它。

htpasswd ‐c /usr/local/nagios/etc/htpasswd.users nagiosadmin

重启Apache服务以使设置生效。

service httpd restart

方法二:在httpd.conf最后添加如下内容: #setting for nagios 20090325

#setting by bbs.linuxtone.org

ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin

<Directory "/usr/local/nagios/sbin">

Options ExecCGI

AllowOverride None

Order allow,deny

Allow from all

AuthName "Nagios Access"

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd

//用于此目录访问身份验证的文件

Require valid-user

</Directory>

Alias /nagios /usr/local/nagios/share

<Directory "/usr/local/nagios/share">

Options None

AllowOverride None

Order allow,deny

Allow from all

AuthName "Nagios Access"

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd

//用于此目录访问身份验证的文件

Require valid-user

</Directory>

 

/usr/local/apache2/bin/htpasswd ‐c /usr/local/nagios/etc/htpasswd test

New password: (输入12345)

Re‐type new password: (再输入一次密码)

Adding password for user test

查看认证文件的内容

less /usr/local/nagios/etc/htpasswd

test:OmWGEsBnoGpIc 前半部分是用户名test,后面是加密后的密码

本例添加的是test 用户名,需要改 cgi.cfg 配置文件,允许test用户 authorized_for_system_information=test

authorized_for_configuration_information=test

authorized_for_system_commands=test

authorized_for_all_services=test

authorized_for_all_hosts=nagiosadmin,test

authorized_for_all_service_commands=test

authorized_for_all_host_commands=test

如果有多用户,请用逗号格开

 

4.安装nagios-snmp-plugins 
nagios-snmp-plugins是一套用Perl编写的通过SNMP方式监控主机的插件程序。

#cd ~/downloads

#wget http://nagios.manubulon.com/nagios-snmp-plugins.1.1.1.tgz

#tar xzf nagios-snmp-plugins.1.1.1.tgz

#cd nagios_plugins 

配置check_snmp_int.pl这些插件的使用时需要配置cpan,CPAN是Comprehensive Perl Archive Network的缩写.。它是一个巨大的Perl软件收藏库,收集了大量有用的Perl模块(modules)及其相关的文件。这里主要是使用Perl-Net-SNMP模块。有两种方式安装: 
A)通过CPAN来安装

#perl -MCPAN -e shell

cpan> install Net::SNMP

B) 手工安装

首先去官方网站www.cpan.org下载以下几个模块

Crypt::DES

Digest::MD5

Digest::SHA1

Digest::HMAC

Net::SNMP

下载后对于每个模块依次按照下面的方式安装

#tar zxf <module>.tar.gz <module>表示模块名,具体请按上面提到的模块替换

#cd <module> <module>表示模块名,具体请按上面提到的模块替换

#perl Makefile.pl

#make test

#make install

注意:Net::SNMP模块必须在最后安装。至此Net::SNMP手动安装完毕

#./install.sh 
执行nagios-snmp-plugins安装脚本,执行之后会将插件命令安装到/usr/local/nagios/libexec下

 

5.其他设置 

至此nagios基本已经安装完毕,但这时还不能马上启动nagios,需要以下设置。

#chkconfig --add nagios 将nagios添加到服务中

#chkconfig nagios on 设置服务为自启动

#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 
检测nagios的配置是否正确,在后面配置nagios过程中我们为了检测配置的是否正确需要不断执行该命令来检查配置文件。

#service nagios start 启动nagios

需要注意的是,Centos默认打开了selinux并且运行于强制安全模式,这将导致在打开nagios的web界面时会出现Internet Server Error的错误。

#getenforce 查看是否运行于强制模式,结果为1表示是

#setenforce 0 更改selinux运行于宽容模式 

但是这个设置重启后就会失效,如需要重启后保持该设置需要修改/etc/sysconfig/selinux,将其中的SELINUX= enforcing更改为SELINUX= permissive并重启系统。当然你也可以改成disable禁用selinux。

也可以不更改selinux的运行模式,解决办法为:

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

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

 

6.实现MSN报警 
要实现MSN报警需要使用phpmsnclass,这是一个用php实现的msn机器人程序。

#cd ~/downloads 
#wget http://phpmsnclass.googlecode.com/files/phpmsnclass_1.9.7z

下载phpmsnclass,此文件为7zip压缩格式,需要安装7z

#wget http://nchc.dl.sourceforge.net/sourceforge/p7zip/p7zip_4.65_x86_linux_bin.tar.bz2

#tar jxvf p7zip_4.65_x86_linux_bin.tar.bz2

#cd p7zip_4.65

#./install.sh 安装7z

#cd -

#7z e phpmsnclass_1.9.7z 解压文件

phpmsnclass需要php支持,安装php,这里为了方便就直接完成LAMP环境的安装

#yum -y install mysql-server 安装mysql数据库,后面安装cacti需要 
由于安全原因请将mysql设置为只监听在127.0.0.1上,并删除mysql库中默认的除了root@localhost外的所有用户,相关设置请见以前的关于postfix安装中的设置。 

#yum install -y php php-cli php-xcache php-mysql php-mbstring php-gd php-pgsql php-mcrypt php-mhash php-xml php-bcmath 安装php相关模块

msn报警有2种方式,一种是ls息,另外一个是以msn机器人的形式发送,将消息存储在目录内。这里采用第二种。

#cd phpmsnclass

#mkdir /var/spool/msnbot

#mkdir /var/spool/msnbot/log

#mkdir /var/spool/msnbot/spool 

下面把msnbot.php, config.php和msn.class.php拷贝到/var/spool/msnbot/

#cp msnbot.php config.php msn.class.php /var/spool/msnbot 

#chmod 777 /var/spool/msnbot/spool 
#chmod o+t /var/spool/msnbot/spool 
这个机器人的工作原理是如果要发送消息,就调用php生成消息文件到 
/var/spool/msnbot/spool目录中,发送程序检查到该目录有新文件就会模拟msn登陆和发信将信息发送出去。 

#chmod +x /var/spool/msnbot/msnbot.php

#vi config.php 
在配置文件中设置MSN的账号和密码(以后报警通过这个MSN发出)

#cp msnbot.sh /etc/init.d/

#chmod +x msnbot.sh 加上执行权限

#vi msnbot.sh

在启动函数里执行的php文件前要加上php (php后有空格)

#./msnbot.sh start 启动MSN机器人

下面发个消息测试一下

#php msnsendmsg.php netkey530@hotmail.com "this is a test2" 
向netkey530@hotmail.com的MSN账号发送测试信息 
注意需要将netkey530@hotmail.com和config.php里设置的MSN账号相互加为好友

如果成功接收到信息说明配置正确,此步骤到此结束,后面的能让Nagios使用MSN进行报警的功能需要到Nagios里设置了。

如果需要支持离线消息即当你在离线状态下也能接收到机器人的信息,需要使用MSNP15协议,修改相关发信的vi 文件将声明新类的地方new MSN的第一个参数改为MSNP15

 

第二部分 nagios的配置 
nagios目录结构比较清晰,安装后下面一共有bin etc libexec sbin share var几个目录,其中配置文件都存放在etc目录下,bin下存放的是nagios的相关命令,sbin下存放的是通过web方式外部执行的cgi,libexec存放的是所有插件,而var则存放的是log和pid文件等。而实现监控都是依靠执行插件来实现的。 
要实现监控,需要在nagios中定义一个service,在这个service中指定监控对象和监控命令以及报警机制等。Nagios的配置关系可以按照下图来做说明: 
nagios的配置也比较清晰明了,etc目录下默认有objects目录和一些配置文件,其中objects里放的是主配置文件nagios.cfg包含进去的配置文件。在nagios.cfg中既可以指定单独包含一个cfg,也可以指定一个包含目录,即该目录下所有的cfg文件都会包含进来。 
首先我们配置下主配置文件,为了目录的清晰我们自己建立一些目录来存放相关的配置文件,比如建立commands目录存放命令,建立services目录存放服务,建立hosts目录存放主机,在nagios.cfg文件中找到cfg_file的部分,下面是一个示例,实际部署的时候可以按照你自己的情况去设置:

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

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

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

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

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

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

cfg_dir=/usr/local/nagios/etc/services 包含配置目录,目录下所有cfg文件将被包含;下同

cfg_dir=/usr/local/nagios/etc/hosts

cfg_dir=/usr/local/nagios/etc/commands

cfg_dir=/usr/local/nagios/etc/switches

cfg_dir=/usr/local/nagios/etc/routers

 

nagios.cfg其他地方可以暂不调整,该文件中具体参数请参考附件中的配置文件中文注释 
这里先说明一下,监控都是依靠插件去完成的,举个例子说明,如我们要监控60.222.111.83这台服务器的虚拟内存,当达到70%的时候状态为警告,达到90%的时候为严重。这个依靠check_snmp_storage.pl这个插件来完成。

[root@localhost etc]# /usr/local/nagios/libexec/check_snmp_storage.pl -H 60.222.111.83 -C mypublic -2 -m "^Virtual Memory$" -w 70 -c 90

Virtual Memory: 21%used(531MB/2472MB) (<70%) : OK

 

其中-H参数表示主机地址,-C参数表示SNMP团体名称,-2表示使用SNMP v2协议,-w为warning(警告)状态的阈值,-c表示为critical(严重)状态的阈值 
要用nagios实现监控某主机,就是要实现用nagios调用这样的命令即可。 
配置resource.cfg,文件内容:

[root@localhost etc]# cat resource.cfg |grep -v '#'| sed /^$/d 查看resource.cfg配置

$USER1$=/usr/local/nagios/libexec

$USER7$=-C mypublic -2

 

这里其实是定义两个变量$USER1$和$USER7$,因为在后面定义command的时候插件的路径是绝对路径,为了节省输入直接可以用$USER1$代替/usr/local/nagios/libexec。而SNMP插件的命令行中的参数需要设置SNMP相关的信息,为节省输入这里用$USER7$来代替 
-C mypublic -2。大家可对照上面检测60.222.111.83的虚拟内存的例子结合来加以理解。 
下面我们来定义一个command用以监控,仍然以在nagios中实现监控60.222.111.83这台主机的虚拟内存为例说明。为了目录结构的清晰,我们将command的定义都放到commands目录下。在commands下建立一个cfg后缀的文件,针对此示例的command定义内容为

define command{

command_name check_snmp_storage

command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ $USER7$ $ARG1$ -w $ARG2$ -c $ARG3$

}

 

其中的$USER1$和$USER7$即为我们在上面的resource.cfg中定义的两个变量,$HOSTADDRESS$为我们在下面要定义的主机。 
在hosts目录下建立一个cfg后缀的文件来存放主机配置。

define host{

use windows-server 定义使用的模板

host_name web83 定义主机名为web83

alias web server on 111.83 主机别名

address 60.222.111.83 主机IP地址

hostgroups linuxtoneweb 将该主机归到linuxtoneweb这个组,如果要归到多个组里,用逗号分隔组名

}

 

在定义主机的时候我们将83归到了linuxtoneweb这个组,下面来定义这个组名。可以直接在hosts下建立一个定义组名的cfg文件。

define hostgroup{

hostgroup_name linuxtoneweb

alias linuxtone web servers

}

 

这样就定义了一个linuxtoneweb组,将主机归为一个组有两种方法,一种是我们这种在主机的定义中去设置,另外一种是在组的设置中定义members。如下:

define hostgroup{

hostgroup_name linuxtoneweb

alias linuxtone web servers 
members web83 设置该组的成员,需要是在host中定义的主机名,多个成员请用逗号分隔

}

 

在定义主机分组里面我们还可以用hostgroup_members定义下级分组,十分方便。 
OK,上面我们完成了命令、主机的定义,下面我们就要进入nagios监控某个对象的关键设置,nagios的监控都是靠定义一个service来实现,这里我们定义一个service来实现监控83的虚拟内存。在services目录下建立一个cfg文件。

define service {

hostgroup_name linuxtone,linuxtoneweb,database 定义监控对象

name memory 设置服务名

service_description check memory 服务描述

check_period 24x7 监控周期设置

max_check_attempts 4 最大检测尝试次数

normal_check_interval 3 正常检测间隔时间

retry_check_interval 2 重试检测间隔时间

contact_groups admins 报警联系组

notification_interval 10 通知间隔

notification_period 24x7 通知周期设置

notification_options w,u,c,r 定义什么状态时报警

check_command check_snmp_storage!-m "^Virtual Memory$"!70!90

}

 

这样我们完成对一个service的定义,定义监控对象我们这里是定义了3个组,即属于这3个组的所有主机都会检测虚拟内存(注意:组必须在其他文件中事先定义好)。当然你也可以用host_name针对主机作为检测对象(多主机用逗号分隔)。监控周期和报警周期我们设置的都是24x7,这个会在后面去定义。定义报警状态中的w表示warning,u表示unknown,c表示critial,r表示recovery(即恢复后是否发送通知);报警选项一般生产环境下设置w,c,r即可。最后我们看到实现监控的主体部分 
check_command check_snmp_storage!-m "^Virtual Memory$"!70!90 
定义实现这个检测的命令,check_snmp_storage即为我们上面在commands里定义的命令名,

!表示带入的参数,这里有三个!表示带入三个参数到command里,每个参数之间用!分隔,这里表示第一个参数为-m “^Virtual Memory$”,第二个参数为70,第三个参数为90。下面我们回头去看看check_snmp_storage这个command的定义: 
command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ $USER7$ $ARG1$ -w $ARG2$ -c $ARG3$ 
这里的$ARG1$即表示参数1,$ARG2即表示参数2,$ARG3$即表示参数3 
而$HOSTADDRESS$是我们定义的检测对象,它的值就是我们的主机IP地址;$USER1$和$USER7$为在resource.cfg里的定义。下面我们将参数值代入这个command里,最后实现的效果是: 
/usr/local/nagios/libexec/check_snmp_storage.pl –H 60.222.111.83 –C mypublic -2 –m “^Virtual Memory$” –w 70 –c 90 
而这个命令就是我们实现监控83的虚拟内存的命令! 
设置3个参数是为了灵活的针对不同主机的调用,如果你对不同的主机设置的阈值不同,只需要对不同的主机定义不同的service即可,command是可以通用的!而这里的参数1也是为了实现不同的功能而设置的,这个脚本还可以检测物理内存,如果我们把参数1的值设置为”^Phisical Memory$”就可以针对物理内存进行检测!定义command的时候参数的个数的设定是你可以根据需要设置的。只需要在后面service中能将参数值代到command中最终能实现你要检测的命令即可。到此为止你可以感受到nagios的灵活性了吧。

到这里我们基本实现了nagios的监控功能,下面我们继续来看看其他设置。在定义host的时候我们有个主机模板的设置,这个设置的定义在object/template.cfg中定义的,这是一个系统自带的配置文件,关于我们所使用的Windows-Server的模板定义内容为:

# Windows host definition template - This is NOT a real host, just a template!

define host{

name windows-server ; The name of this host template

use generic-host ; Inherit default values from the generic-host template

check_period 24x7 ; By default, Windows servers are monitored round the clock

check_interval 5 ; Actively check the server every 5 minutes

retry_interval 1 ; Schedule host check retries at 1 minute intervals

max_check_attempts 10 ; Check each server 10 times (max)

check_command check-host-alive ; Default command to check if servers are "alive"

notification_period 24x7 ; Send notification out at any time - day or night

notification_interval 30 ; Resend notifications every 30 minutes

notification_options d,r ; Only send notifications for specific host states

contact_groups admins ; Notifications get sent to the admins by default

hostgroups windows-servers ; Host groups that Windows servers should be a member of

register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE

}

 

objects目录下的contact.cfg中定义的是报警联系人。

define contact{

contact_name nagiosadmin ; Short name of user

use generic-contact ; Inherit default values from generic-contact template (defined above)

alias Nagios Admin ; Full name of user

email netkey@linuxtone.com ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******

address1 netkey530@hotmail.com ;这里是个自定义的变量设置,定义了一个MSN地址用以接收MSN报警信息,联系人的自定义变量只能使用address1-address6;通过这个设置你可以实现多种报警方式,如电话,手机短信等,通过在这里设置你的电话,手机号,然后到报警命令定义里定义一个命令即可。

}

 

其使用了generic-contact这个联系模板,关于这个模板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-email,notify-service-by-msn ; send service notifications via email

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

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

}

 

上面我在该配置文件中增加了notify-service-by-msn和notify-service-by-msn的两种报警命令 
而关于报警的周期设置在objects下的timeperiods.cfg中,如我们上面在service里定义的7x24的报警周期设置内容为:

define timeperiod{

timeperiod_name 24x7

alias 24 Hours A Day, 7 Days A Week

sunday 00:00-24:00

monday 00:00-24:00

tuesday 00:00-24:00

wednesday 00:00-24:00

thursday 00:00-24:00

friday 00:00-24:00

saturday 00:00-24:00

}

 

通过这里我们可以灵活设置报警时间以和报警方式结合,如周末和休息时间设置报警为发送短信和邮件,工作时间设置为发送邮件和MSN报警方式。 
下面我们来看关于报警命令的设置,在objects下的command.cfg里定义的为

define command{

command_name notify-host-by-email

command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$

}

# '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$" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$

}

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

define command{

command_name notify-host-by-msn

command_line php /usr/local/nagios/share/msn/msnsendmsg.php $CONTACTADDRESS1$ "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n"

}

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

define command{

command_name notify-service-by-msn

command_line php /usr/local/nagios/share/msn/msnsendmsg.php $CONTACTADDRESS1$ "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$"

}

 

定义了4种报警命令,后面两种msn报警是我添加的;邮件报警是使用系统自带的sendmail来发送邮件的(注意要启动sendmail服务),而msn报警是使用我们上面所配置的msn机器人发送的报警信息。 
至此,整个nagios的监控和报警机制了解完毕。注意我们在配置过程中的任何改动都记得要去通过/usr/local/nagios/bin/nagios –c /usr/local/nagios/etc/nagios.cfg以检查配置文件是否正确,如果正确则可以重启nagios加载新配置(service nagios restart)

 

7:nagios 使用FetionRobot短信/msn在线报警

 

1、安装fetion 官网地址:http://www.it‐adv.net/ 支持库安装: 需要Glibc2.4以上的版本

2、安装过程 下载包地址 LINUX X86/32(REDHAT ES4X32):支持库 最新程序fetion20080522004‐linrh4.tar.gz 其中支持库和安装包内容如下:

# tar zxvf libraryrh4x32.tar.gz libACE‐5.6.5.so libACE_SSL‐5.6.5.so libcrypto.so.0.9.7a libssl.so.0.9.7a # tar zxvf fetion20080522004‐linrh4.tar.gz

我将fetion放在/../nagios/libexec/sms

把支持库复制到/usr/lib/目录下,并作软链接如下:

cp lib*so* /usr/lib/ ln ‐s /usr/lib/libcrypto.so.0.9.7a /usr/lib/libcrypto.so.4 ln ‐s /usr/lib/libssl.so.0.9.7a /usr/lib/libssl.so.4

设定lib库配置文件

#vi /etc/ld.so.conf #增加一条 /usr/lib/ #保存退出后,执行 #ldconfig

2.测试安装

#cd install # ./fetion ‐h

Usage: fetion ‐h

‐h: help

fetion ‐u mobile ‐p pwd [‐b batchfile] [‐EN] [‐d]

fetion ‐u mobile ‐p pwd [‐b batchfile] [‐EN] [‐d]

‐u: Fetion user account(only supports mobile phone No.)

‐p: Account password

‐b: Batch file name

‐d: Debug and write logs to [mobile]‐debug.log

‐EN: English

3、实际测试 测试帐号:13888888888 密码:123456 (如果密码中含有特殊字符,请使用单引号)

如果发送成功。那么fetion安装过程就OK了

 

3.与nagios组合及perl脚本

 

3、与nagios 组合及perl脚本

fetion 组合nagios

1、Fetion以后台方式启动:nohup /usr/local/nagios/libexec/sms/fetion ‐u 13888888888 ‐p 123456 >/dev/null 2>1 &

2、写一个perl脚本

Sms.pl (/../nagios/libexec/sms/sms.pl)

#!/usr/bin/perl ‐w

use strict;

use Data::Dumper;

use LWP::UserAgent;

my $mesg = shift;

$mesg =~ s/\//|/g;

my @number = (接收手机号,接收手机号);

foreach my $number ( @number ) {

#print "send sms to $number \n";

my $send_sms_url = "http://localhost:40000/API/buddy/sms/" . $number . "/" . $mesg . '?rand=0.7394060082921254';

my $request = HTTP::Request‐>new(GET => $send_sms_url);

my $ua = LWP::UserAgent‐>new;

$ua‐>timeout( 5 );

$ua‐>agent("Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; Maxthon 2.0)");

my $response = $ua‐>request($request);

my $content = $response‐>content();

}

 

 

4.nagios配置

 

contacts.cfg添加:

define contact{

contact_name sms‐members

use sms‐mail‐contact

alias Nagios Admin SMS

pager 138888888888

}

define contactgroup{

contactgroup_name admins‐and‐lijs

alias Nagios Administrators

members sms‐members

}

修改报警选项:templates.cfg

define contact{

name generic‐contact

service_notification_period 24x7

host_notification_period 24x7

service_notification_options w,u,c,r,f,s

host_notification_options d,u,r,f,s

service_notification_commands notify‐service‐by‐email; service‐notify‐by‐sms

host_notification_commands notify‐host‐by‐email

register 0

}

define contact{

name sms‐mail‐contact

service_notification_period 24x7

host_notification_period 24x7

service_notification_options w,u,c,r,f,s

host_notification_options d,u,r,f,s

service_notification_commands service‐notify‐by‐sms

host_notification_commands notify‐host‐by‐email

register 0

}

修改调用脚本:commands.cfg

#host‐notify‐by‐sms

define command {

command_name host‐notify‐by‐sms

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

}

#service notify by sms

define command {

command_name service‐notify‐by‐sms

command_line /usr/local/nagios/libexec/sms/sms.pl '$NOTIFICATIONTYPE$ $HOSTNAME$ $SERVICEDESC$ is $SERVICESTATE$ info: $SERVICEOUTPUT$'

}

 

Nagios PNP配置绘图

参考本人以前的文档:http://bbs.linuxtone.org/thread‐1235‐1‐1.html

1、PNP 安装见官网:http://www.pnp4nagios.org/pnp/install

2、zlib gd rrdtool 可以使用yum 安装

 

wget http://packages.sw.be/rpmforge‐release/rpmforge‐release‐0.3.6‐1.el5.rf.i386.rpm

rpm ‐ivh rpmforge‐release‐0.3.6‐1.el5.rf.i386.rpm

yum –y install zlib gd gd‐devel rrdtool

 

3.修改PNP

 

修改PNP配置文件,开启日志 默认路径在:/usr/local/nagios/var/process_perfdata.cfg LOG_FILE = /usr/local/nagios/var/perfdata.log

#

# Loglevel 0=silent 1=normal 2=debug

#

LOG_LEVEL = 0 #本例设置为2 使用debug模式

 

 

4、太阳图标配置文件修改

 

参照官网:http://www.pnp4nagios.org/pnp/webfe

本例3.X有一个小区别就是加太阳图标的时候 是在/usr/local/nagios/etc/objects/templates.cfg server选项及local选项,

添加红色部分

‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐

define service{

name generic‐service

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

process_perf_data 1

‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ define service{ name local‐service use generic‐service

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

process_perf_data 1

 

5.nagios主配置文件修改

 

service_perfdata_command=process‐service‐perfdata

修改command.cfg 配置文件 # 'process‐service‐perfdata' command definition

define command{

command_name process‐service‐perfdata

command_line /usr/bin/printf

"%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$

\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\

t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$

\t$SERVICEPERFDATA$\n" >> /usr/local/nagios/var/service‐perfdata.out

}

define command {

command_name process‐service‐perfdata

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

}

 

重新加载nagios配置文件即可。如有问题注意看权限及日志提示。


第三部分 安装cacti 
Cacti的运行需要AMP(Apache + MySQL + PHP), RRDTool , net-snmp , AMP环境我们在上面已经配置。

 

安装rrdtool,rrdtool不能直接通过yum安装,可以加入Dag RPM Repository以便让yum能找到rrdtool

#wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

#rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

#yum install rrdtool

安装net-snmp

#yum –y install net-snmp net-snmp-utils

安装cacti 
#cd ~/downloads 
#wget http://www.cacti.net/downloads/cacti-0.8.7d.tar.gz 
#tar zxvf cacti-0.8.7d.tar.gz 
#mkdir –p /usr/local/wwwroot 
#cp –rf cacti-0.8.7.d /usr/local/wwwroot/cacti 
下面开始导入数据库,mysql数据库的基本安全配置这里不做说明,请参考以前的postfix邮件安装文档中的mysql设置部分。 
#mysql –u root –p 
mysql>create database cacti; 创建一个数据库供cacti使用 
mysql>use cacti;

Mysql>source /usr/local/cacti/cacti.sql 导入mysql数据库 
Mysql>grant all privileges on cacti.* to cacti@localhost identified by ‘cactipass’; 
添加一个数据库账号cacti 密码为cactipass 用以访问cacti库 
Mysql>flush privileges; 刷新权限信息

配置cacti数据库信息 
#cd cacti 
#vi include/config.php

1. $database_type = "mysql";

2. $database_default = "cacti";

3. $database_hostname = "localhost";

4. $database_username = "cactiuser";

5. $database_password = "cacti";

配置cacti自动运行: 
#crontab -e

1. */5 * * * * /opt/php/bin/php /opt/htdocs/www/cacti/poller.php > /dev/null 2>&1

Spine更有效率可以选择性安装

Spine更有效率可以选择性安装

配置cacti: 
访问cacti的web地址,就会显示安装界面 
http://nagios.c1gstudio.com/cacti/

1.选择"新的安装"

2.配置路径(以系统中实际安装路径为准) 
/usr/local/rrdtool/bin/rrdtool 
/opt/php/bin/php 
/usr/local/bin/snmpwalk 
/usr/local/bin/snmpget 
/usr/local/bin/snmpbulkwalk 
/usr/local/bin/snmpgetnext

3.默认用户名及密码 
admin/admin 
接着输入新的密码

4.进入cacti后台 
设置相应版本及验证码 
settings->General 
RRDTool Utility Version = RRDTool1.3.X 
SNMP Version = 2 
SNMP Community = 你的验证码(privatepass ) 
save

5.查看报表 
点graphs选项5分钟后应该可以看到4个报表. 
memory usage 
load average 
logged in users 
processers

6.创建磁盘监控 
在首页点击Create graphs然后在Data Query栏目中勾上需要监控的分区保存.

以上完成了cacti安装,下面安装插件 
在安装插件前需先安装"插件框架"

安装插件框架: 
1.解压

1. cd /opt/htdocs/www

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

3. chown -R www:website cacti-plugin-arch/

4. chmod -R 0775 cacti-plugin-arch

2.导入数据库结构

1. mysql -u cacti -p cacti<cacti-plugin-arch/pa.sql

3.覆盖文件 
方法一:覆盖

1. cp –rf cacti-plugin-arch/files-0.8.7e/* /opt/htdocs/www/cacti

方法二:打补丁

1. cp cacti-plugin-arch/cacti-plugin-0.8.7e-PA-v2.6.diff /opt/htdocs/www/cacti/

2. cd /opt/htdocs/www/cacti/

3. patch -p1 -N <cacti-plugin-0.8.7e-PA-v2.6.diff

我用方法一

4.配置插件的数据库信息 
#cd /opt/htdocs/www/cacti/ 
#vi include/global.php 
#插件数据库需再配置一下

1. $database_type = "mysql";

2. $database_default = "cacti";

3. $database_hostname = "localhost";

4. $database_username = "cactiuser";

5. $database_password = "cacti";

5.配制插件

1. #我的cacti安装在域下的cacti目录,这里也需修改

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

3.

4. #为后面安装npc增加变量

5. $plugins[] = 'npc';

注:0.8.7g开始上面两变量改放在includes/config.php中,如果参照以前的教程会找不到了囧 
参见Change Log 
http://forums.cacti.net/viewtopic.php?t=38492

Apache设置 
#vi /etc/http/conf.d/cacti.conf 编辑cacti站点的配置文件,文件内容如下:

Alias /cacti "/usr/local/wwwroot/cacti"

<Directory "/usr/local/wwwroot/cacti">

Options FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

Allow from all

</Directory> 
修改cacti的配置文件

#vi /usr/local/wwwroot/cacti/include/config.php 
修改其中的数据库连接信息,设置好数据库主机地址,用户,密码信息。 
至此安装完成,访问http://ip/cacti/install根据提示安装cacti (ip换成你对应的主机ip地址) 
接下来安装cacti的插件管理 
#cd ~/download/

#wget http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7d-PA-v2.4.zip 
#unzip cacti-plugin-0.8.7d-PA-v2.4.zip 
#mysql –u root –p cacti<pa.sql 导入sql到cacti库中 
#cd cd files-0.8.7d/ 
#cp –rf * /usr/local/wwwroot/cacti 复制相关文件到cacti下

 

第四部分 整合cacti和nagios 
整合cacti和nagios是利用了cacti的一个插件nagios for cacti,它的原理是将nagios的数据通过ndo2db导入到mysql数据库(cacti的库中),然后cacti读取数据库信息将nagios的结果展示出来。 
1.安装ndoutils

首先需要安装ndoutils以将nagios的数据能导入到mysql数据库中。 
#yum -y install mysql-devel 安装mysql开发包以编译ndoutils

#wget http://nchc.dl.sourceforge.net/sourceforge/nagios/ndoutils-1.4b7.tar.gz

#tar zxvf ndoutils-1.4b7.tar.gz 
#cd ndoutils

#./configure --enable-mysql --disable-pgsql --with-mysql-lib=/usr/lib/mysql

#make

#cp config/ndomod.cfg /usr/local/nagios/etc

修改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.o config_file=/usr/local/nagios/etc/ndomod.cfg

process_performance_data=1

添加的内容至此结束 

#cd src

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

#cp src/ndo2db-3x /usr/local/nagios/bin/ndo2db

#cp config/ndo2db.cfg /usr/local/nagios/etc 
修改配置文件ndocmd.cfg和ndo2db.cfg,这里我的配置文件内容为: 
[root@localhost downloads]# cat /usr/local/nagios/etc/ndomod.cfg |grep -v '^#'|sed /^$/d

instance_name=default

output_type=tcpsocket

output=127.0.0.1

tcp_port=5668

output_buffer_items=5000

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

file_rotation_interval=14400

file_rotation_timeout=60

reconnect_interval=15

reconnect_warning_interval=15

data_processing_options=-1

config_output_options=2

[root@localhost downloads]# cat /usr/local/nagios/etc/ndo2db.cfg |grep -v '^#'|sed /^$/d

ndo2db_user=nagios

ndo2db_group=nagios

socket_type=tcp

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

tcp_port=5668

db_servertype=mysql

db_host=127.0.0.1

db_port=3306

db_name=cacti

db_prefix=npc_

db_user=cacti

db_pass=cacti2008

max_timedevents_age=1440

max_systemcommands_age=10080

max_servicechecks_age=10080

max_hostchecks_age=10080

max_eventhandlers_age=44640

debug_level=1

debug_verbosity=1

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

max_debug_file_size=1000000 
#/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg 启动ndo2db

 

2.安装php-json 
npc展示部分用到json,需要在php中安装php-json的支持,centos 5下的php 版本默认是5.1.6 不带json支持,无法简单地通过yum install php5-json方式来安装。

#cd ~/downloads 
#wget http://www.aurore.net/projects/php-json/php-json-ext-1.2.0.tar.bz2

#tar xvjf php-json-ext-1.2.0.tar.bz2

#cd

 

#phpize 编译前初始化php环境(注:如果要使用phpize首先安装php-devel)

#./configure

#make

#make install

#vi /etc/php.d/json.ini 
extension=php_json.so

#/usr/sbin/apache2ctl graceful 重启apache

为了验证是否成功可使用phpinfo查看是否已支持json

 

3.安装npc 

#cd ~/downloads 
#wgethttp://www.assembla.com/spaces/npc/documents/aUjAwmdW8r3BuPab7jnrAJ/download?filename=npc-2.0.0b.166.tar.gz 
#mv npc /usr/local/wwwroot/cacti/plugins/ 
启用cacti的插件功能,以admin用户登陆cacti,在console中的user management里对admin的用户权限进行编辑,勾选上Plugin Management,然后到插件管理中心安装并启用NPC即可。

 

至此完成nagios和cacti的整合完毕!

 

===============================

http://blog.chinaunix.net/uid-21089721-id-2945637.html

Cacti中文版安装配置

 

 

Cacti是一款优秀的开源监控软件,使用php实现,它的主要特点是使用snmp服务获取数据,然后用rrdtool存储和更新数据,当用户查看数据的时候,rrdtool生成图表呈现给用户。mysql数据库用于存储变量并进行调用。mysql数据库并不存储snmp捕获到的数据,snmp捕获到的数据,存在于rrdtool生成的rrd文件中,这些文件位于cacti目录下的rra目录中。

本文主要介绍cacti中文版的安装,配置,cacti插件的安装,配置。英文版的安装跟中文版大同小异,但是中文版会麻烦点,所以就以中文版为例。

系统:Centos5.6 x386

软件:cacti-0.8.7e

 本文档提供pdf版本下载,祥见文章尾部。

 

一、    准备软件的安装

由于cacti使用php来实现,通过WEB来管理,使用snmp来捕获数据,使用rrdtool来生成图表,使用mysql来存储变量,因此需要先安装这些软件,直接使用yum进行安装即可,共需安装以下rpm包:

httpd/mysql-server/php/php-mysql/rrdtool/gd/net-snmp/php-snmp/net-snmp-utils/net-snmp-devel/mysql-devel/openssl-devel

各个rpm包的作用为:

httpd  WEB服务器apache

mysql-server   数据库mysql

php   cacti使用php来实现

php-mysql  php支持mysql

rrdtool   用来生成cacti图像

gd      rrdtool绘制图像需要的图形库

php-snmp   php支持snmp

net-snmp-utils   一些snmp的扩展命令,如:snmpwalksnmpget等,cacti需要

net-snmp-devel/mysql-devel/openssl-devel   cactid/spine需要

安装rpm包:

#yum httpd mysql-server php php-mysql gd net-snmp php-snmp net-snmp-utils net-snmp-devel mysql-devel openssl-devel

由于centos的标准组件中是不带rrdtool的,因此我们需要添加一个dagyum源,以安装rrdtool

修改/etc/yum.repos.d/CentOS-Base.repo

#vi /etc/yum.repos.d/CentOS-Base.repo

在其末尾追加

[dag]

name=Dag RPM Repository for Red Hat Enterprise Linux

baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag

gpgcheck=1

gpgkey=http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

enabled=1

更新yum

#yum clean all

#yum list

现在就可以安装rrdtool

#yum install rrdtool

设置开机自启动

#chkconfig httpd on

#chkconfig mysqld on

#chkconfig snmpd on

二、    MySQL数据设置

由于cacti依靠mysql来存储必要的变量,我们有必要对MySQL做些设置。

启动并初始化mysql数据库

#service mysqld start

root用户设置密码(linuxpad为例),并更改登录权限,默认密码为空

#mysql –u root –p      回车后输入密码()

mysql>use mysql;

mysql>update user set password=password(‘linuxpad’) where user=’root’;              

mysql>grant all privileges on *.* to root@localhost identified by ‘linuxpad’ with grant option;

mysql>flush privileges;

添加cacti库和cacti用户,并为其设置权限

mysql>create database cacti default character set utf8;    //数据库字符集设置utf8,否则乱码

mysql>grant all privileges on cacti.* to cacti@localhost identified by ‘linuxpad’ with grant option;

mysql>flush privileges;

三、    安装Cacti

下载cacti-0.8.7e-cn-utf8.tar.gz,地址为http://blogimg.chinaunix.net/blog/upfile2/090815172648.gz(这个链接是tar.gz格式的,请下载后更改文件格式),假设下载目录为/opt/soft,下面相同

#cd /opt/soft

#tar zxvf 090815172648.tar.gz

#mv cacti-0.8.7e-cn-utf8 /var/www/cacti

修改配置文件

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

修改内容如下

$database_type = "mysql";

$database_default = "cacti";

$database_hostname = "localhost";

$database_username = "cacti";

$database_password = "linuxpad";

关于cacti添加用户,网上常见的做法是添加一个cacti的用户,并更改rralog目录属主。经过本人测试这里并不需要添加cacti用户并更改rralog的属主,直接使用root即可。原因是因为官方的安装文档上使用的是FreeBSD,在计划任务那步使用的是:

*/5 * * * * cacti php /var/www/cacti/poller.php &>/dev/null,使用用户cacti来执行任务。

但是centos并不是识别这个cacti参数,因此也就无需使用cacti来执行任务,我们直接使用root来执行任务就OK了,于是不用更改目录权限,crontab内容为

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

还有另外一种的解决方案,就是添加一个cacti用户,更改rralog目录属主为cacti,然后在cacti用户环境下设置crontab,内容为

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

这样就能实现crontab计划是由cacti用户来执行的了。

创建并编辑apachecacti配置文件

#vi /etc/httpd/conf.d/cacti.conf

内容如下:

Alias /cacti /var/www/cacti

<Directory /var/www/cacti>

DirectoryIndex index.php

AllowOverride all

order deny,allow

allow from all

php_flag magic_quotes_gpc on

php_flag track_vars on

</Directory>

导入数据库

#mysql –u root –p cacti < /var/www/cacti/cacti.sql

启动服务,然后访问http://ip/cacti开始安装cacti

#service mysqld start

#service httpd start

#service snmpd start

直接下一步,选择全新安装,来到下面的一个界面,如图1

请确认所有路径都已找到,并选择SNMP应用程序版本为5.xRRDTool版本为1.3.x

完成之后来到登录页面,默认用户名admin,密码admin,登录之后会提示你强制更改密码。

设置计划任务

#crontab –e

追加以下内容

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

添加中文字体支持,否则Cacti图像内会没有任何内容。CentOS下直接yum安装中文支持

#yum install fonts-chinese

打开Cacti,控制面板->配置->设置->路径:

RRDTool默认字体路径设为/usr/share/fonts/chinese/TrueType/ukai.ttf

配置无误,会显示文件已找到。

四、    配置本机snmp

编辑snmp配置文件/etc/snmp/snmp.conf

修改:

com2sec notConfigUser  default       public

改为:

com2sec notConfigUser  127.0.0.1       public

修改:

access  notConfigGroup ""      any       noauth    exact  systemview none none

改为:

access  notConfigGroup ""      any       noauth    exact  all none none

去掉这句的注释

#view all    included  .1                               80

重启snmp服务并测试

#service snmpd restart

# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex 

IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1

IP-MIB::ipAdEntIfIndex.xxx.xxx.xxx.xxx = INTEGER: 2

IP-MIB::ipAdEntIfIndex.xxx.xxx.xxx.xxx = INTEGER: 3

显示以上信息,则snmp配置成功,xxx.xxx.xxx.xxx会根据你本机的IP信息配置而不同。

 

 

1

如果配置正确,隔几分钟,我们的cacti就会有数据了,如图2,你也可以手动执行以下命令手动生成rrd图像

#/usr/bin/php /var/www/cacti/poller.php &>/dev/null

 

 

2

五、    安装Spine

由于默认cmd.php来轮询数据,速度会很慢,特别是在监控节点比较多的情况下,cmd.php就更显不足了,因此我们采用Spine来轮询数据。cacti-spine是一个由C语言开发的,用于替代cmd.php的快速获取速度的引擎。

下载地址:http://www.cacti.net/downloads/spine/cacti-spine-0.8.7e.tar.gz

安装spine之前请确保它所依赖的包net-snmp-develmysql-developenssl-devel都已安装完毕。

以下是安装步骤

#cd /opt/soft

#wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.7e.tar.gz

#tar zxvf cacti-spine-0.8.7e.tar.gz

#cd cacti-spine-0.8.7e

#./configure

#make && make install

编辑spine配置文件

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

修改内容如下:

DB_Host         localhost

DB_Database     cacti

DB_User         cacti

DB_Pass         linuxpad

DB_Port         3306

spine启动并设置开机自启动

#/usr/local/spine/bin/spine

#echo /usr/local/spine/bin/spine >>/etc/rc.d/rc.local

Cacti设置:

Cacti控制面板->配置->设置

路径:将Spine轮询器路径设置为/usr/local/spine/bin/spine

轮询器:轮询器类型选择Spine

到此为止,我们已经成功安装Spine轮询器并使用。

六、    Cacti插件安装之Cacti-plugin 

对于中文版,我们需要下载中文版的更新文件:http://blogimg.chinaunix.net/blog/upfile2/090818213852.gz,下载后需更名cacti-plugin-0.8.7d-PA-v2.4-cn-utf8.diff.gz,更新前请备份cacti目录及mysql库,以便更新失败后的还原。

Cacti-Plugin安装过程如下:

#cd /opt/soft

#wget http://blogimg.chinaunix.net/blog/upfile2/090818213852.gz

#mv 090818213852.gz cacti-plugin-0.8.7d-PA-v2.4-cn-utf8.diff.gz

# gunzip cacti-plugin-0.8.7d-PA-v2.4-cn-utf8.diff.gz

# mv cacti-plugin-0.8.7d-PA-v2.4-cn-utf8.diff /var/www/cacti/

# patch -p1 -N <cacti-plugin-0.8.7d-PA-v2.4-cn-utf8.diff

#mysql –u cacti –p cacti < pa.sql

如果你的cacti访问时候是使用http://ip/cacti,你需要修改/var/www/cacti/include/global.php

修改如下:

$database_type = "mysql";

$database_default = "cacti";

$database_hostname = "localhost";

$database_username = "cacti";

$database_password = "linuxpad";

$database_port = "3306";

 

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

 

配置Cacti

Cacti控制面板->工具->用户管理->admin->区域权限,选择插件管理

然后我们就能够在控制面板的配置下面看到多出一个插件管理的选项

 

七、    Cacti插件安装之Monitor

Cacti下面的插件非常多,我们拿Monitor为例,来讲述Cacti插件的安装。

MonitorCacti下面一个监控节点存活性的插件,可以监控各种网络设备,主机的存活性。

Monitor下载地址:http://cactiusers.org/downloads/monitor.tar.gz

Monitor安装过程如下(一步复制文件,一步导入sql文件)

#cd /opt/soft

#wget http://cactiusers.org/downloads/monitor.tar.gz

#tar zxvf monitor.tar.gz

# mv monitor /var/www/cacti/plugins            #复制插件到plugins

# cd /var/www/cacti/plugins/monitor/

# mysql -u cacti -p cacti < monitor.sql          #导入monitor.sql数据

配置global.php

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

$plugins = array();后添加:

$plugins[] = 'monitor';

刷新Cacti控制面板,我们会在设置下面找到一个新的选项卡”Misc”,同时左上方会多出一个新的选项卡”Monitor”,如图3Monitor监控节点图像如图4

 

 

3

 

 

4

其他插件的安装基本类似,可参考Monitor来安装。

 

 

我会在稍后的几篇文章内讲述Cacti的高级应用及CactiNagios的整合。

 

 

 

 

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

http://www.cnblogs.com/511mr/archive/2011/12/16/2289981.html

实战CentOS 6.0+Nagios中文版+PNP+Nagios Web管理工具nagiosQL中文版

 

Nagios网上的教程百度一下一大把,发现有些教程讲法有点出入,估计有些都是拷贝乱贴乱飞,按有些说法去做,根本就做不下去,今天我亲自实践,现场抓图让你看得清楚看得明白,以及中间遇到什么问题,怎么解决,都会分享给大家,抓图再写出来有点辛苦,关键能学到东西一切都是值得滴,Follow me~!

下载centOS 6.0然后安装好系统,最好用vmware来做最好.

CentOS 6.0最新版国内下载地址:http://mirrors.163.com/centos/6.0/isos/i386/

自行装好系统以后现在开始装备安装前的环境准备
我把命令贴出来,为了方便大家操作你只要跟着我把命令拷贝和粘贴即可,省去敲打命令的麻烦也避免失误出错(小技巧提醒:装好centOS以后进入x-windows里面装个vmware tools就可以实现物理机和虚拟机之间的拷贝和粘贴,方法很简单这里就不说了)
yum -y install httpd gettext mysql mysql-server mysql-devel php php-mysql php-pear

image

yum install php-mysql mysql perl mysql-server perl-DBI perl-DBD-MySQL httpd gcc glibc glibc-common gd gd-devel php

image

在线下载nagios程序和插件

wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz (现在最新版本的插件) 
wget http://sourceforge.net/projects/nagios-cn/files/sourcecode/zh_CN%203.2.3/nagios-cn-3.2.3.tar.bz2/download(最新版为3.3.1,装上去觉得界面变得不好看,顺便就找了个中文版的)

image

image

[root@centos nagios]# ls

nagios-cn-3.2.3.tar.bz2  nagios-plugins-1.4.15.tar.gz

 

用户和组的准备

[root@centos nagios]# useradd nagios

[root@centos nagios]# passwd nagios

changing password for user nagios.

New password:

BAD PASSWORD:it is based on a dictionary word

BAD PASSWORD:is too simple

Retype new password:

passwd:all authentication tokens updated successfully.

 

image

开始安装主程序

image

./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-command-group=nagcmd

image

完成以后发现执行make all命令的时候出现以下错误

image

貌似CentOS下默认系统没有安装编译器,安装一下:

yum -y install gcc automake autoconf libtool make

image

继续做make all操作,发现最后报错了,

image

先执行make clean操作,然后再执行 ./configure && make all 操作通过(问题分享)接着再执行以下命令即可,没有出现任何状况.

image

image

image

image

image

接下来安装插件

image

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

image

image

添加访问页面用户nagiosadmin及密码,这里要记住此密码不要忘记了.

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

image

接下来启动相关服务

image

image

检查配置文件是否正确

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

image

[经验分享:由于这一串检查的命令很长,应用率也比较高,这里我们可以自定义一个命令来代替这一长串的命令

编辑.bashrc这个文件

image

在里面用alias 来自定义一个命令来代替,这里我用check

image

用source命令在当前bash环境下读取并执行bashrc中的命令

image

这样我们自定义的命令就生效了,以后只要输入check就可以检查nagios配置文件是否存在错误了,简单方便.]

发现没有警告和错误就表示通过了

image

现在就可以用http://serverip/nagios 方式访问nagios web访问控制台了.

开了防火墙记得要开放80端口,要不然连接不到,或者直接关闭防火墙用命令service iptables stop关闭即可.

image

问题分享:进入页面的时候点主机或其它选项的时候报此错误,后面百度一下原来是开启了selinux强制访问控制安全模块所致

image

注意:如果你开启了selinux 需要配置如下二步: 
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/ 
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/

image

这样正宗的中文版出来了,总算迈出了成功的一小步,耐心坚持让我们继续吧~~!

image

[经验分享:我这里用虚拟机做的,记得系统和网络相关参数配置好以后做一个系统的快照,配到这里nagios安装成功以后我们再做一个快照,以免后面配乱出问题的时候我们可以返回到这里重新再配置,方便快捷,记住做快照的时候先把虚拟机关闭以后再做,要不然快照出来的文件大得吓人,而关闭以后做快照文件才几百KB.]

SNAGHTMLbffa284

ok下面我们接着来

[nrpe_plugins指标采集程序主要是用来分析nrpe客户端的plugin脚本采集性能指标数据。目前实现的有cpu、memory、disk、buffer、singleprocess、oracle、sybase等方面的性能指标的分析,这个插件需要分别安装在主控端和被控端上,这个插件需要openssl的支持,没有就直接在线安装一下(yum install openssl-devel)所以还需在nagios主机和被控端安装,感觉挺麻烦,没办法它需要咱们就跟着做哈.]

先把nrpe下载下来先.

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz

image

解压文件

image

编译安装

image

image

完成以后没有出错就可以看到以下生成的文件了

image

二:配置PNP

[PNP是一个基于php和perl,用rrdtool将nagios采集的数据绘制图表的工具,所以安装pnp之前必须先安装php perl  and rrdtool这里用yum直接来安装rrdtool,单独下载安装有很多依存关系,挺麻烦.]

image

我这里找到最新的版本是0.6.15

wget http://sourceforge.net/projects/pnp4nagios/files/PNP-0.6/pnp4nagios-0.6.15.tar.gz/download

image

image

image

编译的时候报错了.

image

yum install perl-Time-HiRes

image

继续编译发现有个perl modules没有发现,好像提示用来加速什么的,暂时不管它了

image

image

根据提示需要继续

image

image

image

image

然后把相关后缀带sample文件变更成无sample后缀

image

配置Nagios来启用PNP

image

enable_environment_macros=1默认是开启了的 
 

image

pnp4nagios有很多种工作模式,这里我们选用同步模式,想选其它模式可以看说明都有详细配置教程(不同模式配置不同

image

这里我们按说明的设定方法来做

image

[这里先把pnp4nagios执行数据收集的文件拷贝到nagios的libexec下,方便统一命令的执行路径.]
cp /usr/local/pnp4nagios/libexec/process_perfdata.pl /usr/local/nagios/libexec/

image

然后在commands.cfg里面加入如下(这里是同步模式设定方法

image

#process-host-perfdata' command definition 
define command{ 
        command_name    process-host-perfdata 
        command_line    $USER1$/process_perfdata.pl -d HOSTPERFDATA 
        }

#process-service-perfdata' command definition 
define command{ 
        command_name    process-service-perfdata 
        command_line    $USER1$/process_perfdata.pl 
        } 
 

image

然后添加小太阳模版,镶嵌在nagios页面上
[这里有两种查看图的方法,第一种方法是你当太阳的图标的时候会在新窗口中打开图形查看,第二种方法是你只需要把鼠标移动到太阳图标上面就会自动弹出图形出来,以下两种方法你可以根据自己喜好选其中一种即可]
第一种方法在templates.cfg里面加入如下

image

define host { 
   name       host-pnp 
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_ 
   register   0 
}

define service { 
   name       srv-pnp 
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$ 
   register   0 

 

image

第二种方法按照说明加入如下

image

拷贝status-header.ssi到/usr/local/nagios/share/ssi/目录下面来(这一步很重要,要不然移动到太阳标记上出不来图

image

define host { 
   name       host-pnp 
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_ 
   register   0 
}

define service { 
   name       srv-pnp 
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$ 
   register   0 

第二种方法最终效果图

image

为目标主机图标旁边添加一个小太阳标记

image

image

为相关服务添加一个小太阳标记

image

image

先做一下pnp4nagios环境测试,发现php-gd模块无效,用命令yum install php-gd安装成功以后还是不行,后来经老男孩指点用yum install php* -y安装然后重启系统成功通过,

image

image

image

按要求重命名install.php

image

做好相关配置以后请用命令重启一下nagios的服务

image

ok,到此总算配置好了PNP,配置了这么多有点累了,但我们还要继续,配置本章最后一个Nagios WEB管理工具叫NagiosQL(注:还有同样一个Nagios WEB管理工具叫Nconf)

wget http://sourceforge.net/projects/nagiosql/files/nagiosql/NagiosQL%203.1.1/nagiosql_311.tar.gz/download

image

NagiosQL是一个WEB管理工具,只要把其放到下Apache即可。因为这里它要和Nagios整合到一起,为了方便管理,把其放在Nagios目录下

image

image

建立nagiosQL导出nagios配置文件的目录,并修改权限

建目录和改权限
mkdir -p /etc/nagiosql/{hosts,services,backup/{,hosts,services},import}
chown -R apache:nagios /etc/nagiosql/
chmod -R 755 /etc/nagiosql
chmod 777 /usr/local/nagios/nagiosql/config

image

Nagios相关文件权限的设定
chown nagios:apache /usr/local/nagios/etc
chown nagios:apache /usr/local/nagios/etc/{nagios.cfg,cgi.cfg}
chown nagios:apache /usr/local/nagios/etc/*
chmod 664 /usr/local/nagios/etc/{nagios.cfg,cgi.cfg}
chmod 775 /usr/local/nagios/etc

image

设定nagios二进制文件的权限,以便其能够通过Web程序执行
chown nagios:apache /usr/local/nagios/bin/nagios
chmod 750 /usr/local/nagios/bin/nagios
chown -R apache.nagios /usr/local/nagios/var/spool/
chown nagios:apache /usr/local/nagios/var/rw/nagios.cmd
chmod 660 /usr/local/nagios/var/rw/nagios.cmd

image

为apache添加nagiosQL虚拟目录

image

Alias /nagiosQL "/usr/local/nagios/nagiosql" 
<Directory "/usr/local/nagios/nagiosql"> 
# SSLRequireSSL 
Options None 
AllowOverride None 
Order allow,deny 
Allow from all 
</Directory>

image

重新加载httpd服务和启动mysqld服务

image

建立nagiosql安装文件
touch /usr/local/nagios/nagiosql/install/ENABLE_INSTALLER

image

访问http://ip/nagiosQL进行安装

问题分享:我在访问的时候提示没有权限访问,搞了半天原来是SElinux惹的祸,修改SELinux的实时运行模式,setenforce 0 (设置SELinux 成为permissive模式)这个只是临时解决方法,优点是不需重启系统生效,但如果要彻底禁用SELinux 需要在/etc/sysconfig/selinux中设置参数selinux=0

image

选取中文然后点开始安装按钮

image

测试所需环境通过,直接按下一步即可

image

删除安装目录,这里使用改权限:chmod 000 /usr/local/nagios/nagiosql/install

image

image

到这里安装步骤总算结束了,下面我们还需要进行相关配置工作.

image

管理-域-localhost---点“修改”

image

按如图所示更改相应的路径即可

image

工具-导入数据 右边会列出一些配置文件,选择导入即可。
导入只是把配置文件内容导入到Mysql数据库,而使用其配置文件时,是一个个cfg文件,所以下面要进行写入过程

image

工具-nagios控制-写入检测数据-写入其他数据

image

检查配置文件成功

image

image

写入之后就可以看到相应的cfg文件了,查看写入是否成功,由下面的输出可以看出写入是成功滴.

image

修改nagios的配置文件,将原有以cfg_file开头项全部注释掉,加入上面新写入的配置文件

image

注释掉

image

加入新的配置文件路径
cfg_dir=/etc/nagiosql/hosts/ 
cfg_dir=/etc/nagiosql/services/ 
cfg_file=/etc/nagiosql/commands.cfg 
cfg_file=/etc/nagiosql/contactgroups.cfg 
cfg_file=/etc/nagiosql/contacts.cfg 
cfg_file=/etc/nagiosql/contacttemplates.cfg 
cfg_file=/etc/nagiosql/hostdependencies.cfg 
cfg_file=/etc/nagiosql/hostescalations.cfg 
cfg_file=/etc/nagiosql/hostextinfo.cfg 
cfg_file=/etc/nagiosql/hostgroups.cfg 
cfg_file=/etc/nagiosql/hosttemplates.cfg 
cfg_file=/etc/nagiosql/servicedependencies.cfg 
cfg_file=/etc/nagiosql/serviceescalations.cfg 
cfg_file=/etc/nagiosql/serviceextinfo.cfg 
cfg_file=/etc/nagiosql/servicegroups.cfg
cfg_file=/etc/nagiosql/servicetemplates.cfg 
cfg_file=/etc/nagiosql/timeperiods.cfg

image

检查nagios的配置文件是否有问题,然后生重启nagios服务,至此整个搭建过程终于完成了,下一节将讲解重头戏,怎么用nagiosQL添加需要监控的主机以及启用nagios报警机制,待续~~!

 

###############################

http://blog.onovps.com/tag/centos%E5%AE%89%E8%A3%85nagios/

安装LAMP及编译环境:

1
2
3
4
5
6
7
yum -y install httpd httpd-devel mysql mysql-server mysql-devel php php-devel php-common php-gd \
php-mysql php-mbstring php-mcrypt php-xml php-snmp gcc make automake autoconf
/etc/init.d/httpd start
/etc/init.d/mysqld start
/usr/bin/mysqladmin -u root password "password"
chkconfig httpd on
chkconfig mysqld on


安装Nagios:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
useradd nagios
groupadd nagcmd
usermod -G nagcmd nagios
usermod -G nagcmd apache
cd /usr/local/src/
#安装主程序
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.1.tar.gz
tar zxvf nagios-3.4.1.tar.gz 
cd nagios
./configure --with-command-group=nagcmd --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios 
make all
make install
#安装主程序
make install-init
#安装init管理脚本
make install-config
#安装示例配置文件
make install-commandmode
#配置目录权限
make install-webconf
#安装Apache配置文件
#make install-exfoliation
#安装简洁白色主题,此为默认
make install-classicui
安装经典黑色主题
cd ../
#安装插件
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
tar zxvf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins
./configure --with-nagios-user=nagios --with-nagios-group=nagios --prefix=/usr/local/nagios
make
make install
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
#生成nagiosadmin验证密码,用于web界面验证。
/etc/init.d/httpd restart
/etc/init.d/nagios start
chkconfig nagios on
setsebool -P httpd_disable_trans 1
#关闭selinux对httpd的防护,不然会出现权限问题


安装完成,访问http://www.onovps.com/nagios即可。
nagios管理界面.png

 

===============================

http://koda.iteye.com/blog/1064921

下载 
Nagios: http://www.nagios.org/download 
Nrpe: http://nagios.sourceforge.net/docs/3_0/addons.html#nrpe 

Nagios分为监控端和被监控端,一般来说位于不同的主机上。 
一. 基础组件安装 
在被监控端安装: 
- Nagios Core 
- Nagios Plugins 
- Nrpe 
将nagios和nrpe以daemon方式启动 

在监控端安装 
- Nagios Core 
- Nagios Plugins 
- Nrpe 
运行web界面。 

安装配置Core,Plugin方法见: 
Fedora Quickstart:  http://nagios.sourceforge.net/docs/3_0/quickstart-fedora.html 

二. 安装配置nrpe如下 
转: http://blogold.chinaunix.net/u/28387/showart_371655.html 
NRPE是nagios的一个扩展,它被用于被监控的服务器上,向nagios监控平台提供该服务器的一些本地的情况。例如,cpu负载、内存使用、硬盘使用等等。NRPE可以称为nagios的for linux 客户端。 

为什么要使用这个客户端呢?在nagios的插件中,有一个名为“check_ssh”的插件,它也可以实现对于远程服务器中local信息的监控。但是,相对NRPE,“check_ssh”占用的系统资源就略多了一点。监控少量的服务时可能不会察觉,但是如果监控对象比较多,那么差距就非常明显了。但是还有一点要说明,虽然NRPE也是使用SSL安全通道,但是“check_ssh”的安全性要高于NRPE,安全性总是和易用性成反比的。 -_-|| 

首先,需要在nagios监控平台服务器上安装NRPE,安装很简单,到官方网站下载最新的nrpe包,本例中使用的是nrpe-2.8.1.tar.gz。 

I. nrpe客户端安装配置 
Linux代码  收藏代码
  1. tar xzf nrpe-2.12.tar.gz  
  2. cd nrpe-2.12  
  3. ./configure  
  4. make all  
  5. make install-plugin  

如果nagios安装在指定目录,那么nrpe在configure时说明prefix 
如果安装成功,就可以在/.../nagios/libexec 目录中找到 "check_nrpe"这个插件(客户服务端都要安装)。 

1. 在$nagios_install_dir/etc/nagios.cfg中添加一行: 
cfg_file=/usr/local/nagios/etc/objects/my_server.cfg 

2. 定义一个可以在监控平台使用的命令 
在$nagios_install_dir/etc/objects/commands.cfg中,其内容如下: 
Commands.cfg代码  收藏代码
  1. define command{  
  2. command_name check_nrpe  
  3. command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }  


3.例:监控cpu负载 
在$nagios_install_dir/etc/objects/创建my_server.cfg,内容如下: 
Cfg代码  收藏代码
  1. define host{  
  2.         use                     linux-server            ; Name of host template to use  
  3.                                                         ; This host definition will inherit all variables that are defined  
  4.                                                         ; in (or inherited by) the linux-server host template definition.  
  5.         host_name               monitor  
  6.         alias                   monitor  
  7.         address               192.168.2.100  
  8.         }  
  9.   
  10. define service{  
  11.        use                            local-service         ; Name of service template to use  
  12.        host_name                      monitor ;192.168.2.200  
  13.        service_description            XCPU LOAD  
  14.        check_command check_nrpe!check_load  
  15.        notifications_enabled            0  
  16. }  


II. nrpe服务端安装配置 
1. 安装NRPE: 
Linux代码  收藏代码
  1. tar xzf nrpe-2.12.tar.gz  
  2. cd nrpe-2.8.1  
  3. ./configure  
  4. make all  
  5. make install-plugin  
  6. make install-daemon  
  7. make install-daemon-config   

安装好了,可以到/usr/local/nagios/下面检查一下,应该生成了4个目录:bin、etc、libexec、share。 

2. 配置NRPE: 
我们要配置一下,目的是让NRPE可以以守护进程的形式监听5666端口,为特定地址的nagios平台提供服务。在官方的NRPE文档中,详细说明了如何将NRPE嵌入xinetd服务中,我在这里就不啰嗦了。有些情况,我们的服务器上没有xinetd或者inetd这样的服务,那如何办呢?我在这里介绍一种更加通用的方法。 

首先,需要修改/usr/local/nagios/etc/nrpe.cfg。 
找到“allowed_hosts=127.0.0.1”将其改为: 
Cfg代码  收藏代码
  1. allowed_hosts=127.0.0.1,$Nagios监控平台的地址或域名  


这个配置的作用是声明合法的nrpe服务对象,没有在这里声明的地址是无法从本机的NRPE获得服务的。“$Nagios监控平台的地址或域名”可以是ip地址,也可以是域名。在我环境中,nagios监控平台没有一个固定的公网ip,所以其他在公网上的服务器如果安装了NRPE的话,就只能通过动态域名来辨别监控平台的地址。 

3. 启动NRPE守护进程 
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d 

此命令生成的日志会在系统的日志(/var/log/message)中。如果没有出错,就基本搞定了。[b]3. 检查NRPE是否启动/b] 
在本机上执行 
Linux代码  收藏代码
  1. /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1  


或者在nagios监控平台服务器上: 
Linux代码  收藏代码
  1. /usr/local/nagios/libexec/check_nrpe -H $目标主机地址  


正常的返回值为被监控服务器上安装的NRPE的版本信息: 
NRPE v2.12 

如果看到这些,恭喜你,你的NRPE安装成功了。 

后 记 

那么,通过NRPE,可以监控到哪些信息呢? 只要在被监控服务器上有的插件(/usr/local/nagios/libexec中的所有插件),都可以使用。也就是说,你想监控什么,只要有对应的插件,就可以实现。 

例如,我希望监控一台远程服务器上的cpu负载。在远程主机的插件中有“check_load”,那么,在nrpe.conf中定义一个cpu负载的监控: 
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 
这个配置就声明了一个命令:“check_load”,也就是上述中红色字check_load的真身所在了。 

 

 

===============================

http://hoodlum.blog.51cto.com/4075497/743722

半小时玩转nagios
2011-12-16 18:35:04
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://hoodlum.blog.51cto.com/4075497/743722

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
创建时间:2011-12-16
email: old_hoodlum@163.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Nagios用了很久了,虽然也研究过另一款锐利的监控工具zabbix,但是感觉不如nagios顺手,翻过头来写一篇安装及使用文档分享一下
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一、准备工作:
 
1、更换Yum源163
cd /etc/yum.repos.d/
mv CentOS-Base.repo{,.bak}
wget http://mirrors.163.com/.help/CentOS-Base-163.repo
yum makecache
 
2、LAMP环境优化编译安装,都加了简单优化选项,可以直接当LAMP环境的网站使用
apache安装
cd /usr/local/src
wget http://mirrors.sohu.com/apache/httpd-2.2.21.tar.bz2
yum -y install openssl openssl-devel
tar jxvf httpd-2.2.21.tar.bz2
cd httpd-2.2.21
./configure --prefix=/usr/local/apache2 --enable-so --enable-ssl --enable-rewrite --enable-deflate --enable-expires
make && make install
cd ..
 
 
为了方便以后安装其它需要sql的监控服务,装上mysql
wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.57.tar.gz
groupadd mysql
useradd mysql -g mysql -s /sbin/nologin
tar zxvf mysql-5.1.57.tar.gz 
yum -y install ncurses ncurses-devel
./configure --prefix=/usr/local/mysql --localstatedir=/var/lib/mysql --sysconfdir=/etc --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-unix-socket-path=/tmp/mysql.sock --enable-assembler --without-debug  --with-plugins=utf8,gbk --with-plugins=innobase
make && make install
cp my-small.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysql.server
chmod 755 /etc/init.d/mysql.server 
 
vi /etc/init.d/mysql.server
     46行 basedir=/usr/local/mysql
     47行 datadir=/usr/local/mysql/var
 
cd /usr/local/mysql/
chown -R mysql.mysql .
bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var
chown -R root .
chown -R mysql /usr/local/mysql/var
chkconfig --add mysql.server
chkconfig mysql.server on
/etc/init.d/mysql.server start
echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
source /etc/profile  
 
nagios3以后版本需要php的支持
PHP的安装
wget http://mirrors.sohu.com/php/php-5.3.6.tar.bz2
因为需要有图片产生,所以先需要php的gd库支持
wget ftp://217.146.241.3/pub/linux/lib/gd-2.0.33.tar.gz
yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel libXpm libXpm-devel
tar zxvf gd-2.0.33.tar.gz
cd gd-2.0.33
./configure --prefix=/usr/local/gd2 --with-png --with-freetype --with-jpeg
make && make install
编译php
tar jxvf php-5.3.6.tar.bz2
cd php-5.3.6
./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --enable-mbstring=cn  --enable-force-cgi-redirect --enable-ftp -with-gd -with-jpeg -with-zlib -with-png -with-freetype --disable-debug --enable-inline-optimization  --enable-sockets --enable-bcmath
make && make install
增加php与apache的关联
vi /usr/local/apache2/conf/httpd.conf
确认有这样一行LoadModule php5_module        modules/libphp5.so添加:AddType application/x-httpd-php .php
修改apache的运行用户和组为nagios
phpinfo测试下是否成功
<? phpinfo() ?>
 
nagios的安装
wget http://cdnetworks-kr-2.dl.sourceforge.net/project/nagios/nagios-3.x/nagios-3.2.3/nagios-3.2.3.tar.gz
wget http://cdnetworks-kr-2.dl.sourceforge.net/project/nagiosplug/nagiosplug/1.4.15/nagios-plugins-1.4.15.tar.gz
wget http://cdnetworks-kr-1.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.12/nrpe-2.12.tar.gz
groupadd nagios
useradd nagios -g nagios
tar zxvf nagios-3.2.3.tar.gz
cd nagios-3.2.3
./configure --prefix=/usr/local/nagios
mkdir -p /etc/httpd/conf.d/ 
make all     //编译
make install    //安装nagios主要程序,cgi和html文件等
make install-init   //安装nagios启动脚本
make install-config  //将配置文件的例子复制到nagios配置文件里
make install-commandmode  //配置nagios目录权限。
make install-webconf 因为这个命令执行的时候,会在/etc/httpd/conf.d/创建   nagios.conf文件
cat /etc/httpd/conf.d/nagios.conf >>/usr/local/apache2/conf/httpd.conf
 
安装nagios插件
tar zxvf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure --prefix=/usr/local/nagios/
make && make install
安装完成后,会在/usr/local/nagios/ 目录下面生成libexe插件目录,nagios所有的插件都会在这个目录里面。
chown -R nagios.nagios /usr/local/nagios/
 
安装nrpe
tar zxvf nrpe-2.12.tar.gz 
cd nrpe-2.12
./configure && make all
make install-plugin //安装check_nrpe插件  
make install-daemon 
make install-daemon-config
make install-xinetd //安装xinetd脚本
yum -y install xinetd
vi /etc/xinetd.d/nrpe
only_from       = 127.0.0.1 注释掉   allowshosts =192.168.1.221  添加监控主机,一般为nagios服务器的Ip
vi /etc/services
添加两行
nrpe            5666/tcp
nrpe            5666/udp
启动xinetd  
/etc/init.d/xinetd start 看看5666端口是否开启
添加apache授权用户 -c选项为创建文件,创建第二个选项不需要
/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users itv1
修改cgi.cfg    #vi /usr/local/nagios/etc/cgi.cfg     
找到这几行,后面添加 erbin用户,可以自己定义用户,使用“,”隔开
authorized_for_system_information=nagiosadmin,itv1
authorized_for_configuration_information=nagiosadmin,itv1
authorized_for_system_commands=nagiosadmin,itv1
authorized_for_all_services=nagiosadmin,itv1
authorized_for_all_hosts=nagiosadmin,itv1
authorized_for_all_service_commands=nagiosadmin,itv1
authorized_for_all_host_commands=nagiosadmin,itv1
 
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg测试下,如果没有eror就可以启动了,
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg启动就行了
重新启动下apache,然后通过http://IP/nagios访问,输入用户名密码如果成功登陆,到此安装完成。
 
三、使用
现在跟着我的步骤走,不要怀疑,坚决执行吧哈哈
cd /usr/local/nagios/etc/objects/
ls看一下,看下就可以哈,然后
rm -f contacts.cfg printer.cfg switch.cfg templates.cfg windows.cfg
###如果你是头次安装,建议看下这些文件内容
contacts.cfg ------默认联系人配置文件
printer.cfg  ------默认监控打印机的配置文件
switch.cfg   ------默认监控交换机的配置问及爱你
templates.cfg------默认的模板文件
windows.cfg  ------默认监控windows的配置文件
commands.cfg ------命令的配置文件
timeperiods.cfg----时间配置文件
 
进入正题:
首先介绍下nagios的几个重要的项,就这么叫吧,哈哈
host(主机)------hostgroup(主机组)
service(服务)------servicegroup(服务组)
contact(联系人)------contactgroup(联系人组)
address(监控主机的ip)
service_description(定义检查服务的名称,在nagios页面上显示的)
check_command(检查命令)
 
好了,了解这些足够了,来一点点建立你自己的nagios
1、建立个模板文件,名字随意.cfg,就叫moban.cfg吧通俗易懂
      1 define contact{
      2 name                            generic-contact---模板名称
      3 #联系组名称
      4 service_notification_period     24x7---和下面一项是在timeperiods.cfg定义的,自己看下就明白
      5 #服务报警周期
      6 host_notification_period        24x7
      7 #主机报警周期
      8 service_notification_options    w,u,c,r,s
      9 #服务通知选项
     10 host_notification_options       d,u,r,s
     11 #主机通知选项
     12 service_notification_commands   notify-service-by-sendEmail----command.cfg中定义,下面说
     13 #服务通知方式
     14 host_notification_commands      notify-host-by-sendEmail
     15 #主机通知方式
     16 register                        0
     17                 }
     18 
     19 define host{
     20 name                            generic-host----足迹模板名称
     21 #服务器名称
     22 notifications_enabled           1
     23 #开启主机通知
     24 event_handler_enabled           1
     25 #开启时间处理
     26 flap_detection_enabled          1
     27 #启用状态抖动检测
     28 failure_prediction_enabled      1
     29 #启用故障预测
     30 process_perf_data               1
     31 #启用进程性能数据记录
     32 retain_status_information       1
     33 #启用状态信息保存功能
     34 retain_nonstatus_information    1
     35 #启用非状态信息保存功能
     36 notification_period             24x7
     37 #报警的时间周期 timeperiods.cfg配置
     38 register                        0
     39 check_interval                  1
     40 #正常检测的时间间隔(单位:分)
     41 retry_interval                  2
     42 #重试检测间隔时间
     43 max_check_attempts              3
     44 #最大尝试次数
     45 check_command                   check-host-alive----在command.cfg中定义的
     46 #检查主机存货(command.cfg中定义)
     47 notification_period             24x7
     48 #监控周期
     49 notification_interval           120
     50 #同一问题的报警间隔
     51 notification_options            d,u,r
     52 #主机通知报警选项 d--down, u--unknown, r--recover
     53 contact_groups                  SMC----自己定义的联系人组,下面定义
     54         }
     55 
     56 define service{
     57 name                            generic-service
     58 active_checks_enabled           1
     59 passive_checks_enabled          1
     60 parallelize_check               1
     61 obsess_over_service             1
     62 check_freshness                 0
     63 notifications_enabled           1
     64 event_handler_enabled           1
     65 flap_detection_enabled          1
     66 failure_prediction_enabled      1
     67 process_perf_data               1
     68 retain_status_information       1
     69 retain_nonstatus_information    1
     70 is_volatile                     0
     71 check_period                    24x7
     72 max_check_attempts              3
     73 normal_check_interval           2
     74 retry_check_interval            1
     75 notification_options            w,u,c,r
     76 notification_interval           60
     77 notification_period             24x7
     78 register                        0
     79 contact_groups                  SMC
     80                 }
 
 
2、建立个联系人文件,还叫contact.cfg吧
define contact{
        contact_name                    duty1---联系人名称
        use                             generic-contact---关联generic-contact,在上面定义了
        alias                           duty1---别名
        email                           138xxxxxxxx7@139.com---邮件地址
        }
 
define contact{
        contact_name                    duty2
        use                             generic-contact
        alias                           duty2
        email                           138xxxxxxxx7@139.com
        }
define contact{
        contact_name                    duty3
        use                             generic-contact
        alias                           duty1
        email                           138xxxxxxxx7@139.com
        }
 
define contact{
        contact_name                    duty4
        use                             generic-contact
        alias                           duty2
        email                           138xxxxxxxx7@139.com
        }
 
 
define contactgroup {---定义联系组
        contactgroup_name       SMC---组名
        alias                   SMC---组别名
        members                 duty1,duty2---成员,必须为已经定义的联系人
        }
 
define contactgroup {
        contactgroup_name       SMC2
        alias                   SMC2
        members                 duty3,duty4
        }
 
两个小问题解释下:
1、use   generic-contact的作用,关联此模板的所有已定义内容到此define contact中,省去很多笔墨
以duty2为例,完整的就是
define contact{
        contact_name                    duty2
        use                             generic-contact
        alias                           duty2
        email                           138xxxxxxxx7@139.com
service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r,s
        host_notification_options       d,u,r,s
service_notification_commands   notify-service-by-sendEmail
host_notification_commands      notify-host-by-sendEmail
register                        0
        }
 还一点,定义单个{}与模板中相同参数的优先性 :自定义参数 > 模板中相同参数,也就是说模板的参数是缺省值
2、报警方式(139短信)
现在支持的报警方式很多,后面会详细说,这里就介绍下报警的过程。
nagios产生监控状态硬性变化,调用邮件功能,将报警信息发送至mail.139.com,监控人员开通139短信通知,会自动收到139发来的短信
 
3、command.cfg文件
添加nrpe插件的命令
# 'check_nrpe' command definition
define command{
        command_name    check_nrpe
        command_line /usr/local/nagios/libexec/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }
 
介绍下我的报警发邮件sendEmail,一个perl写的命令行发邮件工具。在我的系统应用了一年多,非常出色
下载
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
解开后,将可执行文件sendEmail复制到/usr/local/bin/目录并且修改为nagios可执行
发个邮件测试一下
 /usr/local/bin/sendEmail -f old_hoodlum@163.com -t 138xxxxxxx -s smtp.163.com -u  "test" -m "hello" -xu old_hoodlum -xp password -l /var/log/sendEmail.log
 -f   --from
 -t   --to
 -s   使用的smtp域名
 -u   标题
 -m   内容
 -xu  smtp登陆用户名
 -xp  smtp登陆密码
 
建议,nagios报警尽量不要使用本机sendmail,在大网站注册个免费邮箱发去吧,也减少了很多麻烦,比如sendmail问题导致的报警不能及时到达
以下为command中定义的发邮件命令,根据自己的实际情况修改
command.cfg中加入
define command{
        command_name    notify-host-by-sendEmail
        command_line    /usr/bin/printf "%b" "***** Nagios-BJ *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/local/bin/sendEmail -f old_hoodlum@163.com -t $CONTACTEMAIL$ -s smtp.163.com -u "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -xu old_hoodlum -xp xxxxxxxx -l /var/log/sendEmail.log
        }
 
define command{
        command_name    notify-service-by-sendEmail
        command_line    /usr/bin/printf "%b" "***** Nagios-BJ *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTNAME$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/local/bin/sendEmail -f old_hoodlum@163.com -t $CONTACTEMAIL$ -s smtp.163.com -u  "** $NOTIFICATIONTYPE$ Service Alert: $HOSTNAME$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu old_hoodlum -xp xxxxxxxx -l /var/log/sendEmail.log
        }
 
4、现在万事具备了,说最重点的主机、服务的监控策略
假如,公司内网n个网段,192.168.x.0/24(x=1-8),每个x运行不同的业务,各有不同的系统,需要监控不同的服务,怎么规划呢?
如果只写一个host.cfg和一个service.cfg的话,维护起来是非常困难的,我们可以这样
建立1-x.cfg.....8-x.cfg,添加每个网段的主机,根据不同的业务及不同系统对主机分组,也可根据需要监控的内容将类似的主机分组,总而言之,怎么方便你少写字你就怎么来
这就是开源的魅力,随心随意不必拘泥于形式,你可以给nagios定义100个配置文件,只要这么做方便你管理就好,写完了配置文件,只要在nagios.cfg文件加入你这个文件名就可以了,cfg_file=/usr/local/nagios/etc/objects/x.cfg
定义service(service_group),一样的道理,监控同个服务的组就好了,这样做会省去你很多的时间,举个例子吧
##定义主机
 define host{
        use                     generic-host
        host_name               BJ-OUTPUT-sanlihe
        alias                   BJ-OUTPUT-sanlihe
        address                 120.72.48.70
           }
 
 define host{
        use                     generic-host
        host_name               BJ-GATEWAY-sanlihe
        alias                   BJ-GATEWAY-sanlihe
        address                 120.72.48.1
           }
 
 define host{
        use                     generic-host
        host_name               NA-GATEWAY
        alias                   NA-GATEWAY
        address                 218.30.50.1
           }
#定义单个主机服务
define service {
        use                             generic-service
        host_name                       NA-GATEWAY
        max_check_attempts              3
        normal_check_interval           1
        retry_check_interval            2
        contact_groups                  SMC
        service_description             PING
        check_command                   check_ping!850.0,90%!1600.0,95%
        }
 
 define host{
        use                     generic-host
        host_name               GW-dianxintong
        alias                   GW-dianxintong
        address                 218.247.13.60
           }
 
 define host{
        use                     generic-host
        host_name               BJ-dianxintong
        alias                   BJ-dianxintong
        address                 218.247.13.62
           }
#定义主机组
 define hostgroup{
        hostgroup_name          itv
        alias                   itv
        members                 BJ-OUTPUT-sanlihe,BJ-GATEWAY-sanlihe,GW-dianxintong,BJ-dianxintong
        }
#定义主机组服务
define service{
        use                             generic-service
        hostgroup_name                  itv
        max_check_attempts              3
        normal_check_interval           1
        retry_check_interval            2
        contact_groups                  SMC
        service_description             PING
        check_command                   check_ping!500.0,90%!1000.0,95%
        }
 
假如想用多种方式同时报警怎么办?
在moban.cfg的service_notification_commands 和host....中添加多种报警方式就好了,中间用“,”隔开
 
想让每个人在不同时间以不同方式收到报警?
联系人中定义不同报警方式和报警时间就行了
 
想让QQ给你报警?
没戏,哈哈,发到QQ邮箱,如果QQ在线会自动弹出来的
 
nagios有多少种报警方式?
我也不知道有多少种,我用过的有短信猫、email、飞信、qq、msn....
 
都想用?
当然可以,escalations会帮你完成你的需求
 
想让nagios帮你处理?
可以,event_hander会做到,但是强烈建议在你不是非常精通你所要操作的服务时,请不要使用
 
怎么能让nagios检测到硬性变化后立刻报警?
报警时间跟这几个参数有关,一看就能明白
1、interval_length  在nagios.cfg文件731行左右,默认为60,单位s
2、check_interval
3、retry_interval 
4、max_check_attempts 
 
nagios分布式??
假如你有100个nagios server,你想看看总况,总不能打开100个web页面吧?nagios分布式玩玩可以,个人建议不用
 
我想监控...
用我们经理的一句话:“你能想到它就能做到”,知道nagios监控插件的0、1、2就行了,http://exchange.nagios.org/ 插件最多的地方
 
个人一些建议:
(1)、nagios服务器强烈建议放在最安全的地方,在战争年代,它是一个哨兵,也是你的最后一道防线,如果监控挂了,服务器再挂了,你如何知道?
(2)、报警方式,个人意见:短信猫>email(socket方式)>msn || qq || fetion,以稳为主
(3)、每天定点在nagios server上给自己发个消息是个很好的习惯
(4)、对于服务的检查次数,设置为3-4此比较合理,如果太短你可能会经历一次狼来了的故事,太长的话,你可能都不会知道问题的存在
(5)、报警方式,如果有条件最好不要选择单种,自己设置好策略
(6)、nagios本机的系统信息也很重要,可能一些时候的误报是因为主机系统资源紧张造成的,比如ping
(7)、尽量不去监控无所谓的程序或者应用,尽量不去使用snmp收集数据
(8)、总之、不要把nagios只当个辅助来对待,它是运维的尖锐利

本文出自 “搁浅” 博客,请务必保留此出处http://hoodlum.blog.51cto.com/4075497/743722

 

###############################

http://1413570.blog.51cto.com/1403570/891483

http://1413570.blog.51cto.com/1403570/891504

 

nagios 3.2安装详解(一)
2012-06-07 18:03:50
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://1413570.blog.51cto.com/1403570/891483
Nagios 安装详解
对于运维人员来说,获悉服务器状况的信息非常重要,针对监控服务,比较好的有cacti和nagios,cacti使用更简单一些,cacti主要是用来采集信息,CPU、MEM、流量等信息更详细,nagios主要用来是报警功能,他配置比cacti麻烦一些,信息没有cacti采集的完全,但是有cacti不具备的报警功能,nagios会有一个报警的机制,当触发了这个报警机制时,会发送邮件或者短消息;如果能做到二者的结合,无疑是最好的选择;
这篇文章主要是介绍如何安装nagios监控平台、添加被监控主机(Linux和Windows),可以满足日常之中的报警功能,后续会将cacti的更详细安装发表出来,以及nagios和cacti的结合
先去基本需要安装的包
nagios-3.2.1.tar.gz
nrpe-2.12.tar.gz
httpd-2.2.21.tar.bz2
nagios-plugins-1.4.14.tar.gz
第一步:安装apache
解压   tar jxvf httpd-2.2.21.tar.bz2 
编译安装apache,将一些需要的参数加上,需要cgi的支持
./configure  --prefix=/usr/local/apache --enable-so --enable-track-vars --enable-rewrite --with-zlib --enable-mods-shard=most --enable-cgi --enable-cgid --with-suexec-caller=apache
确认无error信息后
make && make install
Ok,安装好后先不用启动,等下还需要修改http.conf的文件
第二步:安装nagios
因为nagios的安装很简单,主要是nagios的插件太多,安装nagios的插件和配置比较麻烦,需要细心一点
1.先建立nagios的用户名和密码
useradd nagios
创建一个组,用于从web接口执行nagios的外部命令,将nagios和apache用户加入到组中
usermod -G nagcmd nagios 
usermod -G nagcmd apache
2.安装nagios 
解压tar zxvf nagios-3.2.1.tar.gz
编译安装
 ./configure  --prefix=/usr/local/nagios --with-command-group=nagcmd --with-httpd-conf=/usr/local/apache/conf 
make all
make install
make install-init
make install-commandmode
make install-config
make install-webconf
Ok,到nagios目录下,ls一下
bin  etc  libexec  sbin  share  var
说明nagios安装ok
到apache conf下,会看到多出了nagios.conf配置文件,这个文件是将apache与nagios结合的文件,将其追加到http文件中
cat nagios.conf >> httpd.conf 
AuthUserFile /usr/local/nagios/etc/htpasswd.users 这个是登录到nagios需要验证的用户名和密码
[root@nagios-server conf]# /usr/local/apache/bin/htpasswd  -c /usr/local/nagios/etc/htpasswd.users test
New password: 
Re-type new password: 
Adding password for user test
添加用户test用户,web访问时会用到的
更改属主,属组
 chown -R apache:apache /usr/local/apache/
chown -R nagios:nagcmd /usr/local/nagios/
3.安装nagios-plugin
tar zxvf nagios-plugins-1.4.14.tar.gz
编译安装,这个是nagios的一个插件程序
./configure  --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios 
make && make install
之后到nagios目录下多了一个 libexec,这个目录下面是nagios插件程序
先启动apache和nagios
/usr/local/apache/bin/apachectl  -k start 
启动nagios之前,先检查使用有Warnings和errors
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 
结果:
Total Warnings: 0
Total Errors:   0
Ok,将nagios启动,然后使用web访问下,看是否可以看到主界面
[root@nagios-server conf]# service nagios start 
Starting nagios: done.
Ok
Web访问nagios,方法:http://IP/nagios
这里需要输入刚新加的test用户
如果发现这样的error
或者是显示出了php的源代码文件,
这是因为缺少来php程序的支持,安装php以及修改http的配置文件
Ok,还需要修改http的配置文件,因为nagios下游cgi的文件和php的文件,从nagios3.0以后都是需要php的支持,不然的话,nagios的访问都是源代码:
解决办法:
安装php 程序包
解压包:
tar zxvf php-5.3.6.tar.gz 
./configure  --prefix=/usr/local/php  --with-apxs2=/usr/local/apache/bin/apxs --with-libxml-dir --with-png-dir --with-jpeg-dir --with-zlib --with-freetype-dir --with-gd-dir --enable-mbstring=all
Make
Make test
TEST 6175/8798 [ext/standard/tests/file/005_variation.phpt]
Make install
这时如果你的libtool不一致的话,会出现error
/usr/local/apache/modules/libphp5.so": 没有那个文件或目录
解决办法:
将系统目前的libtool卸载掉
[root@nagios-server build]# rpm -qa | grep libtool
libtool-ltdl-2.2.6-15.5.el6.x86_64
libtool-2.2.6-15.5.el6.x86_64
之后
rpm -e libtool-2.2.6-15.5.el6.x86_64 --nodeps
将apache安装目录下build下的libtool复制到php编译安装目录(解压后的目录)下
cp -rf  libtool  /home/software/php-5.3.6
再make clean
重新执行./configuree    make      make install
成功后,修改apache的配置文件:
User apache
Group apache
 
DirectoryIndex  index.php index.html
 
AddType application/x-httpd-php .php .phtml
 
 AddHandler cgi-script .cgi
之后重启apache
/usr/local/apache/bin/apachectl  -k restart 
再重新访问下网页
 
发现OK 了,nagios和apache的结合没有问题了,剩下的就是nagios的插件和监控设置了
 
第三步:配置nagios监控主机的配置文件
1.修改nagios配置文件
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg (这个是默认针对nagios监控主机的配置,没添加一台主机,都要在这个文件中配置)
cfg_dir=/usr/local/nagios/etc/servers (被监控主机的监控配置文件目录)
剩下的switch、routers、printer现在又没有用到
修改这两个就好
2.修改联系人配置文件 contacts.cfg
define contact{
        contact_name                    test    ;
        alias                           admin   ;
        service_notification_period     24x7    ;
        host_notification_period        24x7    ;
        service_notification_options    w,u,c,r ;
        host_notification_options       d,u,r   ;
        service_notification_commands   notify-service-by-email ;
        host_notification_commands      notify-host-by-email    ;
        email                           frank@51coolbar.com     ;
        }
如果多个人的话,copy一下,将email更改下即可
define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 test
        }
这个是组,members可以添加多个,","(逗号)隔开
3.修改localhost文件
define host{
        host_name                       192.168.20.221
        alias                           local-service
        address                         192.168.20.221
        contact_groups                  admins
 max_check_attempts              5
 notification_interval           200
  notification_options            d,u,r
        }
剩下的保持不变,l
4.修改时间,保持默认的即可
define timeperiod{
        timeperiod_name 24x7
        alias           24 Hours A Day, 7 Days A Week
        sunday          00:00-24:00
        monday          00:00-24:00
        tuesday         00:00-24:00
        wednesday       00:00-24:00
        thursday        00:00-24:00
        friday          00:00-24:00
        saturday        00:00-24:00
        }
5.修改command
添加一行,其他的保持不变
#check nrpe
define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }
Ok了,更改这些会把nagios平台基本都搭建起来了,使用
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 
检查nagios那一个配置文件是否有error或者warning信息
 
Total Warnings: 0
Total Errors:   0
如果有警告或者error信息,需要去排除,确认无误后,将nagios启动
 service nagios start
Starting nagios: done.
 第四步:安装NRPE 
因为我要为nagios server安装nrpe,就不需要安装nagios-plugin了,如果在是被监控端上安装nrpe,需要先添加nagios用户名,和安装nagios-plugin
./configure  --prefix=/usr/local/nagios/ 
make all
 make install-plugin
make install-daemon
make install-daemon-config
去编辑nrpe的配置文件
allowed_hosts=127.0.0.1   这个是nagios server的IP
command[check_users]=/usr/local/nagios/libexec/check_users -w 3 -c 6
command[check_load]=/usr/local/nagios/libexec/check_load -w 9,7,6 -c 20,15,10
command[check_disk]=/usr/local/nagios/libexec/check_disk -w20 % -c 15% -p / -u GB
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 1 -c 3 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
command[check_ping]=/usr/local/nagios/libexec/check_ping -w 100,20% -c 200,50%
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
测试本机nrpe是否ok
[root@server221 etc]# /usr/local/nagios/libexec/check_nrpe  -H localhost
NRPE v2.12
将nrpe启动
 /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
检查是否启动ok
[root@server221 etc]# netstat -anpt | grep nrpe
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      8049/nrpe
现在,通过web就可以看到nagios server 监控的信息

本文出自 “技术学习与交流” 博客,请务必保留此出处http://1413570.blog.51cto.com/1403570/891483

 

nagios 3.2安装详解(二)
2012-06-07 18:15:12
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://1413570.blog.51cto.com/1403570/891504
监控linux主机,我目前没有windows server,后续会补充上
我这边以添加一台server  ip 192.168.20.250为例
我这边联系人不变,监控的服务也不变,
1.添加用户名
useradd -M  nagios  -s /sbin/nologin 
2.安装nagios-plugin
 tar zxvf  nagios-plugins-1.4.14.tar.gz 
./configure  --prefix=/usr/local/nagios 
Make
Make install
3.安装nrpe
./configure  --prefix=/usr/local/nagios 
make all
 make install-plugin
make install-daemon
make install-daemon-config
4.编辑nrpe.cfg文件
server_port=5666    nrpe端口
allowed_hosts=192.168.20.221     nagios server ip
command[check_users]=/usr/local/nagios/libexec/check_users -w 3 -c 5
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 15% -p / -u GB
command[check_zombie_procs]=/usr/local/nagios//libexec/check_procs -w 1 -c 2 -s Z
command[check_total_procs]=/usr/local/nagios//libexec/check_procs -w 150 -c 200
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20 -c 10
command[check_ping]=/usr/local/nagios/libexec/check_ping -H $ARG1$ -w $ARG2$  -c $ARG3$ -p 5
防火墙上开启5666的端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5666  -j ACCEPT
Ok,启动250上的nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
再nagios server上
进入到
/usr/local/nagios/etc/objects
define host{
        host_name               192.168.20.250
        alias                   192.168.20.250
        address                 192.168.20.250
        contact_groups          admins
        max_check_attempts      5
         notification_interval  200
         notification_options   d,u,r
}           这个要有,不然在监控的时候会一直显示DOWN状态
进入到/usr/local/nagios/etc/servers 
新建文件:192.168.20.250.cfg
define service{
        use             generic-service
        host_name       192.168.20.250
        service_description     check-host-alive
        check_command           check_ping!100.0,20%!500.0,60%
        max_check_attempts      5
        normal_check_interval   1
}
define service{
        use             generic-service
        host_name       192.168.20.250
        service_description     check_ssh
        check_command           check_ssh
        max_check_attempts      5
        normal_check_interval   1
}
define service{
        use     generic-service
        host_name       192.168.20.250
        service_description     check_http
        check_command           check_http
        max_check_attempts 5
        normal_check_interval 1
}
define service{
        use     generic-service
        host_name       192.168.20.250
        service_description     check_smtp
        check_command           check_smtp
        max_check_attempts 5
        normal_check_interval 1
}
define service{
        use     generic-service
        host_name       192.168.20.250
        service_description     check_disk
        check_command           check_nrpe!check_disk
        max_check_attempts 5
        normal_check_interval 1
}
define service{
        use     generic-service
        host_name       192.168.20.250
        service_description     check_load
        check_command           check_nrpe!check_load
        max_check_attempts 5
        normal_check_interval 1
}
define service{
        use     generic-service
        host_name       192.168.20.250
        service_description     check_swap
        check_command           check_nrpe!check_swap
        max_check_attempts 5
        normal_check_interval 1
}
这些都是250上运行的服务
检查nagios是否出错
 /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 
Total Warnings: 0
Total Errors:   0
Ok,没有问题
[root@server221 servers]# service nagios restart 
Running configuration check...done.
Stopping nagios: done.
Starting nagios: done.
再web访问nagios看看,会自动多出来192.168.20.250这个主机的监控状态
这些监控的服务,可以和我们建立的192.168.20.250的服务名对比下
我们的监控服务选项,都是从servers下的配置文件来的
之前在排除error的时候,nagios有发送邮件,其实也可以自己模拟一下的,nagios发送邮件
Nagios下,如果到libexec下会发现没有内存和CPU、网卡流量等监控信息
个人在安装的时候发现,nagios基本上没有图表来诠释服务器状态,cacti主要是可以采集信息,nagios主要是使用它的监控机制
Cacti 数据采集
像硬盘空间、负载、流量等都可以显示出来
如果选择cacti与nagios结合,无意是最大的选择方向,后续会将cacti与nagios的结合整理出来,以上安装是自己边安装边去解决error,可能再某一块写的不是很好,还请大家指点出来,共同学习
如果对nagios有兴趣,可以加入QQ群:140704742
以上是自己亲手整理出来的,可以正常监控,正常实现报警机制

本文出自 “技术学习与交流” 博客,请务必保留此出处http://1413570.blog.51cto.com/1403570/891504

 

 

 

===============================

 http://blog.csdn.net/caleng/article/details/5676706

 

 

CentOS环境Nagios的安装与配置

分类: Linux 系统架构 2444人阅读 评论(0) 收藏 举报

在上文中讲到有关cacti的安装与配置,它在网络流量性能监控以及图表绘制等方面非常的强大。但是服务器和服务本身状态的监控以及错误报警机制,则需要本文介绍的Nagios神器来实现。Nagios的功能是监控服务和主机,根据配置在服务器异常的时候提供报警功能,并提供友好的WEB界面查看当前的网络状态、通知和故障历史、日志文件……但是他自身并不包括这部分功能的代码,所有的监控、检测功能都是有插件来完成的。

 

一、安装环境:CentOS5.4 + Apache2 + PHP5.2,请确保已安装PHP+Apache,可参看本博有关Apache与PHP的安装教程;

 

二、创建Nagios用户及用户组,命令如下:

#useradd -m nagios
--创建nagcmd组用来运行通过web接口传输过来的命令,同时添加nagios和apache
#groupadd nagcmd
#usermod -a -G nagcmd nagios
#usermod -a -G nagcmd apache

 

三、下载安装Nagios及Nagios插件,过程如下:

——下载Nagios

#wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz

——下载Nagios插件

#wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz

——解压Nagios

#tar -zvxf nagios-3.2.1.tar.gz

#cd nagios-3.2.1

——编译

#./configure --with-command-group=nagcmd
#make all

——安装Nagios,初始化脚本及配置文件,Nagios将会被安装至/usr/local/nagios
#make install
#make install-init
#make install-config
#make install-commandmode

——安装WEB界面,界面将会安装到 /usr/local/nagios/share ( http 配置文件默认添加到 /etc/httpd/conf.d/nagios.conf,如果没有则执行:#cp sample-config/httpd.conf /etc/apache2/conf.d/nagios.conf )

#make install-webconf

——创建HTTP认证用户登录Nagios,用户名nagiosadmin,密码123456

#htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

——重启apache

#service httpd restart

 

——安装Nagios插件

#tar -zvxf nagios-plugins-1.4.14.tar.gz

#cd nagios-plugins-1.4.14

#./configure --with-nagios-user=nagios --with-nagios-group=nagios
#make && make install

 

——配置Nagios管理员接受告警信息的邮箱,写入管理员邮箱
#vim /usr/local/nagios/etc/objects/contacts.cfg
email admin@admin.com ;
——校验Nagios配置文件,验证配置是否有误
#/usr/local/nagios/bin/nagios -v

 

——启动Nagios,配置在系统启动时运行Nagios
#chkconfig --add nagios
#chkconfig nagios on
#chkconfig httpd on

 

——运行Nagios
#service nagios start

 

四、登陆到Web界面,输入用户名密码:nagiosadmin 123456,http://localhost/nagios/

Nagios

 

 

五、错误处理

1、本机监控HTTP SSH的Notifications显示警告错误,解决方法:

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

define service{
use local-service ; Name of service template to use
host_name localhost
service_description SSH
check_command check_ssh
notifications_enabled 1 #改为1,即可
}

 

# Define a service to check HTTP on the local machine.
# Disable notifications for this service by default, as not all users may have HTTP enabled.

define service{
use local-service ; Name of service template to use
host_name localhost
service_description HTTP
check_command check_http
notifications_enabled 1#改为1,即可
}

 

2、Nagios显示类似错误:HTTP WARNING: HTTP/1.1 403 Forbidden - 5240 bytes in 0.002 second response time。

该错误表明在apache web根目录没有index.html文件。解决方法:在web根目录(如:/var/www/html/目录)建立index.html文件,重启apache和nagios即可。

 

参考文档:

http://netsecurity.51cto.com/art/200706/48728.htm

http://linux.chinaunix.net/bbs/viewthread.php?tid=1051835

http://www.linuxschool.net/install_nagios_on_centos.html

http://yahoon.blog.51cto.com/13184/41300

http://bbs.chinaunix.net/viewthread.php?tid=1326927

http://kerry.blog.51cto.com/172631/107831

http://bbs.chinaunix.net/thread-1356538-1-1.html

 

 

 

如需转载,请注明:本文来自感染源博客http://blog.csdn.net/caleng ]

 

 

###############################

 

http://limylau.blog.51cto.com/612832/124865

 

基于CentOS下Nagios的安装
2009-01-06 14:31:56
版权声明:原创作品,谢绝转载!否则将追究法律责任。
1.确定Centos系统中是否安装如下软件包:
   Apache 
  GCC compiler 
  GD development libraries
2.如果没有安装,则按如下方式进行安装:
   yum -y install httpd
   yum -y install gcc
   yum -y install glibc glibc-common
   yum -y install gd gd-devel
3.创建一个nagios user并为其设置password
   useradd nagios
   passwd nagios
4.创建用户组并将nagios user和apache user加入到用户组中
   groupadd nagcmd
   usermod -a -G nagcmd nagios
   usermod -a -G nagcmd apache
5.下载nagios软件包及nagios插件
6.编译安装nagios
   tar xzf nagios-3.0.6.tar.gz
   cd nagios-3.0.6
   ./configure --with-command-group=nagcmd
   make all
   make install
   make install-init
   make install-config
   make install-commandmode
7.配置web接口
   make install-webconf
   htpasswd -c /usr/local/nagios/etc/htpasswd.users nagios
   重启apache服务器,让刚才的配置生效。
8.安装nagios插件
  tar xzf nagios-plugins-1.4.11.tar.gz
  cd nagios-plugins-1.4.11
 ./configure --with-nagios-user=nagios --with-nagios group=nagios
   make
   make install
9.把nagios服务增加到服务清单中并设置开机自启动
   chkconfig --add nagios
   chkconfig nagios on
10.检查nagios服务器是否存在配置错误。
    /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
    若没有错误信息就启动nagios服务器
    service nagios start
11.在ie中输入http://“nagios server ipaddress”/nagios/,测试nagios服务器是否已经能正确安装。
    安装到此完成,之后做troubleshooting.

本文出自 “在水一方” 博客,谢绝转载!

 

===============================

 

 

===============================

 

###############################

 

===============================

 

 

###############################

 

===============================

 

 

===============================

 

###############################

 

===============================

http://salogs.com/2011/10/centos-nagios-alarms-fly-under-the-letter-four-step-deployment/

今天 帮群里一兄弟配了下nagios上的飞信,这个东西 我个人感觉还是很实用的,不过好久没配了,今天配置了一遍,顺便 就把过程记录下来了,供大家学习!!!

一、安装飞信

cd /root/tools
wget http://ebook.elain.org/tools/fetion20101205.tar.gz

安装步骤略,软件包中有
添加要接收报警短信的手机号为飞信好友

/usr/local/fetion/fetion --mobile=137xxxxxxxx --pwd=1111111 --to=138xxxxxxxx--msg-type=1 --msg-utf8="The Fetion test is ok"

注:第一次要输入验证码,生成验证码后,另开一终端把图片下载下来,打开查看,注意区分大小写!!!

二、vi commands.cfg  添加

define command{
command_name notify-host-by-fetion
command_line /usr/local/fetion/fetion --mobile=137xxxxxxxx --pwd=1111111 --to=138xxxxxxxx --msg-type=1 --msg-utf8="** $NOTIFICATIONTYPE$ Host Alert:$HOSTNAME$ is $HOSTSTATE$ **"
}

define command{
command_name notify-service-by-fetion
command_line /usr/local/fetion/fetion --mobile=137xxxxxxxx --pwd=1111111 --to=138xxxxxxxx --msg-type=1 --msg-utf8="**$NOTIFICATIONTYPE$\n\nService:$SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState:$SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$ **"
}



三、vi templates.cfg

define contact{
…………
service_notification_commands   notify-service-by-fetion
host_notification_commands      notify-host-by-fetion
…………
}

四、 vi contacts.cfg

define contact {
contact_name                   elain
alias                          sa
service_notification_period    24x7
host_notification_period       24x7
service_notification_options   w,u,c,r
host_notification_options      d,u,r
service_notification_commands  notify-service-by-email,service-notify-by-fetion
host_notification_commands     notify-host-by-email,host-notify-by-fetion
email                          elain2012@hotmail.com
pager                          138xxxxxxxx
}
/etc/init.d/nagios  checkconfig    #检查配置文件 正确性

/etc/nit.d/nagios reload                 #重新加载配置文件

停服务做测试!!!

posted @ 2012-06-08 10:38  陳聽溪  阅读(1060)  评论(0)    收藏  举报