一、常见开源监控

cacti

nagiox

zabbix

之所以选用开源监控,主要是为了节约成本


二、监控方式分类


  1. 基于snmp实现

    支持snmp协议的网络设备,都可以通过snmp实现监控,但是只可以获取数据,不支持存储

  2. 基于agent

    在snmp的协议基础上开发的客户端,如cacti,nagios,zabbix

  3. 基于ssh

    shell,python开发的脚本


三、监控组成

  1. 数据采集

  2. 保存数据

  3. 数据展示

  4. 书籍分析及报警


四、什么是cacti



网络管理(如主机负载、网络流量等的监控)是系统管理岗工作人员日常工作的一个重要组成部分,许多厂商为此提供了各自的解决方案。早期开源网管软件中比较著名的其中之一的MRTG,是一款使用perl开发的,通过SNMP协议实现管理工作站与设备代理进程间的通讯,以完成对设备的管理和运行状态的监视。MRTG安装配置简单、图形界面直观,因为广受当时网络管理人员的喜爱,也为笔者早期的网络管理工作立下了汗马功劳。


但MRTG也有许多固有的缺点,如:使用文本式的数据库,数据不能重复使用;只能按日、周、月、年来查看数据;每图只能画两个DS(一条线、一个块);每取一次数据即需要绘图一次,浪费系统资源;同时,它也没有提供管理功能。


有鉴于此,MRTG的作者后来另外又开发了一个工具,即rrdtool。rrdtool是一个性能优良的数据记录器同时也是一个功能强大的绘图引擎。它使用rrd的数据存储格式,使用得数据可以重复使用;在绘图方面,它可以定义任意时间段进行绘图,能绘出多个DS。但它也有自己的缺点:虽然提供了强大的数据存储及绘图功能,但rrdtool却没有提供类似于MRTG中集成的数据采集功能;同时,它提供了过多的参数,以至于在命令行界面使用起来极为不便;此外,rrdtool也没有提供管理功能。于是cacti应运而生。

简单来说,Cacti就是rrdtool的一个forefront,它内置了快速的获数据取工具、优秀的绘图模板以及许多设计精良的数据获取脚本,从而可以通过结合rrdtool强大的数据抓取、数据存储和绘图功能,轻松实现主机负载、网络流量等信息的走势图的绘制。


五、cacti的工作流程


c2


下面我们来简单的说明一下Cacti的工作流程,

  • 步骤一,snmp协议收集远程服务器的数据

  • 步骤二,将snmp收集的数据内容保存到rrd数据库中

  • 步骤三,若用户查看某台设备上的流量或其它状态信息

  • 步骤四,在mysql数据库中查找该设备对应的rra数据库文件的名称

  • 步骤五,通过rrdtool命令进行绘图即可


 Cacti的实例应用

1)网络设置
2)主机系统
(1)网络接口流量(进与出的带宽)
(2)监控CPU的负载、内存等等
(3)监控磁盘的空间、进程数等等
.........................................等等

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


六、什么是nagios

     nagios是系统管理人员和运维监控人员必须的工具之一,利用nagios可以监控本地或者远程主机资源,

如磁盘空间,系统负载等情况,也可以监控各种应用,例如HTTP服务,FTP服务等。当主机或服务出现故障

Nagios可以通过邮件手机飞信等形式在第一时间通知系统维护人员。

同时,Nagios可以提供一个可选的基于浏览器的Web界面,以方便系统管理员查看系统的运行状态、网络状态

各种系统问题以及日志异常。


七、Nagios结构与特点

     从结构上讲,Nagios可分为核心和插件两个部分。Nagios核心部分只提供了少部分的监控功能,因此要搭建

一个完整的IT监控管理系统,用户还需要为Nagios安装相应的插件。

     特点:1>监视本地或远程主机资源(内存、进程、磁盘)

           2>监视网络服务资源(HTTP、PING、FTP、SMTP、POP3)

           3>允许用户编写自己的插件来监控特定的服务

           4>当监控对象出现异常可以通过邮件或者短信报警

           5>可以事先定义事件处理程序,当主机或者服务出现故障时自动调用指定的处理程序

           6>通过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原理以及工作原理(nagios本身并不具有太多功能,都是靠插件实现)





九、cacti和nagio比较


cacti:在监控方面有良好的绘图,cacti在流量和图型塑造上要强于nagios,但是在故障分析上延迟性大,而且报警机制薄弱,不适合大规范监控场景。


nagios :适合监视大量服务器上面的大批服务是否正常, 重点并不在图形化的监控, 其集成的很多功能例如报警,都是 cacti 没有或者很弱的。但在绘图以及图型塑造方面精细度比cacti要弱,不适合大规模监控场景。


所以,企业中通常将两者结合使用。


十、zabbix

优点

  • 兼具cacti和nagios的优点,集数据采集、数据存储、数据展示及报警功能为一体;

  • 数据存储使用RDBMS,如MySQL等,可存储大量历史数据;

  • 可以分布式部署,适合大规模监控场景;

Zabbix基本功能

数据采集方式:zabbix agent,agent(active),SNMP,SSH等;

数据存储方式:RDBMS,如MySQL,Pgsql等;

数据展示方式:php,web,gui;

报警功能:支持报警升级;


一个完整的zabbix监控组成

wKioL1N08VKzPW6dAANWLsNnJHI264.jpg

主要术语


  • Host主机:要监控的网络设备;

  • Host Group主机组:主机的逻辑容器,可包含主机和模板;通常用于给用户或用户组指派监控权限时使用;

  • Item监控项:一个特定监控指标的相关数据,是数据采集的核心,每个item都由key进行唯一标识;

  • Trigger触发器:用于为监控项item所收集的数据定义阈值,触发器的状态在OK和PROBLEM间不断切换;

  • Event事件:触发器的状态转变,新的agent或重新上线的agent的自动注册等,都会产生event;

  • Action动作:指对于特定event实现定义的处理方法,由通知内容、条件、操作这3部分组成;

  • Escalation报警升级:发送警报或执行远程命令的自定义方案;

  • Media Type媒介:发送通知的手段或通道,如Email,Jabber或SMS等;

  • Notification通知:通过选定的media向用户发送的有关某event的信息;


十一、部署

  1. 更新官方yum源

    rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

  2. 改主机名   hostname zabbix-server     logout

  3. 安装zabbix

    yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mysql-server mysql

  4. 安装zabbix两个命令,便于调试

    yum -y install zabbix-get zabbix-sender

  5. 配置数据库,初始化zabbix数据库

    service mysqld start

    mysql -e "create database zabbix character set utf8 collate utf8_bin;"

    mysql -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';"

    mysql -e "flush privileges;"

    cd /usr/share/doc/zabbix-server-mysql-2.4.5/create/

    mysql -uroot zabbix < schema.sql   按顺序执行

    mysql -uroot zabbix < p_w_picpaths.sql

    mysql -uroot zabbix < data.sql 

  6. 基础配置

    vi /etc/zabbix/zabbix_server.conf 修改db连接密码为zabbix

    改php时区为 date.timezone = Asia/Chongqing

    启动apache 访问页面 service httpd start 并setup 用户名密码Admin zabbix

    [root@zabbix-server create]# chkconfig mysqld on
    [root@zabbix-server create]# chkconfig zabbix-server on
    [root@zabbix-server create]# chkconfig zabbix-agent on
    [root@zabbix-server create]# chkconfig httpd on
    [root@zabbix-server create]# service zabbix-server start

  7. 组态-主机 开启

  8. AGENT部署

    rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

    yum install zabbix-agent zabbix-sender zabbix-get -y

  9. 编辑客户端配置文件

    vi /etc/zabbix/zabbix_agentd.conf   注意改2个server指向服务端IP 一个是服务端主动取一个是被动上报模式,改后重启服务 service zabbix-agent restart

    zabbix_get -s 192.168.1.166 -k system.hostname 测试是否能获取到客户端主机名

    zabbix_get -s 192.168.1.166 -k agent.ping 返回1正常

10.添加主机,并加入到组,添加基本监控项模版。

查看日志 tail -n500 -f /var/log/zabbix/zabbix_server.log



参考:

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

http://freeloda.blog.51cto.com/2033581/1308140

http://024mj.blog.51cto.com/10252785/1676396