监控平台解密:IT系统风险感知和洞察
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.4 监控系统工作原理

数据中心各类监控系统,主体模块一般可分为:代理层、协议层、汇聚层、核心层、展现层。以目前市面上比较流行的日志监控解决方案ELK(Elasticsearch+Logstash+Kibana)为例,其中,Logstash是工作于代理层和汇聚层的用于日志数据收集的代理(Agent);Elasticsearch是工作于核心层的开源的分布式搜索引擎,提供日志数据检索、分析、存储;Kibana是工作于展现层的开源免费的日志分析展示Web界面,用于监控数据可视化。同时,监控系统还需要有对接告警网关的告警模块、用户和权限管理模块等,监控系统通用架构如图1-7所示。

图1-7 监控系统通用架构

1.代理层

监控数据采集一般有无监控代理(Agentless)和监控代理(Agent)两种方式。

无监控代理大多是通过被监控组件端(监控代理端)自带的协议,如Windows操作系统使用WMI、数据库使用JDBC、PC Server使用管理口配置Trap等,由监控代理端向服务端推送或有监控服务端拉取监控数据的监控工作模式。

监控代理则是在监控代理端部署监控代理,如Zabbix的Zabbix Agent、Splunk的Forward等,通过启用监控代理服务与监控服务端交互监控数据的监控工作模式。其中,心跳模块保障监控代理端与服务端的数据连接,当心跳丢失时,产生事件告警,通知监控管理员及时恢复监控代理状态。

2.汇聚层

目前市面上大多是分布式监控系统(Distributed Monitor System),都设计了分布节点,作为将采集完成的数据汇聚送入监控核心的前置,其主要实现如下功能。

(1)数据预处理、缓冲和分流主服务器压力。数据预处理操作前置,将采集数据中的无用脏数据丢弃,计算、分类、格式化采集的数据,以便于后续监控核心模块使用。在数据汇聚模块日常收集数据后,将数据缓存在本地,间歇性地输送给监控主服务器,缓冲主服务器压力。监控数据汇聚模块在大多数监控中作为一个数据前置节点,其通常是一个可选项,即可以跳过数据汇聚模块直接将监控数据送达监控核心,但监控数据汇聚模块的出现有利于大幅降低监控核心模块的系统资源开销。

(2)分布式设计,便于监控系统灵活伸缩。监控事件(告警)集中管理和监控数据分布采集是互联网架构和微服务设计思潮下的产物。与传统架构相比,分布式架构将模块拆分并使用接口通信,降低了模块间的耦合性,使得系统可以更灵活地架设和部署;更利于整个系统的横向扩展。当系统性能遇到瓶颈时,可以在不触及监控主服务器架构的情况下,方便地以新增节点的形式扩充监控系统整体性能容量。

(3)防火墙锚点,安全隔离,如图1-8所示,企业为了保障自身网络安全,防火墙是必不可少的网络安全设备。特别是在大型数据中心里,网络和机房场地更加复杂,可以通过在防火墙上配置策略,允许或限制网段之间的数据传输。监控软件提供的代理模块,使得监控服务端通过访问防火墙背后的代理服务器,监测非本网段下的各IT组件,仅需要在该防火墙上设置有限的策略,允许数据通过。如Zabbix监控提供的Zabbix Proxy。Zabbix Proxy是无须本地管理员即可集中监控远程位置、分支机构和网络的理想解决方案。

图1-8 防火墙锚点

3.核心层

监控系统核心与监控数据库共同组成了整个系统的大脑,不同的监控系统对数据的处理逻辑、算法及存储方式有所不同,但概括起来需要完成如下工作。

(1)数据运算与裁剪。数据在被采集后,一般以报文的形式送入监控系统,系统截取有效原始数据字段。针对特定数据需要做运算后才能得到,如Linux净内存使用率计算(详见4.4.2节)。

监控系统上存放的数据离当前时间越久远,时效性也就越差,而存储空间又是有限的,没必要把有限的空间用于无用的数据上。IBM Tivoli ITM/ITCAM设计有分表、时表、日表,通过裁剪代理(SY)对数据做裁剪,数据的颗粒度随时间越长越粗略。

(2)阈值触发。监控值常见的有状态(如是与非、红黄绿、是否可达等)和数值(如80GB、20%、交易笔数、交易延迟等)两类,监控系统可针对监控值设置阈值,即告警事件触发条件。

如果操作系统比较先进,可能还有性能容量的动态阈值功能,可基于不同的时间点对监控值动态地适配生成告警事件。

(3)时间控制。时间控制是监控系统中重要的调度触发模块,监控数据每隔多长时间采集、在什么时间段对指标监控、什么时间点触发监控策略,都需要用到时间控制。

(4)配置管理。配置管理是用于存储监控软件监控策略、用户权限等的监控配置数据库。

(5)性能管理。性能管理是用于存储监控组件性能容量数据的监控性能数据库。

(6)事件管理。事件管理是用于存储监控异常事件告警的监控事件数据库。

(7)告警模块。当监控软件检测到异常时,由监控告警模块触发告警。告警的形式可以是短信、邮件、微信,有的告警还集成了电话语音包。但这类告警绝大多数是单向的,监控告警模块仅完成事件通知,至于受理岗是否接到了告警,是否处理了事件,业务是否恢复正常,都不是监控告警模块所关注的。为解决这些问题,部分监控软件设计了移动终端App,使用App接事件单、反馈处理进度、汇报处理结果。

(8)命令执行。部分监控软件也集成了自动化模块,可以使用对被纳管设备进行操作。例如,远程命令(Telnet某台设备)、监控自愈(如Zabbix的Action)等。

4.展现层

与监控数据库对应,监控系统展示模块一般包括:拓朴管理与展示、用户组权限管理、设备配置管理、性能管理配置及报表、策略管理配置及报表、事件管理配置及报表等模块。