设为首页 - 加入收藏 大理站长网 (http://www.0872zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 2018 系统 学习 2016
当前位置: 首页 > 运营中心 > 建站资源 > 策划 > 正文

聊一聊几款流行监控系统,你知道几个?

发布时间:2019-10-21 00:35 所属栏目:[策划] 来源:崔皓
导读:由于业务的多样性,平台和系统也变得异常的复杂。如何对其进行监控和维护是我们 IT 人需要面对的重要问题。就在这样一个纷繁复杂的环境下,监控系统粉墨登场了。 今天,我们会对 IT 监控系统进行介绍,包括其功能,分类,分层;同时也会介绍几款流行的监控

由于业务的多样性,平台和系统也变得异常的复杂。如何对其进行监控和维护是我们 IT 人需要面对的重要问题。就在这样一个纷繁复杂的环境下,监控系统粉墨登场了。

今天,我们会对 IT 监控系统进行介绍,包括其功能,分类,分层;同时也会介绍几款流行的监控平台。

聊一聊几款流行监控系统,你知道几个?

监控系统的功能

在 IT 运维过程中,常遇到这样的情况:

  • 某个业务模块出现问题,运维人员并不知道,发现的时候问题已经很严重了。
  • 系统出现瓶颈了,CPU 占用持续升高,内存不足,磁盘被写满;网络请求突增,超出网关承受的压力。

以上这些问题一旦发生,会对我们的业务产生巨大的影响。因此,每个公司或者 IT 团队都会针对此类情况建立自己的 IT 监控系统。

聊一聊几款流行监控系统,你知道几个?

监控系统工作流程图

其功能包括:

  • 对服务,系统,平台的运行状态实时监控。
  • 收集服务,系统,平台的运行信息。
  • 通过收集信息的分析结果,预知存在的故障风险,并采取行动。
  • 根据对风险的评估,进行故障预警。
  • 一旦发生故障,第一时间发出告警信息。
  • 通过监控数据,定位故障,协助生成解决方案。
  • 最终保证系统持续、稳定、安全运行。
  • 监控数据可视化,便于统计,按照一定周期导出、归档,用于数据分析和问题复盘。

监控系统的分类

既然监控系统对我们意义重大,针对不同场景把监控系统分为三类,分别是:

  • 日志类
  • 调用链类
  • 度量类

日志类

通常我们在系统和业务级别上加入一些日志代码,记录一些日志信息,方便我们在发现问题的时候查找。

这些信息会与事件做相关,例如:用户登录,下订单,用户浏览某件商品,一小时以内的网关流量,用户平均响应时间等等。

这类以日志的记录和查询的解决方案比较多。比如 ELK 方案(Elasticsearch+Logstash+Kibana),使用ELK(Elasticsearch、Logstash、Kibana)+Kafka/Redis/RabbitMQ 来搭建一个日志系统。

聊一聊几款流行监控系统,你知道几个?

ELK 结合 Redis/Kafka/RabbitMQ 实现日志类监控

程序内部通过 Spring AOP 记录日志,Beats 收集日志文件,然后用 Kafka/Redis/RabbitMQ 将其发送给 Logstash,Logstash 再将日志写入 Elasticsearch。

最后,使用 Kibana 将存放在 Elasticsearch 中的日志数据显示出来,形式可以是实时数据图表。

调用链类

对于服务较多的系统,特别是微服务系统。一次服务的调用有可能涉及到多个服务。A 调用 B,B 又要调用 C,好像一个链条一样,形成了服务调用链。

调用链就是记录一个请求经过所有服务的过程。请求从开始进入服务,经过不同的服务节点后,再返回给客户端,通过调用链参数来追踪全链路行为。从而知道请求在哪个环节出了故障,系统的瓶颈在哪儿。

调用链监控的实现原理如下:

①Java 探针,字节码增强

聊一聊几款流行监控系统,你知道几个?

Java 代码运行原理图

在介绍这种方式之前,我们先来复习一下 Java 代码运行的原理。通常我们会把 Java 源代码,通过“Java 编译器”编译成 Class 文件。再把这个 Class 的字节码文件装载到“类装载器”中进行字节码的验证。

最后,把验证过后的字节码发送到“Java 解释器”和“及时编译器”交给“Java 运行系统”运行。

Java 探针,字节码增强的方式就是利用 Java 代理,这个代理是运行方法之前的拦截器。

在 JVM 加载 Class 二进制文件的时候,利用 ASM 动态的修改加载的 Class 文件,在监控的方法前后添加需要监控的内容。

例如:添加计时语句,用于记录方法耗时。将方法耗时存入处理器,利用栈先特性(先进后出)处理方法调用顺序。

每当请求处理结束后,将耗时方法和入参 map 输出到文件中,然后根据 map 中相应参数,区分出耗时业务。

最后将相应耗时文件取下来,转化为 xml 格式并进行解析,通过浏览器将代码分层结构展示出来。

聊一聊几款流行监控系统,你知道几个?

Java 探针工具原理图

备注:ASM 是一个 Java 字节码操纵框架,它可以动态生成类或者增强既有类的功能。

ASM 可以直接产生二进制 Class 文件,可以在类被载入 Java 虚拟机之前改变类行为。

Java Class 被存储在 .class文件里,文件拥有元数据来解析类中的元素:类名称、方法、属性以及 Java 字节码(指令)。

ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够生成新类。

②拦截请求

获取每次请求服务中的信息来实现跟踪的。这里以 Zipkin+Slueth 为例说明其原理。

Sleuth 提供链路追踪。由于一个请求会涉及到多个服务的互相调用,而这种调用往往成链式结构,经过多次层层调用以后请求才会返回。常常使用 Sleuth 追踪整个调用过程,方便理清服务间的调用关系。

聊一聊几款流行监控系统,你知道几个?

Sleuth 服务调用追踪图例

每次请求都会生成一个 Trace ID,如上图所示这个 Trace ID 在整个 Request 和 Response 过程中都会保持一致,不论经过了多少个服务。这是为了方便记录一次调用的整个生命周期。

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章