警报功能是SpringBoot-API-Scheduler的一个重要特性,它能够监控API任务的执行情况,并在断言失败率达到设定阈值时自动触发警报通知。该功能可以帮助您及时发现API服务的问题并采取相应措施。
- 周期性检查:系统每小时自动检查一次所有启用警报的任务
- 失败率统计:对于每个任务,系统会统计指定时间窗口内API执行的断言失败率
- 阈值比较:将计算出的失败率与配置的阈值进行比较
- 触发警报:如果失败率超过阈值,则触发警报并向指定API发送通知
- 记录保存:所有警报事件都会被记录下来供后续查看和分析
- 作用:设置触发警报的断言失败率阈值
- 取值范围:1-100
- 示例:设置为50表示当任务在指定时间窗口内的断言失败率超过50%时触发警报
- 作用:定义检查时间窗口大小,同时也是检查频率的重要参数
- 取值范围:5-1440分钟(1天)
- 说明:系统会检查任务在过去N分钟内的执行记录(N为该值),同时每10分钟检查一次
- 作用:指定接收警报通知的API地址
- 格式:完整的URL地址,如
https://api.example.com/alert - 说明:当警报触发时,系统会向该地址发送HTTP请求
- 支持的变量:
${taskId}:任务ID${taskName}:任务名称${failureRate}:失败率${failureCount}:失败次数${totalCount}:总执行次数
- 选项:GET 或 POST
- 默认值:POST
- 说明:发送警报通知时使用的HTTP方法
- 作用:定义发送警报请求时的HTTP头部信息
- 格式:JSON字符串
- 示例:
{"Content-Type": "application/json", "Authorization": "Bearer token123"}
- 作用:定义发送警报请求时的请求体内容
- 格式:JSON字符串
- 支持的变量:
${taskId}:任务ID${taskName}:任务名称${failureRate}:失败率${failureCount}:失败次数${totalCount}:总执行次数
- 示例:
{"message": "任务[${taskName}]断言失败率过高", "failureRate": "${failureRate}%"}
- 作用:控制是否启用警报功能
- 选项:勾选启用,不勾选禁用
- 说明:只有启用后警报功能才会生效
警报会在以下条件同时满足时触发:
- 任务的警报功能已被启用
- 在过去的N分钟内(N为检查间隔配置值)有API执行记录
- 这些执行记录中的断言失败率超过了设定的阈值
失败率 = (断言失败次数 / 总执行次数) × 100%
其中:
- 断言失败次数:在检查时间窗口内,断言结果为失败的执行次数
- 总执行次数:在检查时间窗口内的总执行次数
- 登录系统管理界面
- 在任务管理页面点击"警报配置"按钮
-
设置失败率阈值:
- 根据业务需求设置合适的阈值
- 一般建议设置为10-50之间
-
设置检查间隔:
- 根据任务执行频率设置合适的时间窗口
- 如任务每5分钟执行一次,可设置检查间隔为30分钟
-
配置警报API地址:
- 填写接收警报通知的API地址
- 确保该地址可以正常访问
-
选择请求方法:
- 通常选择POST方法
- 根据接收端API的要求选择
-
配置请求头:
- 如需身份验证,添加相应的认证头
- 设置正确的Content-Type
-
编写请求体:
- 使用支持的变量构建有意义的警报消息
- 确保JSON格式正确
-
启用警报功能:
- 勾选启用选项激活警报功能
点击"保存配置"按钮完成警报配置。
系统提供了警报记录查看功能,您可以:
- 在导航栏点击"警报记录"进入记录页面
- 查看所有警报事件的详细信息
- 按任务名称筛选记录
- 记录按触发时间倒序排列
在配置警报API的请求体时,可以使用以下变量:
| 变量名 | 说明 | 示例值 |
|---|---|---|
${taskId} |
任务ID | "task-12345" |
${taskName} |
任务名称 | "获取用户信息" |
${failureRate} |
断言失败率 | "30%" |
${failureCount} |
断言失败次数 | "3" |
${totalCount} |
总执行次数 | "10" |
- 高重要性任务:阈值设为10-20%,确保及时发现问题
- 普通任务:阈值设为30-50%,避免频繁误报
- 低重要性任务:阈值设为50%以上,只关注严重问题
- 高频任务(每分钟执行):检查间隔设为30-60分钟
- 中频任务(每小时执行):检查间隔设为120-240分钟
- 低频任务(每天执行):检查间隔设为720-1440分钟
建议警报接收API具备以下能力:
- 能够处理重复警报(同一问题可能多次触发警报)
- 能够记录警报来源和详细信息
- 能够区分不同类型的警报
- 支持多种通知方式(邮件、短信、微信等)
- 接收警报:警报API接收到警报通知
- 记录日志:将警报信息记录到日志系统
- 发送通知:通过邮件、短信等方式通知相关人员
- 问题排查:根据警报信息排查问题原因
- 问题解决:修复导致警报的问题
- 验证恢复:确认问题已解决,警报恢复正常
-
警报未触发
- 检查任务是否启用了警报功能
- 确认任务在检查时间窗口内有执行记录
- 验证失败率是否确实超过了阈值
- 检查系统时间是否准确
-
警报API未收到通知
- 检查警报API地址是否正确
- 验证网络连接是否正常
- 确认请求方法、请求头和请求体配置是否正确
- 查看系统日志是否有错误信息
-
警报过于频繁
- 适当提高失败率阈值
- 增加检查时间窗口(增大检查间隔)
- 优化API任务减少断言失败
- 查看任务执行日志:检查任务的断言执行结果
- 手动计算失败率:根据日志记录手动计算失败率验证系统计算是否正确
- 临时调整配置:为了测试可以临时降低阈值或减小检查间隔
- 查看系统日志:在系统日志中查找警报相关的日志信息
id: 配置IDtask_id: 关联的任务IDfailure_rate_threshold: 失败率阈值check_interval: 检查间隔(分钟)api_url: 警报API地址http_method: 请求方法headers: 请求头(JSON格式)body: 请求体(JSON格式)enabled: 是否启用create_time: 创建时间update_time: 更新时间last_check_time: 上次检查时间
id: 记录IDtask_id: 关联的任务IDtask_name: 任务名称failure_rate: 失败率failure_count: 失败次数total_count: 总执行次数alert_message: 警报消息api_url: 调用的API地址response: API响应结果alert_time: 警报触发时间create_time: 创建时间
- 系统限制:目前系统中只能有一个警报配置记录,这是全局唯一的配置
- 检查频率:警报检查每小时执行一次,不能自定义检查频率
- 时间窗口:检查间隔既决定了检查频率也决定了统计时间窗口
- 数据保留:警报记录会保留30天,之后会被自动清理
- 网络依赖:警报功能依赖网络通信,确保系统可以访问配置的警报API地址
- 新增警报功能
- 支持基于断言失败率的警报触发机制
- 提供警报配置界面
- 实现警报记录查看功能
- 支持通过HTTP API发送警报通知