加快排障
- 如何记录日志和保存日志。
- 如何传递关键的运行时消息,如何处理预警信息。
记录日志
- 围绕触发点定义一个AOP切面,生成请求响应日志,并计算处理时长等信息。
- 将日志信息打印到日志文件,并按照时间进行自动切割。
- 日志文件的留存天数,根据每日的生成量(相对稳定后)和磁盘空间,进行合理规划。
- 将日志信息通过异步线程(分配一个线程池),结构化并写入到数据库中。
存储方式
- 原则上一个引擎组件一张表或者一个业务领域一张表。
- 表名,可以这么命名:
logs_domain_${id}
, 或者logs_rule_engine_${id}
。 - 数据库适用现成的分布式关系型数据库
OceanBase
,或者引入TDengine
。
心跳和运行时的关键信息
- 可以使用
Apach Pulsar
或Apache Kafka
作为消息队列,将心跳和运行时的关键信息实时发送到管理后台。
预警信息产生
- 当管理平台在心跳的周期内没有收到心跳,进行预警。
- 当CPU、内存或者硬盘的空间达到一定的阈值时,进行预警。
- 当规则处理时长超过一定阈值时,进行预警。
预警信息处理
- 收到预警信息后,使用websocket在web前台弹出预警通知,也可以选择短信/微信/钉钉/电话等方式进行通知。
- 可将收到预警信息保存到
alarm
表中,便于事后查看与分析。