mcpField
O
openuptime

openuptime

远程服务
openuptime.app云与基础设施22今天更新

关于 openuptime

OpenUptime 是面向网站和基础设施运维团队的开源在线状态监控与状态页服务。它支持多种检查类型、事件管理和告警渠道,可部署在 Cloudflare Workers 或 Docker 中。

主要功能

  1. 01HTTP、TCP、DNS、数据库和心跳检查
  2. 02事件与维护管理
  3. 03支持订阅的公开状态页
  4. 04通过邮件、聊天和 Webhook 告警
  5. 05工作区、项目、角色和 API 密钥

适用场景

  1. 01监控服务可用性和响应缓慢情况
  2. 02跟踪事件和计划维护
  3. 03向订阅者发布服务状态

MCP 相关

MCP 服务允许 Agent 和其他 MCP 客户端通过 `/api/mcp` 的 Streamable HTTP 管理监控器、事件和状态页。支持 OAuth 或 API 密钥授权。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://openuptime.app/api/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

OpenUptime

OpenUptime

开源的运行时间监控和状态页。可在 Cloudflare Workers 上搭配 Postgres 运行,也可在单个 Docker 容器中运行。

托管版本 · 文档 · 参考文档 · MIT 许可证

  • HTTP、TCP、DNS、心跳、PostgreSQL、MySQL 和 Redis 检查,并支持关键词匹配和慢响应告警
  • 事件、维护窗口和公共状态页,并支持通过电子邮件 / RSS 订阅
  • 向 Slack、Lark / Feishu、Telegram、PagerDuty、webhook 和电子邮件发送告警
  • 工作区、项目、角色、API 密钥、供 Agent 使用的 MCP 服务、JSON 导入 / 导出
部分技术栈
apps/apiHono、better-auth、Cloudflare Worker(cron + 队列消费者)
apps/webAstro(静态页面、状态页 SSR)+ React islands
packages/repo存储接口(Repo)和实体类型
packages/db-pgRepo 的 Postgres 实现:Drizzle 架构、迁移

部署到 Cloudflare

该站点在同一域名上运行两个 Worker:

Worker提供服务还负责
openuptime-apiyour-domain/api/*(区域上的 Worker 路由)分钟级 cron、运行检查的队列消费者
openuptime-webyour-domain 上的其他所有内容(Worker 自定义域名)状态页(SSR);通过服务绑定访问 API

将 API 放在同一域名的 /api/* 下,可确保会话 Cookie 保持同源。无需单独的 API 主机名。

开始之前

  • 一个 Cloudflare 账户,以及 DNS 托管在 Cloudflare 上的域名(区域)。
  • 一个可从互联网访问的 Postgres 数据库(Neon、Supabase、RDS 或自建数据库)。Workers 通过 Hyperdrive 连接。
  • Node.js 22+ 和 pnpm(corepack enable 可提供固定版本)。
  • 队列需要 Workers 付费计划(默认)。免费计划下,请改用内联模式:参见参考文档。
1. 获取代码并登录
git clone https://github.com/becoolme/openuptime.git && cd openuptime
pnpm install
cd apps/api && npx wrangler login

除非另有说明,以下所有 npx wrangler … 命令都在 apps/api 中运行。

2. 创建队列和 Hyperdrive
npx wrangler queues create openuptime-checks
npx wrangler hyperdrive create openuptime-prod --connection-string="postgres://user:pass@host:5432/db"

第二条命令会打印一个 ID。在 apps/api/wrangler.jsonc 中取消 hyperdrive 行的注释并粘贴该 ID:

"hyperdrive": [{ "binding": "HYPERDRIVE", "id": "<id printed above>" }],

注释掉的 placement 行是可选的(它会让 Worker 在数据库主机附近运行);除非你有此需求,否则请保留注释。

3. 创建架构

在仓库根目录中运行:

DATABASE_URL="postgres://user:pass@host:5432/db" pnpm db:migrate

该命令只会应用新增内容,因此每次升级后都要再次运行。它不会执行 CREATE SCHEMA,所以没有数据库级 CREATE 权限的角色也可以使用。

4. 将配置指向你的域名

编辑两个文件。在这两个文件中,将 status.example.com 替换为你的域名。

apps/api/wrangler.jsonc 中,zone_name 应填写区域(顶级域名),即使你从子域名提供服务也是如此。 取消 routes 的注释并设置:

"routes": [{ "pattern": "status.example.com/api/*", "zone_name": "example.com" }],
"vars": {
  "BETTER_AUTH_URL": "https://status.example.com",   // public origin: cookies, OAuth, email links
  "WEB_ORIGIN": "https://status.example.com",        // same value
  "EMAIL_FROM": "[email protected]"                 // sender address; optional, see below
}

电子邮件配置为可选项:不配置时,邀请和告警会写入 Worker 日志。若要发送邮件,请先在 Cloudflare 控制面板的 Email Sending 中启用你的域名(参见参考文档)。

apps/web/wrangler.jsonc:

"routes": [{ "pattern": "status.example.com", "custom_domain": true }],
"vars": { "PRODUCT_URL": "https://status.example.com" }   // target of the "Powered by" link on status pages

自定义域名会为你创建 DNS 记录和证书;该主机名不能已有指向其他位置的 DNS 记录。

域名未托管在 Cloudflare 上? 从两个文件中移除 routes,并将 BETTER_AUTH_URL 和 WEB_ORIGIN 设置为 Web Worker 的 https://openuptime-web.<your-subdomain>.workers.dev 地址。随后,Web Worker 会通过服务绑定将 /api/* 转发给 API Worker,从而确保 Cookie 保持同源。

5. 设置密钥
npx wrangler secret put BETTER_AUTH_SECRET     # openssl rand -hex 32
npx wrangler secret put CRON_SECRET            # any long random string; guards /internal/*

如果 wrangler 询问是否先创建 Worker,请回答是。可选:设置 GITHUB_CLIENT_ID 和 GITHUB_CLIENT_SECRET,即可添加“使用 GitHub 登录”。

6. 部署
pnpm exec wrangler deploy                     # in apps/api
cd ../web && pnpm build && pnpm exec wrangler deploy

请先部署 API:Web Worker 会按名称绑定到它。

7. 检查
curl https://status.example.com/api/health    # {"ok":true}

打开域名并注册。创建好自己的账户后,可以在 API 的 vars 中设置 "DISABLE_SIGNUP": "true",然后重新部署以关闭注册(受邀者仍可加入)。

**稍后升级:**拉取代码,运行 pnpm install、pnpm db:migrate,然后依次部署 API 和 Web Worker。

使用 Docker 自托管

一个容器即可运行 API、Web 应用和检查调度器;Postgres 已包含在 compose 文件中。你可以运行已发布的镜像,也可以从源代码构建;两种方式的设置相同。

选项 A:运行已发布的镜像

带标签的发行版已发布到 ghcr.io/becoolme/openuptime,支持 linux/amd64 和 linux/arm64。你无需克隆或构建:

mkdir openuptime && cd openuptime
curl -fsSLO https://raw.githubusercontent.com/becoolme/openuptime/main/docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/becoolme/openuptime/main/.env.docker.example -o .env

编辑 .env:设置 POSTGRES_PASSWORD 和 BETTER_AUTH_SECRET(openssl rand -hex 32),并取消注释 OPENUPTIME_IMAGE。指定一个版本(ghcr.io/becoolme/openuptime:0.1.0),或使用最新发行版(:latest)。然后运行:

docker compose pull && docker compose up -d     # http://localhost:8080

升级:如果指定了版本标签,请更改该标签,然后再次运行相同的两条命令。迁移会在启动时运行。

选项 B:从源代码构建
git clone https://github.com/becoolme/openuptime.git && cd openuptime
cp .env.docker.example .env      # set POSTGRES_PASSWORD and BETTER_AUTH_SECRET (openssl rand -hex 32)
docker compose up -d --build     # http://localhost:8080

升级:运行 git pull,然后运行 docker compose up -d --build。

无论选择哪种方式

架构会在启动时迁移,数据存储在 pgdata 卷中。如果应用不是通过 http://localhost:8080 提供服务,请设置 PUBLIC_URL。电子邮件为可选项;请参阅参考文档。

创建好自己的账户后,在 .env 中设置 DISABLE_SIGNUP=true,并运行 docker compose up -d 以关闭注册(受邀者仍可加入)。

开发

pnpm install
cp .env.example apps/api/.dev.vars   # edit DATABASE_URL and secrets
DATABASE_URL=postgres://user:pass@localhost:5432/openuptime_dev pnpm db:migrate   # same URL as in .dev.vars
pnpm dev:api    # http://localhost:8787  (checks run inline every 15s)
pnpm dev:web    # http://localhost:4321  (proxies /api to the API)
pnpm typecheck

MCP 服务

Agent(Claude、Cursor、Codex 和任何 MCP 客户端)可以通过 /api/mcp 上的 Streamable HTTP 管理监控项、事件和状态页,并使用 OAuth 或 API 密钥进行授权:

claude mcp add --transport http openuptime https://openuptime.app/api/mcp   # or https://<your-host>/api/mcp

客户端设置、作用域和工具列表详见 MCP 文档。 介绍常见工作流的 Agent 技能已随 skills/openuptime 一同发布: npx skills add becoolme/openuptime。 托管服务已在 MCP Registry 中列出,名称为 app.openuptime/mcp;其条目为 server.json。

测试、检查的运行方式、MCP 服务、警报渠道及其他详细信息,请参阅 docs/reference.md。

开源版与托管版

两种版本的监控功能使用相同的代码。位于 openuptime.app 的托管服务增加了套餐、账单和一些仅在该版本中提供的功能;它通过一个接口接入此代码库(Edition,参见 docs/editions.md),因此核心功能不会被锁定或限流。

自托管(此代码库,MIT)托管(openuptime.app)
监控项、事件、状态页、警报渠道、API、MCP全部包含全部包含
限制无:没有套餐、配额或计量免费套餐,付费套餐起价为每月 $5(定价);监控项、检查、电子邮件和历史记录时长取决于套餐
运行方式由你负责:Postgres、Worker 或容器、邮件服务提供商、备份和升级由我们负责;无需安装
SSL 证书监控(到期警报、ssl 监控类型)不包含Lite 及以上套餐
状态页自定义域名不包含Team
数据存储位置你的数据库我们的数据库(托管服务上的 Postgres)

如果你想自行掌控数据和基础设施,或不希望受到任何限制,请选择自托管。如果你不想运行任何服务,请选择托管版。两种版本都会获得相同的核心更新。

贡献与安全

请参阅 CONTRIBUTING.md。请按照 SECURITY.md 中的说明私下报告漏洞,不要在公开 issue 中报告。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。