1.整理出一份常见 Java 错误类型清单,与各项目组进行沟通调研后,根据线上应用系统日常使用的异常频次,对告警进行分类设计;

2.在设计告警发送内容时,重点考虑如何将告警核心或关键内容直接发送给后续运维人员,以保证能够快速排障;

3.性能优化部分需从产品层面进行优化,后续不断优化调整。

2解决方案

1、基于 SPL 定义 Java 通用告警

在告警实现上,借助“Schema on Read”方式,将原先不好处理、不规则的日志,快速识别为可用、规则的日志。

根据前期调研汇总,共整理了 14 个 Java 通用告警,其中包括 MySQL 异常、IOException、EOFException、运行异常、堆栈溢出、空指针、死锁、超时、Fatal、连接池、连接失败、Transaction 等告警。

其部分告警节选如下:

java jit阈值 java阈值告警_java jit阈值

2、编辑告警插件,适配应用环境

告警部分的功能设计具有开放式和模块化的特点,使用 Python 语言对原有告警插件重新进行编辑,即可定义自己想要的重要参数和关键信息。设计自定义插件时,重新编写了短信发送告警插件,可设置选项包括“告警收件人”、“告警级别”、“告警系统”等关键信息,如下图所示:

java jit阈值 java阈值告警_java 阈值 告警_02

告警插件会将告警变量信息通过短信进行发送,告警接收端呈现内容如下图:

java jit阈值 java阈值告警_java jit阈值_03

3、知识库助力快速排障

告警触发后,可登录日志平台,在“知识”界面搜索相应告警并查看详情。

java jit阈值 java阈值告警_Java_04

一线值班或运维人员可根据系统、主机及告警关键信息,快速定位故障,并根据知识库中的处理流程,快速处理不同类型的 Java 告警。

4、建立基线,优化告警阈值,提升运营管理水平

统计每类 Java 告警的告警数量及时间段;

统计所有应用系统 Java 告警总数量及时间段;

统计新上线系统 Java 异常数量及时间段;

统计 Java 告警数的主机 Top 10、应用系统 Top 10 和模块 Top 10。

根据上述统计信息,可形成一条 Java 应用系统的运维基线。根据该基线逐步调整和优化告警阈值,可从运营管理的角度减少告警发生,降低日常运维工作量。