监控系统工作原理
数据中心各类监控系统,主体模块一般可分为:代理层、汇聚层、核心层、展现层。以目前市面上比较流行的日志监控解决方案 ELK(Elasticsearch+Logstash+Kibana)为例,其中,Logstash 是工作于代理层和汇聚层的用于日志数据收集的代理(Agent);Elasticsearch 是工作于核心层的开源的分布式搜索引擎,提供日志数据检索、分析、存储;Kibana 是工作于展现层的开源免费的日志分析展示 Web 界面,用于监控数据可视化。同时,监控系统还需要有对接告警网关的告警模块、用户和权限管理模块等。
1、代理层
监控数据采集一般有 无监控代理(Agentless) 和 监控代理(Agent) 两种方式。
无监控代理大多是通过被监控组件端(监控代理端)自带的协议,如 Windows 操作系统使用 WMI、数据库使用 JDBC、PC Server 使用管理口配置 Trap 等,由监控代理端向服务端推送或有监控服务端拉取监控数据的监控工作模式。
监控代理则是在监控代理端部署监控代理,如 Zabbix 的 Zabbix Agent、Splunk 的 Forward 等,通过启用监控代理服务与监控服务端交互监控数据的监控工作模式。其中,心跳模块保障监控代理端与服务端的数据连接,当心跳丢失时,产生事件告警,通知监控管理员及时恢复监控代理状态。
2、汇聚层
目前市面上大多是分布式监控系统,都设计了分布节点,作为将采集完成的数据汇聚送入监控核心的前置,其主要实现如下功能。
-
数据预处理、缓冲和分流主服务器压力。数据预处理操作前置,将采集数据中的无用脏数据丢弃,计算、分类、格式化采集的数据,以便于后续监控核心模块使用。在数据汇聚模块日常收集数据后,将数据缓存在本地,间歇性地输送给监控主服务器,缓冲主服务器压力。监控数据汇聚模块在大多数监控中作为一个数据前置节点,其通常是一个可选项,即可以跳过数据汇聚模块直接将监控数据送达监控核心,但监控数据汇聚模块的出现有利于大幅降低监控核心模块的系统资源开销。
-
分布式设计,便于监控系统灵活伸缩。监控事件(告警)集中管理和监控数据分布采集是互联网架构和微服务设计思潮下的产物。与传统架构相比,分布式架构将模块拆分并使用接口通信,降低了模块间的耦合性,使得系统可以更灵活地架设和部署;更利于整个系统的横向扩展。当系统性能遇到瓶颈时,可以在不触及监控主服务器架构的情况下,方便地以新增节点的形式扩充监控系统整体性能容量。
-
防火墙锚点,安全隔离,企业为了保障自身网络安全,防火墙是必不可少的网络安全设备。特别是在大型数据中心里,网络和机房场地更加复杂,可以通过在防火墙上配置策略,允许或限制网段之间的数据传输。监控软件提供的代理模块,使得监控服务端通过访问防火墙背后的代理服务器,监测非本网段下的各 IT 组件,仅需要在该防火墙上设置有限的策略,允许数据通过。如 Zabbix 监控提供的 Zabbix Proxy。Zabbix Proxy 是无须本地管理员即可集中监控远程位置、分支机构和网络的理想解决方案。
3、核心层
监控系统核心与监控数据库共同组成了整个系统的大脑,不同的监控系统对数据的处理逻辑、算法及存储方式有所不同,但概括起来需要完成如下工作。
-
数据运算与裁剪。数据在被采集后,一般以报文的形式送入监控系统,系统截取有效原始数据字段。针对特定数据需要做运算后才能得到。 监控系统上存放的数据离当前时间越久远,时效性也就越差,而存储空间又是有限的,没必要把有限的空间用于无用的数据上。IBM Tivoli ITM/ITCAM 设计有分表、时表、日表,通过裁剪代理(SY)对数据做裁剪,数据的颗粒度随时间越长越粗略。
-
阈值触发。监控值常见的有状态(如是与非、红黄绿、是否可达等)和数值(如 80GB、20%、交易笔数、交易延迟等)两类,监控系统可针对监控值设置阈值,即告警事件触发条件。 如果操作系统比较先进,可能还有性能容量的动态阈值功能,可基于不同的时间点对监控值动态地适配生成告警事件。
-
时间控制。时间控制是监控系统中重要的调度触发模块,监控数据每隔多长时间采集、在什么时间段对指标监控、什么时间点触发监控策略,都需要用到时间控制。
-
配置管理。配置管理是用于存储监控软件监控策略、用户权限等的监控配置数据库。
-
性能管理。性能管理是用于存储监控组件性能容量数据的监控性能数据库。
-
事件管理。事件管理是用于存储监控异常事件告警的监控事件数据库。
-
告警模块。当监控软件检测到异常时,由监控告警模块触发告警。告警的形式可以是短信、邮件、微信,有的告警还集成了电话语音包。但这类告警绝大多数是单向的,监控告警模块仅完成事件通知,至于受理岗是否接到了告警,是否处理了事件,业务是否恢复正常,都不是监控告警模块所关注的。为解决这些问题,部分监控软件设计了移动终端 App,使用 App 接事件单、反馈处理进度、汇报处理结果。
-
命令执行。部分监控软件也集成了自动化模块,可以使用对被纳管设备进行操作。例如,远程命令(Telnet 某台设备)、监控自愈(如 Zabbix 的 Action)等。
4、展现层
与监控数据库对应,监控系统展示模块一般包括:拓朴管理与展示、用户组权限管理、设备配置管理、性能管理配置及报表、策略管理配置及报表、事件管理配置及报表等模块。
- 那些 Go 语言发展历史上的重大决策
- 从趋势到挑战,一站式解读操作系统运维和可观测性
- 百万级 Topic,腾讯云的 Apache Pulsar 稳定性实践
- Apache Doris 在思必驰的应用优化实践:海量语音通话数据下,实时、离线一体的数仓架构设计实践
- 爱数正式开源认知智能开发框架 KWeaver
- 运维智能化的三大关键技术
- “抄我的还‘反捅’我一刀”,Gary Marcus 发文驳斥图灵奖得主 Yann LeCun
- 当出海成为必选项,企业如何构建全场景全生态技术底座?
- 数智底座必备能力三:快速构建创新应用
- Docker 多阶段构建实战 (multi-stage builds)
- 工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(上)
- 经久不衰的设计定律是不要让我思考的设计
- 不要指望下一个像 GPT 这样的大型语言模型会民主化
- Java 近期新闻:Helidon Níma、Spring Framework、MicroProfile、MicroStream、Kotlin 和 Piranha
- 一文入门 jQuery
- C 学习 ---__libc_open 函数的原理
- 监控系统工作原理
- 甲骨文新微服务框架 Helidon Níma:使用虚拟线程实现高性能
- 【云原生 | 从零开始学 Kubernetes】二、使用 kubeadm 搭建 K8S 集群
- Elasticsearch 聚合学习之四:结果排序