监控系统工作原理

更新日期: 2022-09-25 阅读: 2.3k 标签: 数据

数据中心各类监控系统,主体模块一般可分为:代理层、汇聚层、核心层、展现层。以目前市面上比较流行的日志监控解决方案 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、核心层

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

  1. 数据运算与裁剪。数据在被采集后,一般以报文的形式送入监控系统,系统截取有效原始数据字段。针对特定数据需要做运算后才能得到。 监控系统上存放的数据离当前时间越久远,时效性也就越差,而存储空间又是有限的,没必要把有限的空间用于无用的数据上。IBM Tivoli ITM/ITCAM 设计有分表、时表、日表,通过裁剪代理(SY)对数据做裁剪,数据的颗粒度随时间越长越粗略。

  2. 阈值触发。监控值常见的有状态(如是与非、红黄绿、是否可达等)和数值(如 80GB、20%、交易笔数、交易延迟等)两类,监控系统可针对监控值设置阈值,即告警事件触发条件。 如果操作系统比较先进,可能还有性能容量的动态阈值功能,可基于不同的时间点对监控值动态地适配生成告警事件。

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

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

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

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

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

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

4、展现层

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

版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章
原文链接:【https://xie.infoq.cn/article/9dc2dae88f7e0b1054505ffd3】。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/12171

相关推荐

js判断数字是奇数还是偶数的2种方法实现

奇数和偶数的判断是数学运算中经常碰到的问题,这篇文章主要讲解通过JavaScript来实现奇偶数的判断。2种判断方法:求余% 、&1

进制转换_二进制、八进制和十六进制数之间的转换

在计算机语言中常用的进制有二进制、八进制、十进制和十六进制,十进制是最主要的表达形式。对于进制,有两个基本的概念:基数和运算规则。

mock.js模拟数据

开发时,后端还没完成数据输出,前端只好写静态模拟数据。数据太长了,将数据写在js文件里,完成后挨个改url。某些逻辑复杂的代码,加入或去除模拟数据时得小心翼翼。想要尽可能还原真实的数据,要么编写更多代码,要么手动修改模拟数据

几个数据持久化框架Hibernate、JPA、Mybatis、JOOQ和JDBC Template的比较

因为项目需要选择数据持久化框架,看了一下主要几个流行的和不流行的框架,对于复杂业务系统,最终的结论是,JOOQ是总体上最好的,可惜不是完全免费,最终选择JDBC Template。

nodejs 使用 xlsx 实现导入导出

将数据导出成excel方法,下面介绍两种方式,一种是将数组数据导出成excel,一种是将json数据导出成excel,都非常简单

web scraper 抓取网页数据的几个常见问题

如果你想抓取数据,又懒得写代码了,可以试试 web scraper 抓取数据。如果你在使用 web scraper 抓取数据,很有可能碰到如下问题中的一个或者多个,而这些问题可能直接将你计划打乱,甚至让你放弃 web scraper 。

双向数据绑定与单向数据绑定的各自优势和关系

在react中是单向数据绑定,而在vue和augular中的特色是双向数据绑定。为什么会选择两种不同的机制呢?我猜测是两种不同的机制有不同的适应场景,查了一些资料后,总结一下。

原生JS数据绑定的实现

双向数据绑定是非常重要的特性 —— 将JS模型与HTML视图对应,能减少模板编译时间同时提高用户体验。我们将学习在不使用框架的情况下,使用原生JS实现双向绑定 —— 一种为Object.observe

JavaScript判断数据类型的多种方法【 js判断一个变量的类型】

js判断数据类型的多种方法,主要包括:typeof、instanceof、 constructor、 prototype.toString.call()等,下面就逐一介绍它们的异同。

Nginx返回大长度的JSON数据被截断

1 添加Nginx参数,增加缓存字符串大小;2 遇到权限问题,原因是大文件会先缓存到/proxy-temp文件夹下面,然后再返回;修改文件夹的权限为Nginx用户

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!