mcpField
U
Uptimepage

Uptimepage

远程服务
uptimepage.dev云与基础设施50今天更新

关于 Uptimepage

Uptimepage 是用于监控服务可用性、处理事件并发布状态页的平台,面向小型 SaaS 团队、平台和 SRE 团队及自托管用户。它将多种检查、告警、值班轮换与状态页结合,并提供 REST API、Terraform 和 MCP 自动化方式。

主要功能

  1. 01HTTP、TCP、DNS 等监控检查
  2. 02公开状态页与事件更新
  3. 03多渠道告警和升级策略
  4. 04多区域探测与值班轮换
  5. 05REST API、Terraform 和 MCP

适用场景

  1. 01监控网站、证书或后台任务状态
  2. 02向客户发布服务状态和事件进展
  3. 03将检查与通知渠道作为代码管理
  4. 04让 LLM 查询监控并执行受控操作

MCP 相关

MCP 服务通过 Streamable HTTP `/mcp` 向 LLM 客户端提供组织监控数据查询及受控操作。包含只读和写入工具,按权限范围限制并审计,写入操作可要求逐项确认;支持组织范围令牌及 OAuth 2.1 连接器。

配置

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

服务地址https://mcp.uptimepage.dev/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 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

状态页组件显示 90 天的正常运行时间,以及某一天的提示框。

uptimepage

正常运行时间监控、状态页和 on-call。开源,免费起步。5 分钟即可上线。

从多个区域监控 HTTP、TCP、ICMP ping、cron-job 心跳、DNS、TLS 证书和 域名到期时间,以及脚本化的浏览器登录流程——然后将绿色和红色状态转化为精美的 公开状态页,供客户订阅,并通过轮值和升级策略通知值班人员。可通过点击操作、 REST API 或 Terraform 来管理。可自托管单一二进制文件,或使用托管服务。

Terraform Registry Artifact Hub Artifact Hub 许可证:AGPL-3.0

免费试用 →  ·  文档  ·  自托管  ·  Terraform  ·  MCP

uptimepage 仪表板 — 正常运行时间、响应时间和各监控项状态

快速开始

使用托管服务,无需安装:

  1. 使用 GitHub、Google 或电子邮件地址,在 uptimepage.dev 注册——无需信用卡。
  2. 添加监控项:粘贴 URL,选择检查类型和间隔,然后保存。
  3. 绑定通知渠道(Slack、电子邮件、PagerDuty 等),以便故障发生时通知你。
  4. 启用公开状态页并分享链接。

更喜欢用代码?可通过 REST API、Terraform 或 MCP 管理同一账户。想自行运行?请前往自托管。

为什么选择 uptimepage

内置状态页的监控服务并不新鲜——这里的目标是提供免费、可自托管且完全以代码管理的方案:

  • 免费托管套餐,无需信用卡——如果你更愿意自行运行,也可使用 AGPL 版本。
  • 单一独立二进制文件——运行 docker compose up 即可上线,无需运维 Kubernetes 平台。
  • 一切皆可用代码管理——REST API、限定范围的令牌、官方 Terraform 提供程序,以及可供大模型查询的 MCP 服务。
  • 由你掌控的探针——可在用户所在的任意位置运行多区域 Agent,并使用自己的设备。
  • 状态页、事件和 on-call 集于一体——组件、订阅者、on-call 轮值和升级策略,以及持续重发直至确认的多渠道通知,无需额外工具。
  • 核心功能不设付费墙——检查、状态页、订阅者、API 和所有告警渠道均包含在免费套餐中。
适用对象
  • 创始人 / 小型 SaaS 团队——几分钟即可拥有专业状态页,免费且无需操心自托管。
  • 平台 / SRE 负责人——以代码管理监控项、多区域探针、向 on-call 渠道发送事件通知,无需使用一堆不同的供应商。
  • 自托管用户——一个二进制文件加两个数据库,不受 SaaS 锁定。

实时状态

uptimepage 会监控自身。这些徽章由运行中的应用从公开状态页面提供,不依赖第三方服务,也无需定时任务更新 JSON 文件。

uptimepage 状态

服务面HTTPDNSTLS 证书域名
uptimepage.dev(网站)httpdnstlsdomain
app.uptimepage.dev(仪表板)http
mcp.uptimepage.dev(MCP)http

使用 Settings → Pages → your page → Badge 中的代码片段嵌入你自己的徽章。

功能

检查项HTTP、TCP、ICMP ping、心跳(入站死信开关)、DNS、TLS 证书到期、域名到期、含逐步计时的浏览器登录流程、手动(由操作员设置状态);每个监控器均配有断路器,专为约 50k 个并发进行中的请求而设计
公开状态页面HTML + JSON + RSS、按组件选择启用、事件说明、维护时段、电子邮件 + webhook 订阅者
告警Slack、PagerDuty、Discord、Microsoft Teams、Google Chat、Mattermost、Telegram、WhatsApp、SMS、电子邮件、webhook、ntfy、Gotify、Pushover — 按组织配置渠道、密封的机密信息、仅触发一次 + 恢复通知、重复通知直至确认
事件内部事件状态 ⊥ 公开阶段;确认后静默告警;按监控器设置提醒频率
值班分层轮班(每日、每周、自定义),支持每周时段、日历覆盖;以 iCalendar 订阅源提供你的轮班安排;升级策略按级别逐一通知渠道和排班
多区域区域探测 Agent、按区域查看、可在任意位置运行自己的 Agent
自动化REST API、限定范围的 API 令牌、Terraform provider、面向大模型客户端的 MCP 服务
构建技术Rust 1.95 / Tokio / Axum、Postgres + ClickHouse,一个约 23 MB 的独立二进制文件

在线服务:https://uptimepage.dev — 托管服务,免费,可使用 GitHub、Google 或电子邮件地址登录。
完整文档:https://uptimepage.dev/docs

监控器列表:按环境分组的检查项,每项均显示实时状态、类型、标签、上次检查时间和 30 天正常运行时间。
监控器 — 按环境分组,可按类型、标签或所有者筛选
## 检查类型
类型用途默认间隔下限
http请求 URL,并匹配状态码 / 正文 / 延迟60 smax(plan_min, 10 s)
tcp在超时时间内打开 TCP 套接字60 smax(plan_min, 10 s)
ping发送 ICMP 回显请求,无响应时判定失败60 smax(plan_min, 10 s)
heartbeat由你的作业 ping 一个 URL;超过周期 + 宽限时间仍未收到 ping 时,创建事件60 smax(plan_min, 60 s)
dns解析记录,可选匹配一个值60 smax(plan_min, 10 s)
tls_cert建立 TLS 连接,解析叶证书,并在 notAfter 到期前发出警报86 400 s(每天)max(plan_min, 3600 s)
domain_expiry查询 RDAP,并在域名的 expiration 事件到期前发出警报86 400 s(每天)max(plan_min, 43 200 s)
flow使用无头浏览器执行登录 / 交易步骤,并验证结果300 smax(plan_min, 300 s)
manual不进行探测;由操作员设置正常、降级或故障状态,并持续报告该状态60 s恰好 60 s

tls_cert 和 domain_expiry 使用 warn_days / critical_days 阈值,并在结果载荷中提供 days_remaining 以及注册商 / 证书主题。无论套餐如何,它们的下限分别为 tls_cert 的 1 小时和 domain_expiry 的 12 小时——这些探测跟踪的是以天而非分钟为单位变化的值,而且 RDAP 会按来源地址限制请求频率。flow 会运行真实浏览器,因此只能在提供浏览器引擎的环境中执行(其区域会限制为支持 flow 的区域),并且每个套餐对 flow 监控器的数量设有上限;请将凭据存入组织密钥,并以 {{name}} 引用。每次 flow 运行都会保留,并记录每个步骤的结果和耗时;监控器页面会以独立刻度绘制每个步骤,因此即使整个流程尚未失败,也能及时发现等待时间从 200 ms 延长到 4 秒的情况。自托管安装的该上限初始值为 0;docs/monitor-types.md 介绍了如何启用。完整的载荷结构请参阅 docs/api.md。

公开状态页

二进制文件内置了面向客户的 /status 页面(HTML + JSON + RSS 2.0)。每个目标都可以通过 public_status 选择加入;页面路由不带身份验证提取器,因此无论二进制文件运行在哪里,该页面都是公开的。边缘端会按 IP 限流,进程内缓存 10 s;如果 ClickHouse 无法访问,页面也能优雅降级。操作员可以记录事件进展(PATCH /api/v1/incidents/{id}、POST /api/v1/incidents/{id}/updates),并安排维护窗口(POST /api/v1/maintenance)。访客可以订阅邮件或 webhook 更新。请参阅 docs/public-status.md。

公开状态页显示所有系统运行正常,并按组件显示 90 天的正常运行历史。
公开状态页 — 按组件显示 90 天的历史记录
## 告警

通知渠道是组织级资源(Slack incoming webhook、通用 HTTP webhook、Telegram 机器人、SMS 网关,等等),通过 /api/v1/notification-channels 创建。 传输密钥会加密后静态存储,且绝不会回显。

通知渠道列表:Slack、PagerDuty、SMS、电子邮件、webhook、Discord、Teams、Pushover、ntfy 和 Telegram 均已启用。
告警 — Slack、PagerDuty、SMS、webhook 及另外六种渠道

目标可在其 alerts 数组中绑定一个或多个渠道,以启用告警:

"alerts": [
  { "channel_id": "0192…", "after_failures": 3 },
  { "channel_id": "0193…", "after_failures": 6, "notify_recovery": false }
]

仅触发一次,并在恢复时通知。渠道按租户隔离——目标只能绑定所属组织拥有的渠道。完整约定请参阅 docs/api.md。

新建通知渠道表单:选择 Slack、Discord、电子邮件、Telegram、PagerDuty、SMS 或 webhook 等渠道类型。
添加渠道 — 选择传输方式,粘贴一项凭据

多区域

在用户所在的区域运行探测 Agent;控制平面按区域分配检查,仪表板和状态页也可按区域查看。 可在任何位置使用自己的 Agent——只需一个绑定组织的令牌。请参阅 docs/multi-region.md。

单个监控项详情:过去 24 小时的正常运行时间和检查次数,以及按区域绘制的延迟中位数图表。
监控项详情 — 按区域划分的延迟

Terraform

使用官方 Provider uptimepage/uptimepage (源代码)以代码管理目标和通知渠道:

terraform {
  required_providers {
    uptimepage = {
      source = "uptimepage/uptimepage"
    }
  }
}

provider "uptimepage" {
  token = var.uptimepage_token # or set UPTIMEPAGE_TOKEN
  org   = "your-org-slug"      # required for managed resources; or UPTIMEPAGE_ORG
  # endpoint defaults to https://app.uptimepage.dev; set it for a self-hosted instance
}

resource "uptimepage_target" "api" {
  name     = "api prod"
  interval = 60
  check = {
    type = "http"
    http = {
      url             = "https://example.com/healthz"
      expected_status = { kind = "exact", exact = 200 }
    }
  }
}

MCP 服务

MCP 服务让大模型客户端(claude.ai 连接器、Claude Desktop、IDE)通过 /mcp 上的 Streamable HTTP,回答有关某个组织的监控项的问题,并执行少量受保护的操作。提供 19 个只读工具和 19 个写入工具(每个工具均受范围控制并经过审计;客户端可显示提示词时,还需针对每项操作进行确认)。身份验证使用绑定组织的受限令牌——可手动粘贴,也可使用一键式 OAuth 2.1 连接器。默认关闭;通过 UPTIMEPAGE_MCP_ENABLED=true 启用(连接器还需启用 + MCP_OAUTH_ENABLED)。请参阅 docs/mcp.md。

自托管

我想要前往
用一条命令试用Docker(推荐)
正式运行,配置 TLS 和身份验证生产部署
自行构建镜像(ARM 主机或修改代码)从源代码构建
跳过 Docker,直接运行二进制文件不使用 Docker 运行
Docker(推荐)

只需三步。不需要 Rust 工具链,也无需编译。

1. 启动

docker compose up -d

拉取 ghcr.io/uptimepage/uptimepage:latest 并启动 Postgres 18、ClickHouse 26.3 和监控服务。两个数据库都会在启动时自行执行迁移,因此无需进行任何配置连接。

2. 创建账户

docker compose exec uptimepage uptimepage bootstrap-owner --email [email protected]

输出一次性登录链接、完全访问权限的 API 令牌和组织标识。这些信息只会显示一次,请在关闭终端前复制保存。

3. 登录并添加监控项

打开第 2 步中的链接,即可进入 http://localhost:8080 上的仪表板,并添加第一个监控项。

停止服务:运行 docker compose down;如需同时删除数据,则运行 docker compose down -v。

此配置没有 TLS,也没有前置身份验证,并且会发布数据库端口。适合试用,但不适合在开放互联网上安全运行。正式运行请参阅生产部署。

选项

固定版本。 设置 UPTIMEPAGE_IMAGE=ghcr.io/uptimepage/uptimepage:1.5.0,使用某个正式版本而非 latest。版本标签不带 v 前缀,但构建它们所基于的 git 标签带有该前缀。

主机使用 ARM 架构? 正式版本标签支持 linux/amd64 和 linux/arm64。跟踪 main 上最新提交的 latest 仅支持 amd64,因此 ARM 主机请固定到某个正式版本。

ClickHouse 系统日志已关闭。 标准 ClickHouse 会保留二十多个 system.*_log 表,这些表会无限增长,并在空闲时消耗 CPU。Uptimepage 不会读取这些表,因此 config/clickhouse-quiet.xml 会将它们全部关闭;若要为调试重新启用某个表,请删除该文件中的对应行,然后运行 docker compose up -d --force-recreate clickhouse(仅重启可能会继续读取旧文件)。如果某个堆栈是在此设置加入之前启动的,则会保留旧表:先运行 docker compose up -d,让 ClickHouse 使用此设置重启,然后使用 SELECT name, formatReadableSize(total_bytes) FROM system.tables WHERE database = 'system' AND name LIKE '%\_log%' 列出这些表,并使用 DROP TABLE system.<name> 逐个删除。

之后再登录。 引导链接只能使用一次。如需重复登录并邀请团队,请配置 GitHub、GitLab、Google 或 Microsoft OAuth,或者配置用于发送 magic link 的电子邮件服务提供商(在 config/default.toml 中设置 [auth.github]、[auth.gitlab]、[auth.google]、[auth.microsoft]、[email],或设置对应的环境变量)。请参阅 docs/authentication.md。

要将其打包到应用商店? 第 2 步需要终端。改为设置 UPTIMEPAGE_BOOTSTRAP__EMAIL,首次启动时会创建该邮箱对应的所有者并记录登录链接,无需使用 shell。请参阅首次启动时创建所有者。

更倾向使用 API,而非仪表板?

使用第 2 步中的令牌和组织 slug。创建监控项:

curl -X POST http://127.0.0.1:8080/api/v1/targets \
  -H 'authorization: Bearer <token>' \
  -H 'x-uptimepage-org: <org-slug>' \
  -H 'content-type: application/json' \
  -d '{
    "name": "example",
    "check": {
      "type": "http",
      "url": "https://example.com/",
      "method": "GET",
      "timeout": 10000,
      "follow_redirects": false,
      "max_redirects": 0,
      "expected_status": { "kind": "exact", "value": 200 },
      "headers": {},
      "verify_tls": true
    },
    "interval": 180,
    "enabled": true,
    "tags": []
  }'

interval 的单位是秒,且必须达到套餐的最低要求;上方的 bootstrap-owner 步骤为你启用的免费套餐要求最低间隔为 180 秒。低于该值会返回 422 MIN_CHECK_INTERVAL。如果改为在首次启动时创建所有者(请参阅首次启动时创建所有者),该组织会使用 quotas.default_plan,其默认值为 team,最低间隔为 30 秒。在注册开放期间,之后通过注册创建的组织会加入 founding 套餐,最低间隔为 60 秒。

读取运行时间并抓取指标:

curl -H 'authorization: Bearer <token>' -H 'x-uptimepage-org: <org-slug>' \
  http://127.0.0.1:8080/api/v1/targets/<id>/uptime
curl http://127.0.0.1:9090/metrics
生产环境部署

任何可从互联网访问的部署都应运行此堆栈,而不是上面的堆栈。此堆栈添加了带自动 TLS 的 Caddy 边缘服务、仅限内部访问的 Postgres 和 ClickHouse、按 IP 限速,以及蓝绿重启。运维主机由应用自身的登录机制保护,不使用边缘凭证。它会拉取同一个已发布镜像。设置操作指南见 deployment/README.md,架构说明见 docs/deployment.md。

Kubernetes
kubectl create namespace uptimepage
kubectl -n uptimepage create secret generic uptimepage \
  --from-literal=fingerprint-salt="$(openssl rand -base64 32)" \
  --from-literal=credentials-kek-base64="$(openssl rand -base64 32)" \
  --from-literal=postgres-url='postgres://uptimepage:[email protected]:5432/uptimepage?sslmode=require' \
  --from-literal=clickhouse-password='pw'

helm install uptimepage oci://ghcr.io/uptimepage/charts/uptimepage \
  --namespace uptimepage \
  --set domain=status.example.com \
  --set clickhouse.url=https://ch.internal:8443 \
  --set secrets.existingSecret=uptimepage \
  --set postgresql.existingSecret=uptimepage \
  --set clickhouse.existingSecret=uptimepage

请自行准备 Postgres 18 和 ClickHouse;此 Helm chart 不包含它们。另一个 chart uptimepage-agent 可在另一个区域或私有网络中单独运行探测器,并连接到此服务或托管服务。详情见 docs/kubernetes.md 和 charts/。

从源代码构建

已发布的镜像支持 linux/amd64。如果你使用 ARM 主机(Apple silicon、Ampere),或需要修改代码,请从此检出版本构建:

docker compose -f docker-compose.yml -f compose.build.yml up -d --build

堆栈相同,Docker(推荐)中的三个步骤也相同,只有镜像来源不同。请注意,本地构建会占用该镜像标签;若要恢复使用已发布的镜像,请运行 docker compose pull。

不使用 Docker 运行
cargo build --release
./target/release/uptimepage

需要 Postgres 和 ClickHouse 可通过 config/default.toml 中的 URL 访问,并且指纹盐不能为空(应用在未设置该值时会拒绝启动):

export UPTIMEPAGE_AUTH__FINGERPRINT_SALT=$(openssl rand -base64 32)

要在不重建容器的情况下连接到 compose 堆栈运行:

docker compose up -d postgres clickhouse
cargo run --release

文档

托管版:https://uptimepage.dev/docs

源文件位于 docs/ 下,也可直接在 GitHub 上阅读:

文件内容
docs/architecture.md目标、模块布局、数据流、关键设计选择、并发模型
docs/api.mdREST 端点、检查规范负载格式、结果和正常运行时间查询
docs/public-status.md公共 /status 页面的运营指南:组件、事件、维护
docs/authentication.md登录、会话、作用域 API 令牌、组织绑定
docs/multi-region.md区域探测 Agent、运营界面、运行 Agent、区域视图
docs/mcp.md面向大模型客户端的 MCP 服务:工具、作用域、OAuth 连接器、启用方式、示例
docs/configuration.mddefault.toml 参考、环境变量覆盖方案、调优说明
docs/metrics.mdPrometheus 指标序列(包括连接、TLS、连接池仪表)、OpenTelemetry 跟踪
docs/deployment.mdDocker、绑定地址、迁移、容量规划、优雅关闭
docs/development.md本地开发工作流、Web UI(技术栈、路由、添加页面、测试)、加速构建
docs/loadtest.mdbin/loadtest 环境变量、macOS 注意事项、HTTP/1 与 h2c 的权衡、Linux 容器路径
docs/benchmarks.mdCriterion 微基准测试、单核吞吐量、性能分析细分
docs/troubleshooting.md常见故障及如何通过指标判断

Web UI

单个二进制文件同时提供 /api/v1/* JSON 接口和位于 / 的服务器渲染 HTML UI——使用 Askama 编译时模板、HTMX 实现局部替换和 JSON 表单(不使用 SPA 框架)、Tailwind CSS 4,以及延迟加载的 ECharts。所有 UI 修改操作都会调用现有的 /api/v1/* 端点,因此 API 始终是唯一可信数据源。技术栈、路由、添加页面指南和 UI 测试见 docs/development.md。

法律声明

相关政策由实例运营者负责。将 [legal] 中的 URL 指向你自己的条款、隐私政策及其他政策:应用会链接你设置的每项政策,在注册时展示条款和隐私政策,并在新账户中记录其版本;留空的项目则不会显示链接。详见 docs/configuration.md。 GDPR 自助服务(数据导出、账户删除、账户恢复)位于 /settings/account。

许可证

uptimepage 根据 AGPL-3.0 许可。实际影响请参阅 LICENSING.md。名称和徽标均为商标;在运行公共服务或分支版本前,请参阅 TRADEMARKS.md。

如需贡献,请参阅 CONTRIBUTING.md。 如需披露安全问题,请参阅 SECURITY.md。

评论

支持 Markdown

第一次接触 MCP?

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

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