1.监控概述
1.1 为何需要监控?
- 在一个 IT 环境中会存在各种各样的设备,例如,硬件设备、软件设备,其系统的构成也是非常复杂的,通常由如图 1-1 所示的模型构成。
多种应用构成复杂的 IT 业务系统,保证这些资源的正常运转,是一个公司 IT 部门的职责。而要让这些应用能够稳定地运行,则需要专业 IT 人员进行设计、架构、维护和调优。在这个过程中,为了及时掌控基础环境和业务应用系统的可用性,需要获取各个组件的运行状态,如 CPU 的利用率、系统的负载、服务的运行、端口的连通、带宽流量、网站访问状态码等信息。而这一切都离不开监控系统。
1.2 监控系统实现
一个监控系统的组成大体可以分为两部分:数据采集部分(客户端)和数据存储分析告警展示部分(服务器端)。这两部分构成了监控系统的基本模型。
对于采集到的监控数据,可以将其存储到数据库或者文本或者其他方式,具体采用哪一种,应根据实际需求来决定。怎么规划监控系统的架构设计呢?下面将详细分析。
对于一般的监控环境,被监控的节点不多,产生的数据较少,采用 C/S(Client/Server,客户端/服务器端)架构就足够了,如图 1-2 所示,这种架构适合于规模较小、处于同一地域的环境。
1.3 监控系统的开源软件现状
Cacti
:(英文含义为仙人掌)是一套基于 PHP、MySQL、SNMP 和 RRDtool 开发的网络流量监测图形分析工具。它通过 snmpget 来获取数据,使用 RRDtool 绘图,但使用者无须了解 RRDtool 复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与 LDAP 结合进行用户认证,同时也能自定义模板,在历史数据的展示监控方面,其功能相当不错。Cacti 通过添加模板,使不同设备的监控添加具有可复用性,并且具备可自定义绘图的功能,具有强大的运算能力(数据的叠加功能)。数据采集,数据保存功能强大。Nagios
:Nagios 的功能侧重于监控服务的可用性,能及时根据触发条件告警。Ganglia
:Ganglia 是一个跨平台的、可扩展的、高性能的分布式监控系统,如集群和网格。它基于分层设计,使用广泛的技术,用 RRDtool 存储数据,具有可视化界面,适合于对集群系统的自动化监控。其精心设计的数据结构和算法使得监控端到被监控端的连接开销非常低。目前已经有成千上万的集群正在使用这个监控系统,可以轻松地处理 2000 个节点的集群环境。该软件的部分截图。zabbix
:Zabbix 是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的 Agent(代理),也可以支持 SNMP、IPMI、JMX、Telnet、SSH 等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统所不能比的。相对来说,它的总体功能做得非常优秀。
2、zabbix 介绍
2.1 zabbix 简介
Zabbix 是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,由一个国外的团队持续维护更新,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。
zabbix 是一个基于 Web 界面的,提供分布式系统监控以及网络监视功能的企业级的开源解决方案。
zabbix 能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix 主要由两部分构成:zabbix server
和 zabbix agent
,可选组建 zabbix proxy
zabbix server 可以通过 SNMP,zabbix agent,fping 端口监视等方法对远程服务器或网络状态完成监视,数据收集等功能。同时支持 Linux 以及 Unix 平台,Windows 平台只能安装客户端。
2.2 Zabbix 架构
2.3 Zabbix 功能
⑴数据收集
- 可用性
- 支持SNMP(包括主动轮询和被动获取,也称简单网络管理协议),IPMI(智能平台管理接口)监控
- 自定义检查
- 按照自定义的间隔收集需要的数据
- 通过server/proxy+agents来执行
⑵灵活的阈值定义
- 可以非常灵活的定义问题阈值,称之为触发器从后端数据库获取参考
⑶高度可配置化的告警
- 可根据递增机制,接收方和媒介类型自定义发送告警通知
- 使用宏变量可以使告警通知更加高效有用
- 自动相应动作可包含远程命令
⑷实时图表绘制
- 使用内置图表绘制功能可以将监控项的内容实时绘制成图表
⑸Web监控功能
- Zabbix可以追踪模拟鼠标在Web网站上的点击操作,来检查Web的功能和响应时间
⑹历史数据存储
- 数据库数据
- 可配置历史数据
- 内置数据管理机制(housekeeping)
⑺配置简单
- 将被监控对象添加为主机
- 在数据库中获取主机进行监视
- 应用模板来监控设备
⑻使用模板
- 在模板中分组检查
- 模板可以关联其他模板
⑼网络发现
- 自动发现网络设备
- 监控代理自动注册
- 发现文件系统,网络接口和SNMP OID值
⑽功能强大,易于扩展的agent
- 部署在被监控对象上
- 支持Linux和Windows
⑾为复杂环境准备
- 使用Zabbix proxy代理服务器,使得远程监控更简单
更多功能请查看 http://www.zabbix.com/documentation.php
2.4 Zabbix 优缺点
- 优点
1、开源,无软件成本投入
2、Server 对设备性能要求低
3、支持设备多,自带多种监控模板
4、支持分布式集中管理,有自动发现功能,可以实现自动化监控
5、开放式接口,扩展性强,插件编写容易
6、当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动从 server 端去下载需要监控的 item 然后取数据上传到 server 端。这种方式对服务器的负载比较小。
8、Api 的支持,方便与其他系统结合 - 缺点
需在被监控主机上安装 agent,所有数据都存在数据库里,产生的数据据很大,瓶颈主要在数据库。
2.5 Zabbix 监控原理
Zabbix 通过 C/S 模式采集数据,通过 B/S 模式在 web 端展示和配置。
被监控端
:主机通过安装 agent 方式采集数据,网络设备通过 SNMP 方式采集数据
Server 端
:通过收集 SNMP 和 agent 发送的数据,写入数据库(MySQL,ORACLE 等),再通过php+apache 在 web 前端展示。
Zabbix 运行条件
Server:Zabbix Server 需运行在 LAMP(Linux+Apache+Mysql+PHP)环境下(或者 LNMP),对硬件要求低。
Agent:目前已有的 agent 基本支持市面常见的 OS,包含 Linux、HPUX、Solaris、Sun、windows
SNMP:支持各类常见的网络设备
SNMP(Simple Network Management Protocol,简单网络管理协议
2.6 监控类型
硬件监控
: 适用于物理机、远程管理卡(iDRAC),IPMI(只能平台管理接口)
ipmitools
:,MegaCli(查看 Raid 磁盘)
系统监控
: 监控 cpt:lscpu、uptime、top、vmstat 1 、mpstat 1、htop
监控内存
: free -m、
监控硬盘
:df -h、iotop
监控网络
:iftop、netstat、ss
应用服务监控
:**nfs、MySQL、nginx、apache、php、rsync
所有监控范畴,都可以整合到 Zabbix 中
硬件监控
:Zabbix、IPMI、lnterface
系统监控
:Zabbix、Agent、Interface
Java 监控
:Zabbix、JMX、lnterface
网络设备监控
:Zabbix、SNMP、lnterface
应用服务监控
:Zabbix、Agent、UserParameter
MySQL 数据库监控
:percona-monitoring-plulgins
URL 监控
:Zabbix Web 监控
2.7 Zabbix 相关术语
主机(host)
:要监控的网络设备,可由 IP 或 DNS 名称指定;
主机组(host group)
:主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;
监控项(item)
:一个特定监控指标的相关的数据;这些数据来自于被监控对象;item 是 zabbix进行数据收集的核心,相对某个监控对象,每个 item 都由"key"标识;
触发器(trigger)
:一个表达式,用于评估某监控对象的特定 item 内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";
事件(event)
:触发一个值得关注的事情,比如触发器状态转变,新的 agent 或重新上线的 agent的自动注册等;
动作(action)
:指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;
报警升级(escalation)
:发送警报或者执行远程命令的自定义方案,如每隔 5 分钟发送一次警报,共发送 5 次等;
媒介(media)
:发送通知的手段或者通道,如 Email、Jabber 或者 SMS 等;
通知(notification)
:通过选定的媒介向用户发送的有关某事件的信息;
远程命令(remote command)
:预定义的命令,可在被监控主机处于某特定条件下时自动执行;
模板(template)
:用于快速定义被监控主机的预设条目集合,通常包含了 item、trigger、graph、screen、application 以及 low-level discovery rule;模板可以直接链接至某个主机;
应用(application)
:一组 item 的集合;
web 场景(web scennario)
:用于检测 web 站点可用性的一个或多个 HTTP 请求;
前端(frontend)
:Zabbix 的 web 接口;