本文转载自微信公众号「猿天地」,作者尹吉欢 。请联系猿天地微信官方账号转载本文。
监控一直是一个可以长期讨论的话题。除了系统监控,还有一个很容易被忽视的问题。今天,让我们来谈谈这种容易被忽视的业务监控。
监控什么?
作为一名开发人员,你不仅需要开发功能,还需要对你负责的产品或模块有足够的了解,时刻关注,有初恋的感觉。
就电子商务最常见的订单功能而言,例如,我想知道订单的成功率、平均,订单的平均时间是多少,败是由于库存不足和订单失败等等。
有了这些业务指标信息,你就可以知道你负责什么样的产品,你需要做什么改进。
至于要监控哪些指标,你必须跟随你的业务。目的很明确,就是要知道业务状况,有时候可以触发报警。
实现方式
数据记录是基于埋点地磁盘文件中,然后通过统一的日志收集程序收集和存储,统计显示和报警。
基于埋点的原因是,我们需要知道每个业务界面的执行结果、成功或失败以及失败的原因。我们定义了每个异常的业务代码,我们可以根据业务代码知道异常的原因。
如果您以编写日志的方式输出数据,请记住单独输出业务日志的数据文件,不要与系统日志输出,否则很难收集和分析。
用logback可单独配置一个appender,我只输出了我埋点的业务数据,Json格式的。
日志文件内容:
注解埋点
BizLog业务监控埋点采用注释,具体配置字段如下:
- domain: 领域,如 order,pay
- biz: 业务,如 createOrder,cancelOrder
- bizId: 业务ID,比如 orderId
- addition: 扩展信息
addition可配置多个additionField从请求参数或相应参数中获取要埋点的数据。例如,订单创建成功后,订单将返回ID, 那么bizId从响应参数中获得。
代码埋点
有些场景(支付回调,JOB任务等。)不容易通过注释埋点。我们可以通过代码埋点来实现。
日志收集
我们使用阿里云日志服务,直接配置logtail收集工作可以完成,界面操作非常方便。
指标展示
埋点原始数据
统计显示图表
指标告警
数据都收集上来了,想要关注哪些指标,想要在什么时候告警,就变得很容易了。比如说某分钟内下单频繁失败,这个时候你就可以配置告警失败次数>N 触发报警,收到报警后立即检查为什么下单失败。
作者:尹吉欢,简单的技术爱好者,《Spring Cloud微服务-全栈技术与案例分析,《Spring Cloud微服务 入门 实战与进步作者, 微信官方账号猿天地发起人。