OneUptime 异常监控器:基于 OpenTelemetry 异常计数与阈值告警的完整配置指南
OneUptime 异常监控器基于 OpenTelemetry 异常计数与阈值告警的完整配置指南【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime在 OneUptime 监控与可观测性平台中应用级异常Application Exception是判断服务稳定性的核心信号之一。本文以 OneUptime 文档站中的异常监控器Exceptions Monitor页面为主体完整讲解如何创建异常监控器、配置异常过滤器异常类型、消息文本搜索、时间窗口等、编写异常数量 比较运算符的监控判定条件并结合仓库源码 MonitorStepExceptionMonitor.ts 说明每个配置项在底层是如何编译成分析库Analytics查询条件的帮助你既能照着文档完成实操也能理解每个参数的真实语义与默认值。一、功能概述异常监控器解决什么问题异常监控器用于统计并过滤符合特定条件的应用异常并在一定时间窗口内异常数量超过你配置的阈值时触发告警通知。OneUptime 会基于指定 Telemetry 服务上报的异常数据在一个可配置的时间窗口内进行计数评估。借助异常监控器你可以做到在应用出现**异常数量突增spike**时收到通知针对特定异常类型如NullPointerException、TypeError做定向监控按异常消息文本搜索并盯住特定错误如out of memory将已解决resolved与活跃active异常分开统计避免已修复的问题反复告警通过错误模式发现应用稳定性问题。二、创建异常监控器的操作步骤在 OneUptime 仪表板中进入Monitors监控器页面点击Create monitor创建监控器在监控器类型中选择Exceptions异常选择要监控的Telemetry 服务一个或多个按需配置异常过滤器与判定条件criteria条件。三、配置选项详解含源码级语义3.1 Telemetry 服务telemetryServiceIds选择一个或多个需要监控异常的服务。前提是这些服务必须已通过 OpenTelemetry 向 OneUptime 上报异常数据。从源码结构看该字段在类型定义中为telemetryServiceIds: ArrayObjectID见 MonitorStepExceptionMonitor.ts。toAnalyticsQuery方法会把它编译为分析查询中的primaryEntityId new Includes(...)条件——即只统计属于所选服务的异常记录如果该数组为空则不加该约束。此外源码中还暴露了一个文档未展开但实际存在的可选字段entityKeys: Arraystring注释说明它用于把监控器限定到携带特定实体键如 host / pod / container 等稳定遥测实体键的异常记录服务端编译为hasAny(entityKeys, [...])。对较老的监控器该字段可能为undefined属于向后兼容设计。这意味着你可以在服务维度之下进一步按实体主机/容器等缩小监控范围。3.2 异常过滤器参数表过滤器说明源码字段默认值异常类型Exception types按异常类型名称过滤如NullPointerException、TypeErrorexceptionTypes: Arraystring[]不过滤消息Message在异常消息文本中进行搜索message: string不过滤包含已解决Include resolved是否把已解决的异常计入统计includeResolved: booleanfalse包含已归档Include archived是否把已归档的异常计入统计includeArchived: booleanfalse时间窗口Time window回溯多少秒查找异常单位秒lastXSecondsOfExceptions: number60以上默认值与 MonitorStepExceptionMonitorUtil.getDefault() 完全一致public static getDefault(): MonitorStepExceptionMonitor { return { telemetryServiceIds: [], entityKeys: [], exceptionTypes: [], message: , includeResolved: false, includeArchived: false, lastXSecondsOfExceptions: 60, }; }3.3 过滤器如何编译为查询源码解读MonitorStepExceptionMonitorUtil.toAnalyticsQuery是理解每个过滤器行为的关键MonitorStepExceptionMonitor.ts异常类型非空时生成exceptionType new Includes(exceptionTypes)即异常类型落在你给出的列表中才命中消息搜索非空时生成message new Search(message)对异常消息做文本搜索匹配时间窗口当lastXSecondsOfExceptions有值时以当前时间为终点、当前时间 − N 秒为起点生成time new InBetween(startDate, endDate)条件——这就是过去 N 秒内的异常数这一计数口径的来源服务范围与实体键分别编译为primaryEntityId Includes(...)与entityKeys Includes(...)服务端为hasAny匹配。也就是说异常计数不是一个独立的计数器而是每次评估时对上述分析查询ExceptionInstance 记录集合实时求值并计数的结果。监控器配置在 MonitorStepExceptionMonitor.ts 中还提供了fromJSON/toJSON双向序列化用于监控器的持久化与导入导出。四、监控条件Criteria配置4.1 可用的检查类型检查类型说明异常数量Exception count时间窗口内符合过滤器条件的异常数量4.2 可用的比较运算符Filter typesGreater than大于—— 异常数量超过阈值Less than小于—— 异常数量低于阈值Greater than or equal大于等于—— 异常数量等于或超过阈值Less than or equal小于等于—— 异常数量等于或低于阈值Equal等于—— 异常数量精确等于阈值Not equal不等于—— 异常数量不等于阈值。这组运算符对应 OneUptime 通用的 MonitorCriteriaInstance 判定框架监控器按调度周期执行上述计数 比较判定判定为真时即产生告警Alert。4.3 典型条件示例可直接照抄配置示例 160 秒内超过 10 个异常时通知时间窗口60秒检查项异常数量比较运算符Greater than大于阈值10含义每个评估周期统计过去 60 秒内的异常总数只要总数超过 10 就触发告警——典型的异常突增防线。示例 2每出现一次 NullPointerException 就通知异常类型NullPointerException时间窗口60秒检查项异常数量比较运算符Greater than大于阈值0含义只要窗口内出现任意一次数量 0NullPointerException立即触发告警适合对致命错误零容忍的场景。示例 3监控包含特定消息的异常消息out of memory时间窗口300秒检查项异常数量比较运算符Greater than大于阈值0含义按消息文本搜索匹配out of memory把窗口放宽到 300 秒5 分钟窗口内出现一次就告警——适用于低频但高危的错误。五、前置条件OpenTelemetry 数据接入异常监控器要求你的应用通过OpenTelemetry将异常数据上报到 OneUptime否则监控器无数据可评估。接入方式可参考文档站中的 OpenTelemetry 指南。需要注意的适用前提只有已在 OneUptime 中注册并正常上报的 Telemetry 服务才能出现在监控器的服务选择列表中时间窗口内的计数依赖异常记录的时间戳因此应用时钟漂移过大会影响过去 N 秒的统计准确性默认参数includeResolvedfalse、includeArchivedfalse、窗口 60 秒意味着默认只统计活跃且未归档的异常如果你希望把已解决异常也纳入历史统计口径必须显式打开对应开关。六、小结从配置到评估的完整链路把文档流程与源码实现串起来异常监控器的工作链路是配置在 UI 中指定服务、过滤器类型 / 消息 / 已解决 / 已归档 / 窗口秒数与判定条件对应 MonitorStepExceptionMonitor.ts 中的MonitorStepExceptionMonitor结构并经toJSON持久化编译每次评估时toAnalyticsQuery将配置编译为对 ExceptionInstance 记录的分析查询IncludesSearchInBetween判定对窗口内命中的异常计数套用 Greater than 等比较运算符告警判定为真时按监控条件产生 Alert并按你配置的告警策略发送通知。掌握这套过滤器 → 查询编译 → 计数 → 比较判定的链路后你就可以针对任意异常模式用最少配置搭出精准的异常告警规则并在需要时依据 MonitorStepExceptionMonitor.ts 的源码语义对行为做精确验证。【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考