主动发现
系统建立后,需要相应的指标来评判系统是否运行正常。因此需要明确用什么指标、监控什么内容、达到什么效果。
系统指标
- 业务系统
- 可观测平台、云平台可提供各类系统级指标,挑选其中关键指标,建立报警机制,并梳理系统大盘,目标是”当发生系统故障时,可通过系统大盘初步判断故障点”
- 指标示例
- 主被调:调用量、成功率、调用耗时(P99)
- 其他:
- 运行时指标:堆、协程使用量、使用率等
- 容器指标:CPU、内存、硬盘、网络使用量、使用率等
- 报警:同比、环比的变化量、变化率报警
- 依赖组件
- 可观测平台、云平台可提供各类系统级指标,挑选其中关键指标,建立报警机制,并梳理系统大盘,目标是”当发生系统故障时,可通过系统大盘初步判断故障点”
- 指标示例
- MQ:消息生产量、消息消费量、消息消费延迟、磁盘使用量等
- Cache:内存使用量、MISS率、大key数量、连接使用量等
- 报警:同比、环比的变化量、变化率报警
业务指标
系统指标全部正常不代表业务运转正常,例如在投放RTA服务中,系统调用全部正常,但放行率、放行量环比大幅下跌,那肯定是出问题了。
- 梳理指标
- 梳理业务流程中的关键业务节点、业务功能,并找出哪个指标能表征该环节、功能是正常运行的
- 指标监控
- 针对梳理出的指标建立同比、环比变化量、变化率的监控,设置报警
- 业务大盘
- 结合业务流程、关键业务指标,建立业务大盘,目标是”当发生系统性业务异常时,可通过业务大盘初步判断是在哪个环节出了问题”
- 定期更新
- 定期复盘业务功能变化,重新梳理业务指标,并调整监控、大盘
被动防御
主动发现问题了,但真有问题时要能够防得住,控制系统爆炸半径,保证系统整体运行正常。
安全
- 系统安全
- 网关层面的安全过滤、异常流量过滤,这个靠安全团队与网关层的配合,或者直接使用云平台的安全策略
- 业务安全
- 关键业务功能在开发时,需要与安全团队配合,根据业务功能设定相应的安全打击等级,执行业务功能时,进行安全过滤
流量
- 开发前:与业务方、合作方评估业务功能,根据数据、历史评估预计流量;根据预计流量设定技术方案,设立需要比预估流量更大的流量来设计方案,例如预估1,设计10,部署5
- 开发中:按照技术方案进行开发,做好单功能、单节点的benchmark
- 上线前:全流程性能测试,确保性能指标;各系统按照预设流量做好限流,地区级、系统级、业务级,确保超出流量时,不会拖垮整个系统
- 上线后:结合”主动发现”做好关键指标(系统、业务)的监控、报警
- 常规事项:定期全流程性能测试
以练代战
代码
- 建立项目生成器
- 目标
- 统一开发语言、版本,统一目录结构、依赖包版本、组件最佳实践等,使开发人员聚焦于业务开发
- 打通项目生成、代码库管理、流水线管理、云平台服务创建
- 目标
- 通过流水线,建立质量红线,未达质量红线不准提交代码
- 规范分:满分
- 单测:整体50%,关键路径100%
- 定期运行流水线
- 单测
- benchmark
- 回归测试
- 业务回归测试
- 性能回归测试
系统
- chaos演习
- 定期组织演习:在调用链路中注入错误,根据处理结果判断是否符合预设错误处理流程
组织
建立值班机制,确保有人及时响应问题