系统监控告警在研发日常运营中扮演着关键角色。没有监控,线上应用的运行就如同一个黑盒,无法预知潜在问题,往往只能依靠客服或用户反馈来发现。但此时,可能已经错过了最佳解决时机,甚至导致用户流失。
一:系统监控
序号 |
问题 |
方案 |
1 |
为什么要做应用系统监控 |
通过持续追踪系统运行状态,确保稳定性、性能及业务连续性,同时为优化提供数据支撑,让程序员全面了解系统实时现状、有利于发现和排除问题。 |
2 |
用系统监控优点 |
1.实时发现系统性能问题(服务器性能、接口性能) 2.识别系统瓶颈(如数据库慢查询、内存泄漏、磁盘读写) 3.识别系统利用率根据实际情况进行扩缩容,降低成本。 |
3 |
用系统监控缺点 |
1.监控工具可能系统资源。 2.阈值设置不当对应用成员造成干扰。 3.需要整合多个监控工具,维护成本高。 |
4 |
如何设置合理的阈值 |
CPU、内存、磁盘使用率达到80% 接口性能:根据实际情况设置TPS、TP99、成功率/失败率、可用率、接口调用量进行合理设置。 日志输出:针对通用异常日志,业务异常日志进行分类监控。 数据库:根据数据库实际套餐监控连接数据、QPS、TPS、慢SQL、缓存命中率进行监控 缓存:根据数据库实际套餐监控连接数据、QPS、TPS、内存容量进行监控。 |
5 |
怎么才算完成的成体系的应用系统监控 |
1.全面覆盖:从基础设施到业务指标无死角监控。 2.智能告警:减少误报,分级响应。 3.闭环管理:监控→告警→处理→优化形成正向循环。 4.成本可控:平衡监控粒度与资源消耗 |
应用系统监控包括:CPU、内存、磁盘、网络流入流出、接口性能、日志输出、数据库、缓存、线程池、消息队列。
二:日志输出及其监控
记录日志时请思考:这些日志真的有人看吗?看到这条日志你能做什么?能不能给问题排查带来好处?
序号 |
问题 |
方案 |
1 |
日志优点 |
1.日志输出有利于程序员跟踪用户活动轨迹,快速定位异常情况。 2.对程序异常,用户异常,异常攻击可有效提前发现,减少客诉或资产损失。 |
2 |
日志缺点 |
1.日志打印会消耗CPU、内存、磁盘、增加接口耗时。 2.日志输出过大可能操作系统读写问题甚至导致内存溢出。 3.日志中涉及敏感信息有可能泄漏用户信息。 |
3 |
怎么才算好的日志 |
1.不同的场景设置不同的日志级别。 2.日志输出要包含时间,日志级别,方法描述、方法名称、用户信息,线程编号。 3.日志输出要能输出关键信息但又不能冗余,非高并发场景可进行JSON序列化便于观察。 4.打印日志输入参数时,禁止使用 5.针对日志输出必须有动态控制 6.异常信息要有案发现场信息和异常堆栈信息。 7.日志按照时间和文件大小进行拆分,每个文件不超过1G |
4 |
如何对日志进行监控起到提前预警但又不多报情况 |
1.对代码中的空指针、数组越界、RPC等等通用告警进行监控但要设置每秒或每10秒的频次。 2.对系统级别的异常入内存泄漏,内存异常,线程池耗尽,GC等单次就需要预警。 3.对接口级别的逻辑异常、系统异常,三方接口异常要设置监控频次。 4.对交易日志、如提单下单、发奖等等要从严监控。 |
5 |
如何将日志串联起来 |
1.打印接口的线程id,日志时间、用户唯一信息、用户轨迹的每步信息(用户事件内的每个接口出入参) |
6 |
在那些环节进行日志输出 |
1.接口的出入参,任务的启动和停止、消息的发送和接收 2.三方接口的出入参。 3.接口逻辑退出处输出退出原因。 4.trycatch处输出异常信息,一个业务要提前规划好tryCatch的逻辑,过多的tryCatch影响性能,对日志监控也造成困难。 |
7 |
在哪些环节进行日志监控呢 |
1.通用的异常信息。 2.系统异常的异常信息。 3.三方接口的异常信息,任务的启动和停止、消息的发送和接收。 4.涉及用户交易或资金方面的场景进行异常监控。 5针对不同的异常进行不同频次的预警 |
三:接口性能监控
序号 |
问题 |
方案 |
1 |
为什么要对接口性能进行监控 |
接口性能直接影响用户体验和业务连续性,监控能提前发现潜在问题(如响应变慢、错误率上升) |
2 |
接口性能进行监控优点: |
1.用户感知前提前发现问题。 2.有利用快速定位问题。 3.可建立实时监控大盘,对系统进行全面监控。 |
3 |
接口性能进行监控缺点: |
1.对接口进行监控需要引入插件,会占用CPU、内存、磁盘、会增加系统消耗和增加接口耗时 2.阈值设置过高无法及时触发告警,阈值设置过低会频繁告警干扰应用成员。 |
4 |
监控指标都有哪些 |
1.TPS、TP99、成功率/失败率、可用率。 |
5 |
如何对各项指标设置监控合理值 |
1.TPS基于基线波动30%, 2.TP99基于接口基线波动1.5倍 3.成功率/失败率根据实际业务场景配置,如有防刷,风控,业务校验等等,首先要排除业务异常码,一般设置成功率低于90%。 4.可用率:体现系统服务是否正常的标准,一般要求较高需达98% 5.调用量:基于外部要求设置合理的限流值,当调用量达到80%时要提前告警 |
6 |
接口性能监控告警后如何处理 |
1.TPS飙升:看是否某渠道忽然进量,是否有限流配置(保护自己和下游)。 2.TP99飙升:观察是否内部外部原因,内部观察是逻辑问题还是数据库问题 ,外部原因快速沟通相关研发,另外看是否有降级 3.成功率/失败率异常:观察是否内部外部原因,内部观察是逻辑问题还是数据库问题 ,外部原因快速沟通相关研发,另外看是否有降级 4.可用率:观察服务是否的,每天服务器的接口是否均上线或下线 |
四:业务数据监控
序号 |
问题 |
方案 |
1 |
为什么要建设业务数据监控 |
线上风险感知与把控,在整个软件开发测试周期占据越来越重要的位置,一次事故就可能让大家长时间的努力付诸东流,通过实时/准实时追踪业务关键指标,确保业务健康运行,辅助决策并快速响应异常。 |
2 |
建设业务数据监控优点 |
1.快速发现业务异常(如订单量骤降、用户流失、发奖量飙升) 2.提前预警可有效减少资产损失或客诉 3.自动化监控减少人工巡检成本。 |
3 |
建设业务数据监控缺点 |
1.需投入开发、维护资源。 2.阈值设置过高无法及时触发告警,阈值设置过低会频繁告警干扰应用成员。 |
4 |
建设指标都是有哪些 |
关键交易数据的同比、环比、与最近x分组相比波动多少。 优惠券发放的的同比、环比、与最近x分组相比波动多少。 业务转化的成功失败数,成功失败比例。 |
5 |
预警值设置多少合理 |
根据真实数据和实际情况信息设定,。如:提单和支付成功比例波动30%, 如提单与昨日环比波动20%, 如发奖失败比例3% |