Nagios+cacti的安装

Nagios+cacti的安装

一、Nagios简介


Nagios是一款开源的电脑系统和网络监视工具,能有效监控WindowsLinuxUnix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。

 

Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。 

    Nagios可以识别4种状态返回信息,即 0(OK)表示状态正常/绿色、1(WARNING)表示出现警告/黄色、2(CRITICAL)表示出现非常严重的错误/红色、3(UNKNOWN)表示未知错误/深黄色。Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。

四种监控状态


知道Nagios 是如何通过插件来管理服务器对象后,现在开始研究它是如何管理远端服务器对象的。Nagios 系统提供了一个插件NRPENagios 通过周期性的运行它来获得远端服务器的各种状态信息。它们之间的关系如下图所示



系统环境:RHEL6.5 x86_64 selinux and iptables disabled

nagios 主机:222.24.24.148

二、安装之前的准备工作

[root@nagios~server ~]# scp 222.24.24.10:/kiosk/Dsktop/nagiosnew/* /usr/local/src/cacti/

-bash: scp: command not found

[root@nagios~server ~]# yum install openssh_clients -y

[root@nagios~server ~]# chkconfig  iptables off

[root@nagios~server ~]# chkconfig --list iptables

iptables        0:off 1:off 2:off 3:off 4:off 5:off 6:off

[root@nagios~server ~]# getenforce 

Enforcing

[root@nagios~server ~]# setenforce 0

[root@nagios~server ~]# vim /etc/sysconfig/selinux 

三、rpm包方式安装lamp

[root@nagios~server ~]# yum install httpd mysql mysql-server php php-server -y

[root@nagios~server ~]# yum install -y rrdtool

[root@nagios~server ~]# yum install -y php-xml net-snmp net-snmp-utils -y

[root@nagios~server cacti]# pwd

/usr/local/src/cacti

[root@nagios~server cacti]# ls

cacti-0.8.8c.tar.gz  cacti-spine-0.8.8c.tar.gz  php-snmp-5.3.3-26.el6.x86_64.rpm

[root@nagios~server cacti]# yum localinstall -y php-snmp-5.3.3-26.el6.x86_64.rpm -y

[root@nagios~server cacti]# vim /etc/php.ini    【修改时区】

在我的真机上先进行查询,然后修改


[root@nagios~server cacti]# vim /etc/php.ini 


 /etc/init.d/httpd start

 /etc/init.d/mysqld star

[root@nagios~server cacti]# yum install -y php-gd

[root@nagios~server cacti]# /etc/init.d/httpd restart

[root@nagios~server ~]# cd 

[root@nagios~server ~]# yum install php-* -y

【切记一定要先cd到家目录下,之前我犯了一个错误就是在cacti的目录下面,怎么也装不上php-*

四、配置snmp

[root@nagios~server ~]# vim /etc/snmp/snmpd.conf 

【在snmp的配置文件中修改四处】


【此处是将view开头的第一行的末尾的“.1”去掉,此图已经去掉了,本来是两个1,然后再添加两行】


【添加上面三项即可】


【如上面所示即为成功】

五、配置cacti

cacti的结构

在广义上来说cacti是一套网络流量监测图形分析工具,但从狭义来说cacti只是由php语言实现的一个软件

它需要PHP,apache,Mysql,SNMP,RRDTool等工具的支持


从上图可以很明确看出cacti的三层架构之间的关系

第一层是数据采集,通过snmp简单网络协议,和一批自定义的脚本进行采集

第二层是数据存储,分别通过mysql存储cacti的模板和一些一定的信息,RRDTool用来存储所监控到的性能文件,后缀为.rrd

第三层是数据展现,cactiweb方式展现




cacti主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候,rrdtool生成图表呈现给用户。因此, snmprrdtoolcacti的关键,snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成.

Cacti是一套基于PHP,MySQL,SNMPRRDTool开发的网络流量监测图形分析工具,原理如下图所示:


snmp抓到数据不是存储在mysql中而是存在rrdtool生成的rrd文件中,rrdtool对数据的更新和存储就是对rrd文件的处理,rrd 文件是大小固定的档案文件,它能够存储的数据笔数在创建时已经定义.

Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机 ip,snmp 团体名、端口号、模板信息等变量。

*.net-snmp

NET-SNMP是一个代理SNMP协议的软件,并提供管理端的查询工具,支持多种扩展方式

在被监测和监测机器进行安装

配置

/etc/snmp/snmpd.conf


*.RRDTool

RRDTool使用RRDRound Robin Database)作为存储格式,Round robin是一种处理定量数据、以及当前元素指针的技术。RRDTool主要用来跟踪对象的变化情况,生成这些变化的走势图

RRDTool的存储特点

 

存储数据的数据库空间看成一个圆

指针会随着数据的读写操作在圆的刻度上自动移动

圆没有起点和终点

当所有的空间都存满了数据,就又从头开始存放

RRDtool 所使用的数据库文件的后缀名是'.rrd'


5.1下载软件包

[root@nagios~server cacti]# ls

cacti-0.8.8c.tar.gz 

5.2解压到http的发布目录:

[root@nagios~server cacti]# tar -zxvf cacti-0.8.8c.tar.gz -C /var/www/html/ 


5.3设置mysql的安全向导


[root@nagios~server include]# mysql_secure_installation 

因为config.php要用到mysql,所以先来配置mysql.

设置root密码为mysql

5.4创建cacti的数据库,并对cacti的用户进行授权

[root@nagios~server include]# cd /var/www/html/cacti/

cacti的数据库,并进行查看】


也可以不用登录mysql,直接在命令行上敲击如下命令:

mysqladmin -pmysql create cacti

[root@nagios~server cacti]# mysql -uroot -pmysql cacti < cacti.sql 

[root@nagios~server cacti]# mysql -uroot -pmysql

【对本机的cacti用户进行授权,并且给与登录密码为cacti

授权的原因是:将来mysql数据库所在的主机和cacti服务所在的主机可能不在同一台主机上,那么就需要cacti服务从mysql上提取数据,就需要权限,届时将@localhost改为cacti服务所在的主机的ip即可】


【如上图所示,即使远端的cacti用户登录过来也只能看到cacti这个库,权限一是及其的有限】

5.6修改cacti的配置文件


[root@nagios~server include]# vim config.php 


【切记一定要修改数据库名称和密码】

【启用以上的两项】


5.7设置crontab 【即就是定时执行监控任务】

【以cactiuser身份创建定时计划任务】






默认 Username:  admin

     Password: admin

【强制修改密码】

Nagios监控页面


六、添加另一台被监控的主机

【被监控主机,222.24.24.19 linux:redhat6.5

在被监控主机里面安装net-anmp,修改配置文件,并启动snmpd

[root@Dong ~]# yum install -y net-snmp



【修改以上内容】


如果出现如上图所示的结果即为正确

然后就是再在网页上添加device然后再把这个device添加到Graph Tree上。

【这个详细的步骤我后续会再次添加】

七、用cacti-spine 加速cacti

7.1.安装一些基础软件:

[root@nagios~server include]# yum install -y net-snmp-devel mysql-devel openssl-devel

[root@nagios~server include]# yum install dos2unix autoconf gcc libtool cpp glibc-devel glibc-headers kerner-headers automake binutils -y

7.2下载并修改spine的配置

[root@nagios~server cacti]# tar zxvf cacti-spine-0.8.8c.tar.gz    要和cacti的版本一致

[root@nagios~server cacti]# cd cacti-spine-0.8.8c.tar.gz

[root@nagios~server cacti-spine-0.8.8c]# sh bootstrap 

[root@nagios~server cacti-spine-0.8.8c]# ./configure 

[root@nagios~server cacti-spine-0.8.8c]# make

[root@nagios~server cacti-spine-0.8.8c]# make install

安装好之后会有下面的文件:


【将配置文件复制到/etc/spine文件中】


[root@nagios~server etc]# vim /etc/spine.conf 


cactiuser的身份启动spine

[root@nagios~server ~]# su - cactiuser


【以上表示启动成功】

7.3设置cacti 使其和spine结合:


setting———>


paths————>


【先找到位置,然后输入spine的执行路径,然后保存】


【选择poller选项,然后将右边的选项改为spine

7.4实验结果

[root@nagios~server ~]# cat /var/www/html/cacti/log/cacti.log 


【日志里面已经有spine,之前的poller一直是cmd.php ,现在poller变成了spine


【上图是之前日志文件中的内容】

八、给cacti安装插件,进行扩展

8.1安装插件monitor

monitor-v1.3-1.tgz

[root@foundation101 nagiosnew]# tar -zxvf monitor-v1.3-1.tgz 


8.2设置cacti支持这个插件


【点击



【进去界面是这样的】

【点击



【再点击


ok了】

8.3实验结果


【会出现一个monitor菜单】




第二部分

一、报警系统Nagios

上面是监控系统,接下来看报警系统

1.1编译安装nagios

出现如下报错:


解决方法:

【首先查看系统gd的版本】


下载的gd-devel要和你系统上的gd版本一样。

gd-devel-2.0.35-11.el6.x86_64.rpm

[root@nagios~server cacti]# yum localinsall gd-devel-2.0.35-11.el6.x86_64.rpm 

【切记在安装rpm包的时候,如果出现有依赖性,用yum localinstall来安装】

 

[root@nagios~server nagios-cn-3.2.3]# ./configure --prefix=/usr/local/nagios

【指定nagios的安装目录】

在配置完成之后会有如下提示:


创建nagios用户和用户组:

# useradd nagios

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

查看nagios 目录的权限

# ll -d /usr/local/nagios/


# make all



# make install


# make install-init


# make install-commandmode


# make install-config


#make install


【这是nagios的安装目录】


# chkconfig --add nagios

 

# chkconfig --level 35 nagios on

 

# chkconfig --list nagios


1.2.验证程序是否被正确安装

切换目录到安装路径(这里是/usr/local/nagios),看是否存在etcbinsbinsharevar 这五个目录,如果存在则可以表明程序被正确的安装到系统了。Nagios 各个目录用途说明如下:


1.3下面安装nagios的插件

# wget nagios-plugins-2.0.3.tar.gz

#tar -zxvf nagios-plugins-2.0.3.tar.gz

#cd nagios-plugins-2.0.3

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

#make && make install



二、配置nagios

nagios的主配置文件在:


nagioshttp虚拟主机的方式发布:


这个文件定义了nagios的用户和密码,一会里面指定登陆nagios的时候需要用到


但是这个里面的密码我们不知道,所以干脆自己再创建一次:


测试一下,人家的配置文件有没有语法错误:

[root@nagios~server etc]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg


没有语法错误的话,就启动nagios,因为给http新加了虚拟主机,所以http也要重启。


【在重启apache的时候,虽然已经成功但是还是出现了一些问题】

原因:这个问题应该是没有在 /etc/httpd/conf/httpd.conf 中设定 ServerName。所以apache会用主机上的名称来取代,首先会去找 /etc/hosts 中有没有主机的定义。

解决办法:

1)可以设定httpd.conf文件中的 ServerName,如下:ServerName localhost:80             

2)在 /etc/hosts 中填入自己的主机名称 bogon,如下:127.0.0.1 nagios~server(用户名称)


实验结果:


【输入刚才设定的密码】



nagioscacti最大的不同是时间点时间段的区别。

2.2自己定制nagios


上面的localhost.cfg 就是 nagios.cfg里面指定的。也就是我们刚才在网页上看到的东西的根源。


我们不用人家的localhost了,自己来写一个。


注释掉:


然后再添加下面两行:


可以借用一下localhost.cfg的模板:


在命令行模式下按dgg 就可以从光标位置到文件开始,这部分的数据。

我们在这个文件里定义一个主机和一个组:

dG删除光标到文件尾之间的内容。


再用localhost.cfg创建一个service.cfg文件:

(其实就是把localhost.cfg的内容拆成了两部分)

只留下含service那部分。



实验结果:


三、给自定义的nagios加台主机,再给所加的主机开个服务,然后用nagios去监控所加主机的所开的这个服务

3.1再开一台虚拟机,然后安装mysql服务



这里的数据库名字,授权的数据库名字,以及密码,都是一会儿监控要用到的。

nagios的服务端上检测一下,能不能监控到这个服务:


nagios就是根据这个命令的返回值来判断被检控的主机的服务是否好着

 

3.2.配置nagios使其监控上面主机的上面服务

(1).设置执行的命令的格式


添加下面的行,这是一会儿service.cfg里面要用到的命令。

-u 数据库的用户   -p 数据库用户使用的密码  -d 要访问的是哪个数据库。

$HOSTNAME$提取的是下面的service的结构体中的”host_name”的值,会根据这个值去host结构体中找对应的IP


command结构体里面用的命令都是这里面的:


2配置要监控的服务:


上面的hostname必须要和你定义的主机的结构体里面的hostname一致。

check_command 会掉用上面定义的命令,!后面接的是参数。

上面的“local_service”是用的模板:


【这还定义了一个http服务】



这里面指定了local-service用的配置模板是generic-servicelocal-service的设定会覆盖generic-service里面的设定。同理你自己定义的service里面的设定会覆盖local-service里面的设定,他们是一层一层覆盖的。

上面还指定了最多尝试次数是分钟

正常检测间隔是5分钟

如果失败,下一次检测的间隔是1分钟

(3).配置监控的主机




(4).测试配置文件们是否有错误:

[root@nagios~server nagios]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 

实验结果:




我把taishiji上的mysql关闭之后就出现了下面效果:

mysql已经是紧急的了:



四、通过nrpe监控远程主机上的磁盘,CPU,内存等信息


被监控端(我的taishiji

安装nagios插件

[root@Dong ~]# tar -zxvf nagios-plugins-2.0.3.tar.gz 

[root@Dong ~]# cd nagios-plugins-2.0.3

[root@Dong nagios-plugins-2.0.3]# ./configure 

[root@Dong nagios-plugins-2.0.3]# make

[root@Dong nagios-plugins-2.0.3]# make install

安装完之后:


2.安装nrpe

#下载nrpe-2.15.tar.gz

[root@Dong ~]# tar -zxvf nrpe-2.15.tar.gz 


[root@Dong nrpe-2.15]# yum install -y openssl-devel

configure的结果:


一会儿要在/etc/service上添加这个port 5666

NRPE的用户要是nagios 所以在系统上建立一个这个用户:



[root@Dong nrpe-2.15]# make all

make all的结果


提示让我们读NRPE.pdf


根据文档还需要做如下步骤:


nrpe守护进程安装在xinetd下面:

[root@Dong nrpe-2.15]# make install-xinetd



[root@Dong xinetd.d]# yum install -y xinetd

[root@Dong xinetd.d]# /etc/init.d/xinetd start

Starting xinetd:                                           [  OK  ]

这样nrpe也就启动了。


修改nrpe demon 的配置文件:


我们只需要修改check_disk那一行。因为我们没有hda1磁盘。你也可以改成任意你想监控且存在的分区。



【我查到本机上有一个sda1磁盘,所以我将hda1改为sda1,这里定义的命令在监控端才可以用,如果这里没有定义的命令在监控端是调用不到的】

这里-w的意思是warnning   -ccritical紧急,,就需要发出警报了

disk为例,使用量超过80%就是剩余20%的时候就会报警,剩10%的时候就会发送紧急报警

这里面的命令(绿色的部分),都是在下面这个目录里有的:

 

[root@Dong libexec]# /etc/init.d/xinetd restart

3监控端(nagios,nagios~server

1.安装nrpe插件





监控端只需要装plugin不需要装deamon

测试你能否和被检控端的nrpe deamon连通:


出现这个结果就代表正确

4.创建command结构体



5.定义host结构体

刚才我们已经定义过foundation11那个结构体了这里就不重复了


6.定义service结构体

A


这个就在nagiosserver的命令行里执行:


效果是一样的

看监控结构和实际被监控端taishiji的结果基本一致:


我在linux监控端的nrpe.cfg 文件中定义的command命令中check_disk命令查看的就是sda1磁盘的使用状况

B:


和下面的对应:



C:



在被监控端可以查看:


D:



E



测试一下上面的配置是否正确:

[root@nagios~server objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 


7.实验结果:


上面taishiji上多出来的服务就是我们通过nrpe来监控的远程主机的服务

4.默认是以邮件的方式发送警告:

首先一定要开启安装sendmail,并且开启sendmail

[root@nagios~server mail]# yum install sendmail -y

[root@nagios~server mail]# /etc/init.d/sendmail start

 

这里面存的是有紧急情况时的联系人:nagios@localhost  你也可以改成别的邮箱

只要在/var/spool/mail目录下有的名字,都是可用的邮箱

 

看邮件:


5.发邮件到QQ邮箱

5.1首先给报警发送的邮箱发送一封邮件,看是否可以收到邮件


结果如下所示:


5.2.被检控端设置一下警告和紧急的条件




5.3监控端重新设置联系人邮箱



重启nagios服务


5.4实验结果


6.报警发微信消息  【待续】

① 注册一个微信公众帐号

7.cacti 和 nagios整合

7.1安装npc (nagios plugin for cacti)

基础环境

[root@nagios~server cacti]# yum localinstall rrdtool-perl-1.3.8-6.el6.x86_64.rpm  -y

[root@nagios~server cacti]# yum install -y perl-CGI

#下载npc-2.0.4.tar.gz

配置安装npc

[root@nagios~server cacti]# tar -zxvf npc-2.0.4.tar.gz -C /var/www/html/cacti/plugins

 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章