软件监控系统介绍

文章目录

  • 1. 概述
  • 2. 作用
  • 3. 层次划分
  • 4.监控作用域
  • 5. 监控系统的组成
    • 5.1 数据采集
    • 5.2 数据传输
    • 5.3 数据处理
    • 5.4 数据存储
    • 5.5 数据展示

1. 概述

此处的监控系统是指,用来对计算机硬件、软件运行情况进行监控的系统。
监控系统要监控的指标或内容多种多样,根据不同的侧重点、不同的层次划分,监控系统又有多种实现。例如,Zabbix、Promethos、Open-falcon、Skywalking、CAT等等。
因此,很难简单的概括监控系统的定义。

2. 作用

监控系统可以为用户提供
实时的关键指标监控展示、和告警能力
记录数据,提供故障回溯和风险预测依据
优化系统的依据

3. 层次划分

从监控对象的设计角度看,监控系统可以分为以下层次。
基础监控:监控操作系统相关基础性能指标和信息,如CPU负载、磁盘存储、 络等情况,例如Zabbix、Prometheus等系统
资源监控:资源主要指为应用系统提供通用能力的软件系统,如数据库、MQ、缓存等 如Prometheus,Skywalking等
应用程序监控:监控应用程序的相关指标,如服务健康状态,接口性能,调用链路追踪等 如CAT、Pinpoint、Skywalking等
日志监控:日志贯穿所有层次,每个层次可能都需要依赖日志作为基础,是一个纵向的监控

如上图所示,越偏向下的作用域,记录的数据规模越大。
按照此方式,ELK是更侧重Logging的监控,虽然Kibana也提供了Metrics统计的能力,但是还是需要依赖应用自定义规则主动埋点,从而赋予Event业务意义,让其产生关联;
而CAT、Skywalking等分布式追踪系统,就更偏向Tracing,Metrics,展示记录Logging的能力相对较弱。

5. 监控系统的组成

目前,主流的监控系统主要由3个部分组成:数据采集、数据处理、数据展示,数据处理还可以拆分为存储、告警等。

软件监控系统介绍

5.1 数据采集

指通过多种方式采集客户端的相关指标,可以客户端主动采集,也可以被动采集或两者兼有。采集方式有两种:
客户端采集:在应用中部署的客户端,通过客户端采集相关数据执行传输。如Agent、Exporter
协议采集:操作系统、JVM提供了IPMI、SNMP、JMX标准协议来获取硬件、 络、JVM等指标

5.2 数据传输

将采集到的数据传输至服务端进行处理,传输方式有
Socket长链接:客户端与服务端保持长链接,点对点传输,传输高效但链接的维护成本增加,尤其是在海量监控对象时。CAT中,服务端是不负责维持链路的,有客户端管理自身的链路。
Http协议:
Pull模式:Agent如果充当Server角色,服务端则通过commet模式读取数据
Push模式:Agent充当Http客户端,调用服务端上 数据
MQ传输:Agent将消息发送到MQ中,实现解耦,流量整形。但是强依赖MQ,可能引发故障。

5.3 数据处理

对数据进行分析聚合等操作,用于产生告警、进行存储,并利于展示分析

5.4 数据存储

由于监控数据的特点,时间是一个非常明显且独特的指标,且随着时间不断变化这种数据可以被归类为时序数据,其特点为:
写多读少,且时序数据写入后,通常不会再进行修改
数据流平稳,即数据量与采集节点数成正比,相对稳定,且随着时间不断增加
查询主要以时间为纬度,热数据通常在几小时内
所以,监控系统的数据存储通常使用TSDB(时序数据库),关系型数据库使用B+树实现,时序数据库使用LSM树实现。

5.5 数据展示

监控数据的展示方式有很多种,大部分监控系统自身提供了展示数据的控制台,也可以利用类似Kibana、Grafana这种独立应用处理数据进行展示

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月15日
下一篇 2020年10月15日

相关推荐