业务监控区别于基础架构提供的网络、磁盘、内存、CPU等系统基础监控,通常基于业务场景自定义指标,对于线上系统功能的健康度可以有更直观的体现,监控的技术栈层面越高,监控现象越容易。下面,结合我在某公司结算部门的实习经历,记录一下如何对跨境结算业务做监控,希望对以后的工作有所帮助。
业务特点
以一个简单的提现为例(只展示主流程,隐藏掉业务细节),涉及到的流程时序如下:
可以看到结算业务的特点:
- 涉及到内部和外部系统,上述业务涉及到3个内部系统(结算系统、提现系统、渠道网关),和一个外部系统(外部渠道);
- 有一些定时任务,为了尽可能保证数据一致性,支付相关系统通常会有一些补偿任务,用于对同步流程卡住的“订单”进行异步补偿,比如如果上述第4步提现系统调用渠道网关超时后,提现单状态为INIT,需要有补偿任务将该INIT的提现单重新发起提现;
- 系统都有各自的状态:一般来说,结算系统会有自己的状态(结算单),提现系统也有自己的状态(提现单),系统需要有一个最终的兜底手段,确保各系统状态保持一致,不能出现提现单是成功或失败,但结算单还是处理中;
监控项目
Google SRE中提到监控系统的四个黄金指标:
- 延迟:延迟是发送请求和接收响应所需的时间。延迟通常从服务器端测量,但也可以从客户端测量,以解决网络速度的差异。
- 流量:流量是衡量流经网络的请求数量。
- 错误:错误可以告诉您基础结构中的错误配置,应用程序代码中的错误或依赖项损坏等。
- 饱和度:每个资源都有一个限制,之后性能将降低或变得不可用。例如,当CPU已满时,可能会导致响应延迟,填满的存储空间可能导致磁盘写入失败,并且网络饱和可能导致数据包丢失。通过仪表板和监控警报可以帮助您密切关注这些资源,并帮助您在容量达到饱和之前主动调整容量。
结合以上指标,和结算系统的特点,在开发中,我们一般会有以下的监控项目:
接口监控
对接口的监控主要有以下作用:
- 观察系统状态:通过统计接口的QPS、延迟判断系统此刻的压力状态
- 发现系统异常
- 波动率异常,比如某个接口请求量突然跌0,或者大幅下降,可能是接口的上游出现了异常,或者接口自身所在系统出现异常;
- 业务异常:比如某个业务异常错误码突然大量增加,可以提醒我们去排查相关问题
- 统计分析业务数据
- 对系统做实时的监控大盘,关注系统接口的运行情况;
- 统计较长时间范围的请求量波动,可以帮助分析业务数据,特别是涉及到用户行为的接口,比如下单量等
一般来说,对系统的接口监控包含下面方面:
请求量
监控接口的请求总数、失败数、成功数。这里的失败数指请求失败,不是业务错误,请求失败有:RPC超时、权限错误、网络中断等。
波动率
波动率的统计基于请求量,主要是统计一段时间内请求量的变化情况。
延迟
通常对延迟的监控包括平均延迟,和PCT95(表示数据集合按升序排列,第95分位数),PCT99等。
业务错误码
业务错误码指系统在正常处理请求中(不同于请求失败表示请求无法正常处理),遇到的已知或未知的错误,比如参数错误、状态错误等。监控业务错误码,可以帮助我们及时发现业务异常并进行处理,同时也方便我们事后对问题进行复盘和统计分析。
任务监控
任务监控,是监控定时任务的启动情况,在结算业务中,定时任务通常扮演十分重要的角色,监控定时任务的运行时间、运行周期是否符合预期,是保证结算系统正常运行的关键。
业务数据监控
业务数据监控,主要是监控的是业务数据是否符合预期,是否在正常范围,以及各系统间数据是否一致,在工作中,主要涉及到以下方面:
总量
重点关注结算总单量、金额和其他主要指标,用来分析业务情况。
成功/失败率
在结算系统中,特别需要关注结算成功率,由于跨境支付有一定的延迟,所以一般关注的是T+N结算成功率,不是实时成功率。
对账
由于结算涉及到很多系统,每个系统都有自己的状态,目前结算系统没有使用分布式事务,而是用消息通知来做最终一致性,即使有分布式事务,也存在失败的情况,所以需要有兜底的手段发现系统间数据不一致的情况,这个手段通常是对账。
对账的定义(from 美团配送资金安全治理之对账体系建设)
对账的概念随着金融、互联网行业的发展,定义上也经历了几个阶段的变化,如下:
stage 1 :对账最初来源于会计核算,是为保证账簿记录正确可靠,对账簿中的相关数据进行检查和核对的工作。
stage 2 :随着互联网金融或电商行业的发展,对账也扩大了应用范围,这一时期,对账是指在固定周期内,支付使用方和支付提供方(银行和第三方支付)相互确认交易、资金的正确性,保证双方的交易、资金一致正确。
stage 3 :从广义来看,所有的跨端系统之间的数据核对都应该叫对账,主要是检查和发现数据在流转过程中的不一致问题。通常分为信息流的核对和资金流的核对。信息流核对主要是对业务数据之间的核对,资金流是对资金交易数据进行核对。
通过编写对账脚本(通常是Hive SQL),比对一个请求流程中不同系统中相关联的表,比如跨境结算申请中,比较结算系统中的结算单表和跨境提现系统中的提现单表的数据是否一致,如果有必要的话,可以通过文件账单的形式,比较外部渠道和内部系统的数据一致性。
监控方式
公司提供了较为便捷的基础设施供业务部门使用,为了监控以上项目,通常我们会用到如下设施:
时序数据库
时序数据是随时间不断产生的一系列数据,简单来说,就是带时间戳的数据,比如上面提到的接口监控中各项内容,时序数据通常使用时序数据库来存储和查询。
OLAP
Online Analytical Processing,指在线分析处理,通常是基于庞大的数据,称为数据仓库,通过数据仓库技术,可以在不影响线上事务处理(OLTP)的情况下,分析业务数据。通常对业务数据监控就是通过公司提供的OLAP工具进行的。
对账平台
对账平台是建立在OLAP基础上对特定业务数据进行查询、比对和处理的平台。关于对账平台,可以参考美团配送资金安全治理之对账体系建设。