Skip to content

加快排障

  • 如何记录日志和保存日志。
  • 如何传递关键的运行时消息,如何处理预警信息。

记录日志

  • 围绕触发点定义一个AOP切面,生成请求响应日志,并计算处理时长等信息。
  • 将日志信息打印到日志文件,并按照时间进行自动切割。
  • 日志文件的留存天数,根据每日的生成量(相对稳定后)和磁盘空间,进行合理规划。
  • 将日志信息通过异步线程(分配一个线程池),结构化并写入到数据库中。

存储方式

  • 原则上一个引擎组件一张表或者一个业务领域一张表。
  • 表名,可以这么命名:logs_domain_${id}, 或者logs_rule_engine_${id}
  • 数据库适用现成的分布式关系型数据库OceanBase,或者引入TDengine

心跳和运行时的关键信息

  • 可以使用Apach PulsarApache Kafka作为消息队列,将心跳和运行时的关键信息实时发送到管理后台。

预警信息产生

  • 当管理平台在心跳的周期内没有收到心跳,进行预警。
  • 当CPU、内存或者硬盘的空间达到一定的阈值时,进行预警。
  • 当规则处理时长超过一定阈值时,进行预警。

预警信息处理

  • 收到预警信息后,使用websocket在web前台弹出预警通知,也可以选择短信/微信/钉钉/电话等方式进行通知。
  • 可将收到预警信息保存到alarm表中,便于事后查看与分析。