十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OneUptime 事件申报完全指南:四种声明方式、字段解析与创建时的后台执行链路

OneUptime 事件申报完全指南:四种声明方式、字段解析与创建时的后台执行链路 可观测性后端运维前端云原生微服务AI Agent【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址https://gitcode.com/GitHub_Trending/on/oneuptime点击查看免费下载事件Incident申报是 OneUptime 一切事件管理的起点创建一条记录、分配事件编号、触发值班策略、并按需通知状态页订阅者。本文以 OneUptime 官方文档《Declarar un incidente》为主体结合仓库源码深入讲解四种申报方式手动向导、模板、监控条件自动申报、API、每一步表单字段的语义、事件编号机制以及服务端在事件创建瞬间执行的完整规则链帮助你掌握从手工敲入到全自动声明的完整实战方案。四种申报方式一览OneUptime 中事件只有四种进入方式且殊途同归——最终都会在Incident表中写入一行数据带有严重级别severity、当前状态current state和受影响资源列表。区别只在于谁在填字段你的诉求选择手工打开一个事件逐项填写Declarar incidente申报事件向导打开重复出现的事件类型字段已预填Crear desde plantilla从模板创建监控探测失败时自动打开事件监控条件过滤器中的When filters match, declare an incident.过滤器匹配时声明事件开关从自己的代码、脚本或其它工具创建POST /api/incident这四种方式写入的是同一个模型Incident 模型定义因此由探针自动申报的事件与值班人员手工申报的事件完全一致唯一的差别是少量由服务端填充的控制列如isCreatedAutomatically、createdCriteriaId、createdByProbe。方式一手工申报事件进入Incidentes → Todos los Incidentes事件 → 全部事件点击事件列表右上角的Declarar incidente申报事件按钮会打开一张标题为Declarar nuevo incidente申报新事件的卡片表单分五步Detalles del incidente事件详情、Recursos afectados受影响资源、Roles de Incidente事件角色、De guardia值班和Más更多。底部提交按钮同样叫Declarar incidente。只有第一步包含必填字段。如果时间紧迫填完事件详情直接提交即可——资源、角色、值班策略都可以稍后在事件页面上再补充。第一步事件详情Título标题— 必填。所有人都会在列表、Slack以及若事件可见状态页上看到的单行摘要。占位符为Incident Title。Descripción描述— 可选使用 Markdown 编写。该字段会展示在状态页上因此应面向客户而非团队内部撰写。可稍后在事件侧边菜单的Descripción处编辑。Declarado el申报时间— 表单中必填默认值为当前时间。它是整个事件持续时间的计时起点因此补录已发生的事件时请把它回拨到实际开始时间。对应的数据列是declaredAt模型层面定义为必填且默认now()见 Incident.ts。Gravedad del Incidente事件严重级别— 必填。从项目已配置的严重级别中选择新项目自带Incidente crítico严重事件、Incidente mayor重大事件和Incidente menor轻微事件。对应外键incidentSeverityId。Estado del Incidente事件状态— 可选。留空则事件落在标记为isCreatedState的状态上新项目默认是Identificado已识别。仅当补录一个已越过该阶段的事件时才需要手动修改。对应currentIncidentStateId外键。状态下拉框异常如果项目没有任何带isCreatedState标记的状态创建调用会失败并提示前往设置添加创建状态。这通常只发生在状态被大量编辑过的项目中可参考 Estados y severidades de incidentes事件状态与严重级别。第二步受影响资源Recursos afectados受影响资源— 一个统一的搜索框可附加监控器monitors、主机hosts、Kubernetes 集群、Docker 主机、Podman 主机和服务等。底层它们是事件的不同关联关系monitors、hosts、kubernetesClusters、dockerHosts、podmanHosts、services等表单将其合并为一个选择器。从模型源码可以看到这些多对多关系表如IncidentMonitor、IncidentHost、IncidentKubernetesCluster、IncidentDockerHost、IncidentPodmanHost均定义在 Incident.ts 中。Change Monitor Status to将监控器状态改为— 可选。选择一个监控器状态应用于本事件附加的所有监控器从而把申报事件和标记监控器降级合并为一次操作。对应changeMonitorStatusToId外键。即使看似多余也要附加监控器事件与状态页之间的关联正是通过事件上的监控器建立的——当某个状态页的资源是本事件的监控器之一时该状态页才会展示这个事件。如果事件未附加任何监控器发送给订阅者的状态变更通知会被直接跳过。详见 Recursos y grupos de la página de estado。第三步事件角色Asignar roles del incidente分配事件角色— 为团队成员分配项目定义的角色部分角色允许多个用户。角色在Incidentes → Ajustes → Roles de Incidente事件 → 设置 → 事件角色中配置可定义响应期间可分配的角色例如 Incident Commander事件指挥官、Responder响应人等。跳过此步时若首次状态变更时无人占据 Incident Commander 角色系统会自动分配一位。第四步值班Política de guardia值班策略— 多选选择在本事件创建时执行的值班策略对应事件上的onCallDutyPolicies字段。这是值班策略直接附加到事件的唯一位置。严重级别本身不携带值班策略严重级别只是一个标签只在值班规则中作为匹配条件影响通知。在Incidentes → Reglas → Reglas de guardia事件 → 规则 → 值班规则中配置的规则会把它们的策略叠加到此处选择的策略之上最终执行集合是两者去重后的并集。第五步更多Etiquetas标签— 可选高级功能拥有这些标签访问权限的团队成员才能访问该事件。Notificar a suscriptores de la página de estado通知状态页订阅者— 复选框默认勾选。控制是否在事件创建时向订阅者发送邮件对应shouldStatusPageSubscribersBeNotifiedOnIncidentCreated字段。内部噪音类记录请取消勾选。Incidente privado私有事件— 复选框默认不勾选对应isPrivate字段。私有事件仅对其属主用户、属主团队成员、项目管理员和项目属主可见并在所有状态页上隐藏不受其它设置影响。事件列表会用红色Private徽标标记它。Should be visible on status page?是否显示在状态页上对应isVisibleOnStatusPage不在此向导中默认值为true。稍后可在事件侧边菜单的Ajustes设置中修改界面中标记为Visible en la página de estado在状态页上可见。方式二从模板申报如果反复申报同类型事件同样的标题模式、同样的严重级别、同样的值班策略把它保存为模板只需一次。点击Crear desde plantilla从模板创建位于Declarar incidente旁边的轮廓按钮打开Crear incidente a partir de plantilla从模板创建事件模态框内含Seleccionar plantilla de incidente选择事件模板下拉框。选择模板后创建表单会以预填方式打开提交前可修改任何内容。若项目还没有模板则会看到No Incident Templates无事件模板模态框其中的Create Template创建模板按钮会带你到Incidentes → Ajustes → Plantillas de Incidentes事件 → 设置 → 事件模板。模板用自有的六步向导构建——Información de la plantilla模板信息、Detalles del incidente事件详情、Recursos afectados受影响资源、De guardia值班、Propietarios属主、Etiquetas标签字段作用Nombre de la plantilla模板名称模板在选择器中的标识。Descripción de la plantilla模板描述留给未来自己的使用说明。Título标题预填到事件中的标题。Descripción描述预填到事件中的 Markdown 描述。Gravedad del Incidente事件严重级别预填到事件中的严重级别。Estado inicial del incidente事件初始状态该模板事件起始时的状态。Recursos afectados受影响资源要附加的监控器、主机、集群和服务。Change Monitor Status to应用到附加监控器的监控器状态。Política de guardia值班策略事件创建时执行的策略。Propietario - Equipos属主-团队该模板事件的属主团队。Propietario - Usuarios属主-用户该模板事件的属主用户。Etiquetas标签应用到事件的标签。几条快速规则模板不在模板列表中直接编辑创建后打开它才能修改。模板只填充留空的字段。在创建页面上模板作为可覆盖的预填值应用在 API 中只有当请求把某个字段留为undefined时服务端才从模板填充该字段。调用方传入的值永远优先。方式三从监控条件自动申报大多数事件不应需要人工输入。在监控器的条件编辑器中打开When filters match, declare an incident.过滤器匹配时声明事件开关会出现一个Crear incidente创建事件区域和Añadir incidente添加事件按钮——同一个条件过滤器可以声明多个事件。每条记录包含Título del incidente事件标题— 支持模板变量占位符示例{{monitorName}} is down。Gravedad严重级别— 必填。Descripción del incidente事件描述— 同样支持模板变量。De guardia → Políticas de guardia值班策略— 事件创建时执行的策略。Roles de Incidente事件角色— 预分配团队成员到角色。Propiedad y etiquetas → Equipos propietarios属主团队、Usuarios propietarios属主用户、Etiquetas标签。Opciones avanzadas高级选项→ Resolver incidente automáticamente条件不再匹配时自动解决事件、Mostrar incidente en la página de estado在状态页显示事件、Incidente privado私有事件和Notas de Remediación补救说明。标题、描述和补救说明中可用的完整{{variable}}标记列表见 Plantillas de incidentes y alertas事件与告警模板。此类事件会被服务端打上标记isCreatedAutomatically被设置为truecreatedCriteriaId记录是哪个条件过滤器触发的createdByProbe记录是哪个探针观察到的对应模型中的createdByProbeId外键与isCreatedAutomatically、createdCriteriaId字段见 Incident.ts。除此之外它们与手工申报的事件行为完全一致。方式四通过 API 申报事件模型暴露了标准 CRUD 端点因此POST /api/incident即可创建事件。使用在Ajustes del proyecto → Claves API项目设置 → API 密钥生成的 API 密钥进行认证放在apikey请求头中发送——密钥本身标识了项目因此无需单独传项目 IDcurl -X POST https://oneuptime.com/api/incident \ -H apikey: $ONEUPTIME_API_KEY \ -H Content-Type: application/json \ -d { data: { title: Checkout latency above SLO, description: Investigating elevated p99 latency on the checkout service., incidentSeverityId: incident-severity-id } }请求体中常用字段title— 唯一真正必须提供的字段。declaredAt— 此处可选虽然表单必填。省略时服务端使用当前时间。incidentSeverityId与currentIncidentStateId— 服务端会校验两者与 API 密钥属于同一项目否则拒绝请求。Change Monitor Status to背后的监控器状态也执行同样的校验。从 IncidentService.ts 的创建前校验链可以看到服务端在分配事件编号之前会先行校验事件严重级别、事件状态、监控器状态、SLO 等引用是否都属于该项目。createdIncidentTemplateId— 应用保存的模板。省略的字段从模板填充显式传入的字段保持不变。关联端点为/api/incident-state、/api/incident-severity和/api/incident-state-timeline。仓库自带的 API 参考文档 包含每个端点的精确请求/响应格式包括如何表达监控器等关系字段。事件编号与前缀每个事件在创建时都会从项目级计数器获得一个顺序编号。它存储在两列中incidentNumber纯整数和incidentNumberWithPrefix实际展示的值。未配置前缀时展示值为#42这种形式。修改方法进入Incidentes → Ajustes → Más Ajustes事件 → 设置 → 更多设置。Prefijo de número编号前缀卡片中有Prefijo de número de incidente事件编号前缀字段最多 20 个字符占位符INC-设置后同一事件将显示为INC-42。留空则保持默认的#。该卡片还包含Prefijo de número de episodio de incidente事件情节编号前缀用于情节episode编号。在服务端编号通过ProjectService.incrementAndGetIncidentCounter(projectId)获取并在创建前逻辑中写入incidentNumber与incidentNumberWithPrefix无前缀时形如#42有前缀时形如INC-42见 IncidentService.ts。编号显示为事件列表的第一列可点击进入事件、事件Vista General概览中的Número de incidente事件编号事件动态feed中的创建消息也会使用incidentNumberWithPrefix || # incidentNumber作为展示名见 IncidentService.ts。事件创建瞬间发生了什么创建调用所做的工作远不止写入一行。按顺序展开服务端补齐空缺。declaredAt取当前时间当前状态取项目的isCreatedState状态事件编号与前缀编号从项目计数器分配。应用模板。若传入了createdIncidentTemplateId仅填充调用方未定义的字段。执行隐私规则。匹配的隐私规则将事件标记为私有。这是最先运行的规则引擎确保后续所有步骤看到的是正确的隐私设置。对应IncidentPrivacyRuleEngineService.applyRulesToIncident见 IncidentService.ts。执行属主规则。添加匹配规则点名的属主用户与属主团队。执行标签规则。添加与事件匹配的标签。执行值班规则。在Incidentes → Reglas → Reglas de guardia中启用且条件匹配的所有规则都把其策略添加到事件上。没有优先级顺序也不短路所有匹配规则都会触发策略会去重。执行 runbook 规则。附加并启动匹配的 runbook。详见 Runbooks。执行值班策略。事件上的所有策略——来自向导、模板继承或规则添加——以IncidentCreated事件类型并行执行。某个策略失败不会阻断其它策略。订阅者入队。若通知状态页订阅者保持开启且事件在状态页上可见则进入队列。投递由后台任务处理不占用你的请求线程。服务端会依据shouldStatusPageSubscribersBeNotifiedOnIncidentCreated将订阅者通知状态置为Pending或Skipped见 IncidentService.ts。触发工作流。On Create Incident创建事件触发器启动基于它构建的任何工作流。详见 Visión general de los flujos de trabajo。从源码看onCreateSuccess中以 Promise 链顺序执行了隐私规则、工作区操作、事件动态创建、状态变更处理、属主添加、监控器状态变更、禁用主动监控、属主规则、标签规则、值班规则、runbook 规则、值班策略执行、事件分组、SLA 创建、提醒调度、AI 事件调查AI SRE与自动补救规则等步骤每一步都有独立的 try/catch单步失败不会阻断整条链见 IncidentService.ts。至此事件活着了计入侧边栏事件菜单的Incidentes Activos活跃事件徽标任何不带isResolvedState标记的状态都算活跃出现在包含其任一监控器的状态页上Línea de Tiempo de Estado状态时间线开始记录。继续阅读Visión general de los incidentes — 事件模型如何融入整体。Estados y severidades de incidentes — 状态标记的作用及如何添加自定义状态。Notas, responsables y actividad de incidentes — 公开/私有备注、属主与活动动态。Configuración y automatización de incidentes — 模板、自定义字段、角色、规则与工作流触发器。Suscriptores y anuncios — 谁会知道你刚申报的事件。Plantillas de incidentes y alertas — 自动申报事件可用的模板变量。赞分享可观测性后端运维前端云原生微服务AI Agent【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址https://gitcode.com/GitHub_Trending/on/oneuptime点击查看免费下载相关推荐OneUptime 事件声明完全指南四种入口、字段全解与创建瞬间的完整执行链OneUptime 事件声明完全指南四种入口、字段全解与创建瞬间的完整执行链 本文以 OneUptime 官方文档《Declaring an Incident可观测性后端运维前端云原生微服务AI AgentOneUptime 事件声明完全指南四种入口、字段详解与创建时服务端自动化流程OneUptime 事件声明完全指南四种入口、字段详解与创建时服务端自动化流程 本文基于 OneUptime 官方文档声明事件Declaring Inci可观测性后端运维前端云原生微服务AI AgentOneUptime 事件声明完全指南四条申报路径、模板与规则引擎背后的源码实现OneUptime 事件声明完全指南四条申报路径、模板与规则引擎背后的源码实现 在 OneUptime开源监控与可观测平台中声明事件Declare可观测性后端运维前端云原生微服务AI Agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表