业务监控区别于基础架构提供的网络、磁盘、内存、CPU等系统基础监控,通常基于业务场景自定义指标,对于线上系统功能的健康度可以有更直观的体现,监控的技术栈层面越高,监控现象越容易。下面,结合我在某公司跨境结算部门的实习经历,记录一下如何对跨境结算业务做监控,希望对以后的工作有所帮助。

业务特点

以一个简单的提现为例(只展示主流程,隐藏掉业务细节),涉及到的流程时序如下:

可以看到结算业务的特点:

  1. 涉及到内部和外部系统,上述业务涉及到3个内部系统(结算系统、提现系统、渠道网关),和一个外部系统(外部渠道);
  2. 有一些定时任务,为了尽可能保证数据一致性,支付相关系统通常会有一些补偿任务,用于对同步流程卡住的“订单”进行异步补偿,比如如果上述第4步提现系统调用渠道网关超时后,提现单状态为INIT,需要有补偿任务将该INIT的提现单重新发起提现;
  3. 系统都有各自的状态:一般来说,结算系统会有自己的状态(结算单),提现系统也有自己的状态(提现单),系统需要有一个最终的兜底手段,确保各系统状态保持一致,不能出现提现单是成功或失败,但结算单还是处理中;

监控项目

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基础上对特定业务数据进行查询、比对和处理的平台。关于对账平台,可以参考美团配送资金安全治理之对账体系建设。

结算系统业务监控实践相关推荐

  1. 腾讯业务监控的修炼之路

    作者丨李光:现任职于腾讯社交网络运营部/织云产品团队,负责织云监控告警平台规划与运维新产品开发工作,具有多年业务运维.运营规划经验. 概述 本文作为监控告警产品的专题系列的第二篇文章,主要讨论的是IA ...

  2. Flink 在爱奇艺广告业务的实践

    简介:5 月 22 日北京站 Flink Meetup 分享的议题. 本文整理自爱奇艺技术经理韩红根在 5 月 22 日北京站 Flink Meetup 分享的议题<Flink 在爱奇艺广告业务 ...

  3. 架构设计器_大厂案例:马蜂窝大交通业务监控报警系统架构设计与实现

    部门的业务线越来越多,任何一个线上运行的应用,都可能因为各种各样的原因出现问题:比如业务层面,订单量比上周减少了,流量突然下降了:技术层面的问题,系统出现 ERROR ,接口响应变慢了.拿大交通业务来 ...

  4. 360容器平台监控实践

    女主宣言 360 近年来上线了容器云平台,给团队工作带来了一些便利,同时也给运维工作带来了很多挑战.InfoQ记者张婵10月30日采访整理,首发于公众号"高效开发运维". PS:丰 ...

  5. 基于阿里云生态构建网聚宝业务监控系统

    伊始 -- 网聚宝业务监控系统 今年网聚宝开始推进服务化进程,我有幸分在架构组,在公司产品服务化的过程中负责业务监控模块.在以前,我们发展工程还未服务化的时候,我们可能只单单关注单个请求的耗时等基本指 ...

  6. 基于 Prometheus 的边缘计算监控实践

    监控作为边缘计算基础设施的重要组成部分,是边缘稳定性的基本保障.本文主要介绍火山引擎边缘计算的监控实践,分享火山引擎如何进行监控技术选型以及构建监控服务体系.主要内容如下: 边缘计算监控初衷 基于 P ...

  7. 迅游科技:游戏监控实践分享

    赵亚南,7年运维实践经验,早期主要负责过淘宝网淘江湖.浙江日报.银率网(北京).广州宝洁.机电之家等网站的维护,2012年后加入重庆迅游,负责开服网.开区网及多个游戏项目的运维,务真求实,追求以公司项 ...

  8. Flink在爱奇艺广告业务的实践

    关注公众号,了解一线大厂实时数仓最新资讯! 摘要:今天主要分享的内容是 Flink 在爱奇艺广告业务的实践,分享日期:2021年5月22日.内容包括: 业务场景 业务实践 问题解决 未来规划 Tips ...

  9. 云集财务业务 TiDB 实践

    原文来源: https://tidb.net/blog/84221c3f 云集财务业务TiDB实践 作者:皮雪锋 丁凌风 摘要:MySQL.HybridDB for MySQL.TiDB,是什么原因让 ...

最新文章

  1. mac 搭建php wamp,Linux,Windows,Mac平台php环境配置
  2. C++ Primer 学习笔记_75_模板与泛型编程 --模板定义
  3. beanshell变量无法传到jmeter_学会BeanShell,才敢说自己懂Jmeter
  4. tf.transpose
  5. Step-by-step to Transformer:深入解析工作原理(以Pytorch机器翻译为例)
  6. mysql用时查询_mysql 常用时间查询
  7. java 本季度_Java获取当天、本周、本月、本季度、本年等 开始及结束时间
  8. python的字符串删除操作 有点简单
  9. node.js 使用domain模块捕获异步回调中的异常
  10. 10 个非常酷的基于jQuery的菜单效果插件
  11. 《中国大学--博弈论》
  12. [Soft]软件技术的两个趋势
  13. 批量自动下单(京东)
  14. Cadence Allegro元件更换层图文教程
  15. Friends S01.01 Part A
  16. 四大金融资产管理公司的起起伏伏
  17. typescript:类型细化
  18. 每日一题:现在你在玩一款游戏,叫做节奏大师。它有三种判定
  19. Fabled Rooks UVA - 11134 
  20. html 表格 锁定首行,教你实现首行及首列固定 Table

热门文章

  1. 如何防止网站被黑客入侵,避免网站被黑的防御方法
  2. GWT(Google Web Toolkit)初体验
  3. Springboot使用Actuator健康监控以及可视化界面
  4. AcWing每日一题 3565.完美矩阵(绝对值不等式)
  5. 01-2016.07-小学期游戏开发《坦克大战》
  6. 教你解决问题:mac电脑卸载双系统中Boot camp助理出现“启动磁盘不能被分区或恢复成单个分区”
  7. vue3组合式api
  8. 英文电影经典台词整理(原创)
  9. 农历中天干地支的计算【C代码】
  10. 【SSL/TLS】准备工作:HTTPS服务器部署:Nginx部署