做一名运维工程师,监控恐怕是日常生活中必不可少的活了,在企业中的监控,大多是用开源软件来实现的,(为什么要用开源?省钱呗..呵 呵) 而且开源软件也有着非常优秀的表现,其中著名的有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)监控网络服务(SMTP、POP3、HTTP、NNTP、PING等) 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则需要同时安装在服务器端和客户端 。 用marion老师所绘制的一幅图片,可清晰展示ngagios的工作原理 有朋友疑问,既然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环境后
下面开始安装绘图工具 rrdtool..具体用途请参照上文,笔者在此不过多解释了。 所有的rrdtool的安装包如上,因为包太多,笔者就选用rpm包来安装了.笔者将以上包的路径放置在 /root/rrdtool/ 下 ![rrdtool rrdtool 300x76 手把手实现企业级开源监控软件cacti+nagios+ntop整合[原创]](http://www.linuxwind.com/wp-content/uploads/2011/01/rrdtool-300x76.jpg)
| 其中主要用到的是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 |
因网络流量等信息的统计需要通过SNMP协议实现,经过SNMP抓取数据并存储,此过程在rhel5.4上所需要的安装包有以下几个:
| 因为其中有比较复杂的依赖关系,而且rhel5.4的安装包自带有实现该功能的rpm包,笔者使用yum来安装 yum install net-snmp net-snmp-libs net-snmp-utils net-snmp-devel 安装完成后启动snmpd服务 service snmpd start #启动snmpd服务 chkconfig snmpd on #使其开机自动启动 service snmptrapd start #启动snmptrapd服务 chkconfig snmptrapd on #使其开机自动启动 正常启动后用 netstat -unlp 查看端口 如果有以下两项,则表示正常启动 |
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.
好了 nagios已经成功安装,下面编译、安装ntop
★★下面是对这三者的整合.把nagios和ntop 整合到cacti中 先让cacti支持插件功能
先整合ntop.
- 首先去下载cacti的ntop插件,而后解压至cacti的插件目录:
- # tar zxvf ntop-0.1.tar.gz -C /var/www/html/cacti/plugins/
- 接着配置cacti的主配置文件,启用此插件:
- # vim /var/www/html/cacti/include/config.php
- 添加如下内容:
- $plugins[] = 'ntop';
- 接下来到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展示出来。先下载npc源码包 ,官网不知为何不让下载了,直接google搜索npc-2.0.4.tar.gz,有个论坛有下载的。下载完成后来到所npc-2.0.4.tar.gz 所在的目录 tar zxvf npc-2.0.4.tar.gz mv npc /var/www/html/cacti/plugins/ vi /var/www/html/cacti/include/config.php ## 在该文件中的"$plugins = array()"后增加如下一行内容 $plugins[] = 'npc'; tar zxvf json-1.2.1.tgz && cd json-1.2.1 #npc需要json来支持某些功能 /usr/bin/phpize ./configure make make install 之后用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中设置如图所示 安装:先将相应插件文件放到plugin,然后需要: vi /var/www/html/cacti/include/config.php ## 在该文件中的"$plugins = array()"后增加如下一行内容 //$plugins[] = 'npc'; 这样先注释掉,才可以安装上npc的.否则,不能在web页面的插件管理页面看到npc插件. 应当将ndo2db.cfg里面的 db_name=cacti; db_prefix=npc_; |
这篇也忙活好多天,笔者用的大多都是最新版本,如有错误的地方请指出,笔者尽快修改,多谢各位朋友多多支持, 此文凝聚笔者不少心血请尊重笔者劳动,转载请注明出处。http://www.unixwind.com
![mysql mysql 300x236 手把手实现企业级开源监控软件cacti+nagios+ntop整合[原创]](http://www.linuxwind.com/wp-content/uploads/2011/01/mysql-300x236.jpg)
![cacti cacti 300x261 手把手实现企业级开源监控软件cacti+nagios+ntop整合[原创]](http://www.linuxwind.com/wp-content/uploads/2011/01/cacti-300x261.jpg)
![nagios nagios1 300x151 手把手实现企业级开源监控软件cacti+nagios+ntop整合[原创]](http://www.linuxwind.com/wp-content/uploads/2011/01/nagios1-300x151.jpg)
![ntop ntop 300x211 手把手实现企业级开源监控软件cacti+nagios+ntop整合[原创]](http://www.linuxwind.com/wp-content/uploads/2011/01/ntop-300x211.jpg)
![ntop1 ntop1 300x98 手把手实现企业级开源监控软件cacti+nagios+ntop整合[原创]](http://www.linuxwind.com/wp-content/uploads/2011/01/ntop1-300x98.jpg)
![ntop2 ntop2 300x74 手把手实现企业级开源监控软件cacti+nagios+ntop整合[原创]](http://www.linuxwind.com/wp-content/uploads/2011/01/ntop2-300x74.jpg)
![json json 300x134 手把手实现企业级开源监控软件cacti+nagios+ntop整合[原创]](http://www.linuxwind.com/wp-content/uploads/2011/01/json-300x134.jpg)
![ntop5 ntop5 300x187 手把手实现企业级开源监控软件cacti+nagios+ntop整合[原创]](http://www.linuxwind.com/wp-content/uploads/2011/01/ntop5-300x187.jpg)
![ntop6 ntop6 300x146 手把手实现企业级开源监控软件cacti+nagios+ntop整合[原创]](http://www.linuxwind.com/wp-content/uploads/2011/01/ntop6-300x146.jpg)
不错,正用的上,强大