转载本文需注明出处:微信公众号EAWorld,违者必究。
引言:
在传统的信息系统架构模式下,各个组织或各个部门根据各自的业务需求,在不一样时期不一样技术环境下建设出各自的信息系统。随着信息化建设的不断推动,业务活动呈现高频化、碎片化、场景化的特色。随之而来的是对系统的处理能力、容量、业务持续性、需求响应速度、运维响应速度的更高要求。
如何有效的管理数据、高效的提供数据服务的其中一个关键就是提供对数据服务的统一监控。
目录:
1、数据服务监控
2、数据采集
3、数据格式化
4、数据存储
5、数据展现
1、数据服务监控
为提供统1、标准、安全、高效的数据服务,咱们须要作好一点那就是统一数据运行监控,那么统一数据服务运行监控须要作哪些事情呢?
首先获取数据服务的运行数据,须要咱们对数据进行采集。有了数据咱们就能够去对数据作初步的分析,经过分析对数据进行格式化,格式化后的数据又须要去作持久化保存,方便将来不按期的查询。单纯的数字可能并不能直观的反应数据问题,那就须要借助前端工具对数据作可视化的展现。
数据服务监控经过实时服务分析引擎(SSM)提供日志解析及监控能力,对事前预警、事中告警、过后统计分析等功能提供后台支撑。咱们先来看一种可行的部署架构中,SSM的具体部署方式。
2、数据采集
实时服务分析引擎的部署
相信你们对此是很是熟悉的这也是一种很常见的微服务部署架构,Nginx经过负载均衡对业务请求进行分流,网关Gateway再将请求经过Eureka等注册中心转发到后台服务中。服务网关是成熟且健壮的业务系统中不可或缺的重要组件,它是全部服务的总入口,它是监控、认证的切入点。咱们能够在网关处添加对数据服务的采集功能。
网关拦截器手动埋点
数据采集:作数据采集的前提必定是对监控需求的仔细揣摩,若是你是粗粒度的应用监控、系统监控,那么数据服务总入口就是数据采集的切入点,若是你是细粒度的应用监控,例如应对时下流行的分布式微服务架构你但愿作到对调用链路的详细监控,那么每一个微服务的入口就是数据采集的着手处。网络上有不少对于微服务架构的监控组件,例如Skywalking、Cat、Zipkin、Pinpoint等,这里就不一一赘述,咱们今天的重点不是去研究每一次服务调用的具体详情,咱们只从服务整体的健康状态出发。因此咱们只须要极少的代价在数据服务总入口也就是网关进行数据埋点,收集数据详情便可。
异步落日志
异步落日志的具体流程以下:
网关监控数据持续产生,放入缓存队列(请求流转的过程当中要避免IO操做,尽量的减小对请求自己的影响)
缓存队列大小达到预先设定的大小,将缓存队列复制到临时缓存(一个临时对象),并清空缓存队列,而后执行写文件操做
当文件大小达到预先设定的大小时,将当前文件重命名,表明文件写操做完成。(重命名的缘由是由于实时服务分析引擎会对产生的日志文件进行读,避免对同一个文件同时出现读写操做)
日志落地相关配置
当监控数据进行初步落地之后咱们就能够经过实时服务解析引擎对日志进行提取分析,这个过程我愿意称之为数据格式化过程。
日志关键信息
3、数据格式化
提取数据的第一步是对网关落下来的文件日志进行收集而后处理。
日志文件读取流程
日志文件目录下可能会有多种类型的文件,咱们须要经过名称正则匹配筛选须要的文件。
数据格式化:从数据服务总入口收集到的原始数据作初步数据分析,从原始数据中提取关键信息(譬如请求报文、响应报文、请求时间等)进行格式化,并选择合适的方式将数据持久化到数据库中。
统计分析任务流程
统计分析任务由多个线程共同完成:
TimeStatics线程任务用来分析时间段内的以不一样的消费方和服务提供方为维度的调用统计指标,好比:在两分钟内A系统调用B系统时服务响应的成功次数、异常次数、平均响应时间、最长响应时间等数据指标。
Exception线程任务用来将数据服务异常调用记录同正常调用区分开来,异常响应对于运维监控来讲更为重要。
All线程任务会将每一笔的数据服务记录到案
Top线程任务用来统计数据服务调用访问时长TopN的调用详情。
数据分析线程解析
4、数据存储
数据存储:数据落地之后须要对落地的数据进行解析分析,将对应的数据拆分红合理的指标单元进行持久化操做。
针对关系型数据库,以mybatis为底层框架实现数据的持久化操做,同时支持将海量监控数据存储在ES中,充分利用ES聚合检索分类分析的能力。
物理表一览
针对不一样的调用请求,咱们进行分类统计,以请求方、服务提供方、网关实例节点为维度获取以下关键信息进行汇总
服务超时异常个数
系统异常个数
业务异常个数
非法调用个数(未配置服务调用关系)
非法IP调用个数(请求方IP不在白名单内)
成功调用次数
总调用时长
最长调用时长TopN的统计记录
关于告警
没有告警的监控就像一潭死水,没有灵魂。咱们不能将注意力所有Focus到监控系统上,因此及时的自动告警就是监控中必须的事情。咱们提供统一接口接入邮件、钉钉,借助经常使用办公系统实现对数据服务的实时告警。
告警维度主要有如下几个:
响应时间告警:针对一段时间内超过指定次数、指定响应时长的告警。
系统状态告警:应用系统状态告警,当应用没法正常运行时告警。
业务异常告警:针对一段时间内的成功响应占比低于指定阈值进行告警。
5、数据展现
数据展现:对指标单元数据整合分析,借助Echarts组件,提供针对不一样需求的可视化图
关于做者:阿良,普元开发工程师,参与普元EOS8 Studio、EOS8微服务管理平台开发,负责关于服务监控、日志监控等组件开发;参与太平洋保险供数平台建设,负责服务管理注册监控。
关于EAWorld:微服务,DevOps,数据治理,移动架构原创技术分享。长按二维码关注!前端