一、常见开源监控
cacti
nagiox
zabbix
之所以选用开源监控,主要是为了节约成本
二、监控方式分类
基于snmp实现
支持snmp协议的网络设备,都可以通过snmp实现监控,但是只可以获取数据,不支持存储
基于agent
在snmp的协议基础上开发的客户端,如cacti,nagios,zabbix
基于ssh
shell,python开发的脚本
三、监控组成
数据采集
保存数据
数据展示
书籍分析及报警
四、什么是cacti
网络管理(如主机负载、网络流量等的监控)是系统管理岗工作人员日常工作的一个重要组成部分,许多厂商为此提供了各自的解决方案。早期开源网管软件中比较著名的其中之一的MRTG,是一款使用perl开发的,通过SNMP协议实现管理工作站与设备代理进程间的通讯,以完成对设备的管理和运行状态的监视。MRTG安装配置简单、图形界面直观,因为广受当时网络管理人员的喜爱,也为笔者早期的网络管理工作立下了汗马功劳。
但MRTG也有许多固有的缺点,如:使用文本式的数据库,数据不能重复使用;只能按日、周、月、年来查看数据;每图只能画两个DS(一条线、一个块);每取一次数据即需要绘图一次,浪费系统资源;同时,它也没有提供管理功能。
有鉴于此,MRTG的作者后来另外又开发了一个工具,即rrdtool。rrdtool是一个性能优良的数据记录器,同时也是一个功能强大的绘图引擎。它使用rrd的数据存储格式,使用得数据可以重复使用;在绘图方面,它可以定义任意时间段进行绘图,能绘出多个DS。但它也有自己的缺点:虽然提供了强大的数据存储及绘图功能,但rrdtool却没有提供类似于MRTG中集成的数据采集功能;同时,它提供了过多的参数,以至于在命令行界面使用起来极为不便;此外,rrdtool也没有提供管理功能。于是cacti应运而生。
简单来说,Cacti就是rrdtool的一个forefront,它内置了快速的获数据取工具、优秀的绘图模板以及许多设计精良的数据获取脚本,从而可以通过结合rrdtool强大的数据抓取、数据存储和绘图功能,轻松实现主机负载、网络流量等信息的走势图的绘制。
五、cacti的工作流程
下面我们来简单的说明一下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监控组成
主要术语:
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的信息;
十一、部署
更新官方yum源
rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
改主机名 hostname zabbix-server logout
安装zabbix
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent mysql-server mysql
安装zabbix两个命令,便于调试
yum -y install zabbix-get zabbix-sender
配置数据库,初始化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
基础配置
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组态-主机 开启
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
编辑客户端配置文件
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
转载于:https://blog.51cto.com/weilantiankong/1759821