news 2026/9/20 22:27:27

OneUptime 手动监控器(Manual Monitor)完全指南:用 API 与状态页驱动的纯人工监控方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OneUptime 手动监控器(Manual Monitor)完全指南:用 API 与状态页驱动的纯人工监控方案

OneUptime 手动监控器(Manual Monitor)完全指南:用 API 与状态页驱动的纯人工监控方案

【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime

手动监控器(Manual Monitor)是 OneUptime 中唯一一种完全不做自动化检查的监控器类型:它没有探针(Probe)、没有监控间隔、没有自动判定的告警条件,监控器的状态完全由你在仪表盘或通过 API 手动设定。本文以 OneUptime 官方文档(法文版原文)为核心脉络,并结合仓库源码深入讲解手动监控器的类型定义、创建步骤、状态更新方式、事件与告警联动,以及它与其它监控器类型在底层实现上的本质差异。读完本文,你将掌握如何在 OneUptime 中用最少的配置接入外部监控工具、托管无法自动探测的服务,并在状态页上对外呈现受控的状态信息。

概述:手动监控器是什么

OneUptime 官方文档对手动监控器的定义非常明确:手动监控允许你创建状态完全由人工或通过 API 管理的监控器,OneUptime 不执行任何自动化检查——你直接控制监控器的状态。

在源码层面,这一设计由 MonitorType 枚举 落地:Manual = "Manual"是枚举中的一个独立值,与WebsiteAPIPingHost等类型平级,但在整个平台的调度、探测、评估体系中它都被特殊对待。MonitorTypeHelper中提供了一系列类型能力判断函数,手动监控器在每一条判断路径上都返回"否"或"无",这正是文档所说"不进行任何自动化检查"的代码级印证(详见下文"与其他监控器的底层差异"一节)。

简单来说,手动监控器就是一个由你亲手维护的占位符(placeholder)。官方文档列出了它最典型的四类用途:

  • 与外部监控工具集成,由外部工具通过 OneUptime API 回写状态;
  • 追踪无法被自动化监控的服务或系统;
  • 为没有自动化健康检查的组件管理事件(Incident);
  • 代表你以人工方式跟踪状态的第三方依赖。

在源码中的定位:从枚举到类型能力

要理解手动监控器,先看它在代码里的"身份"。在 MonitorType.ts 中,MonitorTypeHelper把全部监控器类型按用途分类展示(getMonitorTypeCategories),MonitorType.Manual被单独归入"Other"(其他)分类:

{ label: "Other", monitorTypes: [MonitorType.Manual], },

同文件还给出了Manual类型在监控器创建选择器中的展示信息:

  • 标题:Manual
  • 描述:"No automatic checks. You set the status yourself, or from an external tool."(无自动检查。你自己或由外部工具设定状态。)
  • 图标IconProp.EmptyCircle(空心圆)
  • 搜索关键词staticexternalintegrationplaceholderno checkthird party

这些关键词意味着用户在创建监控器时,即使只记得"external"、"placeholder"这类描述性词汇,也能在类型选择器中检索到手动监控器。这与文档"第三方依赖""外部工具"的定位完全一致。

在数据模型层面,监控器的类型与当前状态分别存储于 Monitor 数据库模型:monitorType字段(L877)记录监控器类型,currentMonitorStatusIdcurrentMonitorStatus(L908-L925、L970)记录当前状态。手动监控器的monitorType固定为Manual,其currentMonitorStatus只会在你主动更新时改变。

创建手动监控器

在 OneUptime 仪表盘中创建手动监控器非常简单,官方文档给出了四步操作:

  1. 进入 OneUptime 仪表盘的监控器(Monitors)页面;
  2. 点击创建监控器(Create Monitor)
  3. 在监控器类型中选择手动(Manual)
  4. 为监控器输入名称描述

由于手动监控器没有探测步骤(probe step)与判定条件(criteria),创建流程到此即告完成——不需要配置监控间隔、不需要选择探针、不需要编写任何检查规则。这是它与其它所有监控器类型在创建体验上最显著的差异。

工作原理:没有间隔、没有探针、没有自动评估

官方文档用一句话概括了手动监控器的工作方式:

手动监控器没有监控间隔、没有探针、也没有自动化的条件评估。监控器的状态会一直保持为你设定的值,直到你再次修改它。

这一点在源码中有非常直接的印证。MonitorTypeHelper提供了以下能力判断方法(MonitorType.ts):

能力判断方法返回规则对 Manual 的结果
isProbableMonitor()(L835-L852)仅 API、Website、Ping、Port 等列入探测清单的类型为 truefalse——不会进入探针的工作列表
doesMonitorTypeHaveInterval()(L903-L905)直接返回isProbableMonitor()的结果false——没有监控间隔可配置
doesMonitorTypeHaveCriteria()(L907-L909)return monitorType !== MonitorType.Manualfalse——没有告警条件(criteria)可配置
doesMonitorTypeHaveGraphs()(L911-L934)Manual 不在返回 true 的类型清单中false——没有监控曲线/图表

也就是说,从调度器、探针分发到告警评估、图表渲染,手动监控器在所有自动化路径上都被显式排除。它唯一的"数据源"就是人工或 API 写入的状态值。这正是它适合作为占位符的根本原因:平台不会用任何自动化任务去干扰你设定的状态。

更新状态:仪表盘与 API 双通道

手动监控器没有自动状态流转,因此"更新状态"是使用它的核心操作。官方文档明确给出了两种方式:

  • 仪表盘(Dashboard)——直接在 OneUptime 仪表盘中修改监控器的状态;
  • API——通过 OneUptime API 以编程方式更新监控器状态。

仪表盘方式适合人工值守场景:当你在状态页上要对外展示某个组件的状态时,直接点击修改即可。API 方式则适合自动化场景:外部监控工具、脚本或 CI/CD 流水线可以在检测到问题时调用 OneUptime API 回写状态。结合源码中的 ApiKey / ApiKeyPermission 模型 可以推断,平台提供了基于 API Key 的鉴权机制供外部系统调用,实际使用时请以当前 OneUptime 实例的 API 文档为准获取具体的端点与参数。

无论是哪种方式,最终落地的都是对 Monitor 模型 中currentMonitorStatus字段的写入,状态一旦更新便会立即反映在监控器列表与关联的状态页组件上。

事件与告警:手动监控器同样参与

"没有自动检查"并不等于"不能产生告警"。官方文档强调:你可以像对待其它任何监控器类型一样,对手动监控器创建事件(Incident)和告警(Alert)。这带来了三个典型能力:

  • 跟踪外部监控服务的停机时间——外部工具通过 API 把状态置为异常,你再针对该监控器创建事件;
  • 在问题被人工上报时手动创建事件——例如业务侧反馈某个流程不可用;
  • 在状态页(Status Page)上使用手动监控器向用户传达状态——这是它作为"状态页占位符"的核心用法。

从数据模型看,事件(Incident)与监控器之间存在标准的关联关系,监控器可以触发或挂载事件与告警,这一机制对手动监控器同样生效,因此你完全可以把状态页上的"第三方依赖""线下业务流程"等组件建模为手动监控器,并为其配置事件与告警流程,而不需要这些组件真的具备可探测的端点。

适用场景一览

官方文档用一张表格总结了手动监控器最典型的五类使用场景:

使用场景描述
第三方服务跟踪你依赖但无法直接监控的外部服务状态
物理基础设施表示没有网络监控能力的硬件或物理系统
业务流程跟踪影响服务状态的非技术流程
API 驱动状态允许外部工具通过 OneUptime API 更新监控器状态
状态页占位符在状态页上展示由 OneUptime 外部管理的组件

这张表也呼应了前文源码中的描述与关键词:externalintegrationplaceholderthird party——手动监控器正是为"我无法自动探测,但需要在平台上统一呈现和告警"的场景而设计。

手动监控器与其他监控器类型的底层差异

为了更清楚地理解"手动"到底意味着什么,可以把MonitorTypeHelper中的类型能力判断汇总成一张对比表。以最常见的Website(网站)监控器为参照:

能力项MonitorType.ManualMonitorType.Website(示例)
是否进入探针工作列表(isProbableMonitor
是否有监控间隔(doesMonitorTypeHaveInterval
是否有判定条件(doesMonitorTypeHaveCriteria
是否产生监控图表(doesMonitorTypeHaveGraphs
分类归属OtherBasic Monitoring
图标EmptyCircle(空心圆)Globe(地球)

由此可见,手动监控器在平台内部是被"完整剥离"了自动化能力的监控器:它不参与探针调度、不评估告警条件、不生成监控曲线,只保留监控器的身份、状态字段、事件告警关联与状态页展示能力。它像是一个"空壳"监控器,把状态的判定权完全交还给你。

计费与配额:手动监控器免费且不限量

对于关心成本与配额的用户,源码中还透露了一个重要信息。在 MonitorType.ts 中,isBilledAsActiveMonitor()方法的注释明确指出:

该方法镜像了服务端实际的计费逻辑——ActiveMonitoringMeteredPlan只统计类型不是 Manual 的监控器。手动监控器免费且不限量。

public static isBilledAsActiveMonitor(monitorType: MonitorType): boolean { return !this.isManualMonitor(monitorType); }

也就是说,无论你在状态页上挂多少个手动占位符组件,都不会计入活跃监控(Active Monitoring)的计费额度,也不会触发免费套餐的用量告警。对于需要大量在状态页上呈现外部依赖、线下设施组件的团队来说,这是一个非常实用的特性。

小结

手动监控器是 OneUptime 监控体系中的一个"特例存在":它没有探针、没有间隔、没有条件评估,状态完全由人工或 API 驱动,同时保留事件、告警与状态页集成能力,并且免费、不限量。从源码角度看,MonitorType 枚举与 MonitorTypeHelper 通过一系列能力判断方法把 Manual 从自动化链路中完整剥离,只留下"状态容器"的职责;从使用角度看,它最适合作为外部依赖、物理设施、业务流程与状态页占位符的建模载体。

如果你正在接入外部监控工具,或在状态页上需要呈现平台之外管理的组件,不妨从创建一个手动监控器开始——它没有自动检查带来的噪音,只有你想要的确定性。

【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 22:27:02

OpenMMO交易系统详解:单一金币货币的经济设计分析

OpenMMO交易系统详解:单一金币货币的经济设计分析 【免费下载链接】OpenMMO 项目地址: https://gitcode.com/GitHub_Trending/open/OpenMMO OpenMMO 是一款 AI 智能体与人类玩家平等共处的 3D MMORPG,其交易系统围绕"单一金币货币 买卖价差…

作者头像 李华
网站建设 2026/9/20 22:25:45

PETS5口语备考全攻略:历年真题高效使用与评分规则详解

简介:这是一份面向PETS5(全国外语水平考试英语五级)考生的口语历年真题PDF,覆盖自我介绍、家庭背景、工作与学习经历、兴趣爱好、合作讨论等核心环节,并附有考官引导语与话题卡示例,可用于熟悉真实考场流程…

作者头像 李华