内容
center">
="static/marketing/ alt="uptimepage" width="640">
# 状态页面
**状态页面 + 监控服务. 永久免费. 5分钟快速部署.**
监控 HTTP, TCP, DNS, TLS 证书和域名过期时间,支持多区域监测,并生成精美的公共状态页面,让订阅。支持点击、 Terraform 驱动。单二进制自托管,或使用托管服务。
[](https://github.com/uptimepage/uptimepage/actions/workflows/docs.yml)
[]([**免费试用 →uptimepage.dev) ·&;[文档](uptimepage.github.io/) &  托管](#自托管) ·&;[Terraform](#terraformnbsp;·&;[MCP](#)
<img src="creenshot-dashboard.png="uptimepage dashboardtime, response time,-monitor status" width="div>
## uptimepage
内置监控服务并不新鲜目标是做到免费、自代码化:
- **免费托管层,无 — 如果您想,我们提供 AGPL - **单个自文件** — `docker` 即可运行,不 Kubernetes 平台。
- **代码** — REST作用域令牌、程序和 MCP 服务器 LLM 可以查询。
-针** — 在用户所在的区域运行多区域探针,支持自定义探针。
- **状态页面 + 事件 + 警报一体化** — 组件、订阅者和多通道分页,重复直到确认,无需第二个工具。
- **无按席位或功能分级** — 检查、状态页面和订阅者不受付费墙限制。
### 适用人群 **创始人型 SaaS**分钟内创建专业的面,永久免费自托管的麻烦。
- / SRE 负责人** — 代码化的监控探针,事件分页班通道,无需- **自托管者** — 一个二进制文件 + 两个数据库,无 SaaS 锁定。
## 运行状态
uptimepage 监控自身。这些徽章由运行的应用从公共状态页面提供 - 无需第三方服务,无需 cron 作业更新 JSON 文件。
[](https://uptimepage.uptimepage.dev)
| 表面 | HTTP | DNS | TLS 证书 |
|---|---|---|---|
| **uptimepage.dev** (网站) | [](https://uptimepage.uptimepage.dev [](https://uptimepage.uptimepage.dev) | [](https://uptimepage.uptimepage.dev) |
| **app.uptimepage.dev** (仪表盘) | [](https://uptimepage.uptimepage.dev) | | |
| **mcp.uptimepage.dev** (MCP) | [](https://uptimepage.uptimepage.dev) | | |
在 **设置 → 页面 → 您的页面 → 徽章** 中使用代码片段嵌入您自己的徽章。
## 功能
| | |
|---|---|
| **检查** | HTTP, TCP, DNS, TLS 证书过期,域名过期 — 每主机电路中断,设计用于约 50k 并发请求 |
| **公共状态页面** | HTML + JSON + RSS,按组件选择,事件叙述,维护窗口,电子邮件 + 网络钩子订阅者 |
| **警报** | Slack, 网络钩子, Telegram, WhatsApp, SMS, PagerDuty, ntfy, Pushover, Discord, … — 按组织通道,密封秘密,触发一次 + 恢复,重复直到确认 |
| **事件**内部事件状态 ⊥阶段,确认静默监视器提醒| **多区域** | 区域探针代理,按,在任何地方运行代理 |
| ** | REST API,域 API 令牌,程序, 用于 LLM 客户端的 MCP 服务器 |
| **构建于** | Rust 1.95 / Tokio / Axum, Postgres + ClickHouse, 单个 ~23 MB 自包含二进制文件 |
**在线服务:<https://uptimepage.dev>** — 托管,免费,使用 GitHub 登录。
**完整文档:<https://uptimepage.github.io/uptimepage/>**
<div align="center">
<img src="docs/img/screenshot-monitors.png" alt="uptimepage monitors list — grouped, Terraform-managed checks" width="900">
</div>
## 检查类型
| 类型 | 目的 | 默认间隔 | 最低间隔 |
|---|---|---|---|
| `http` | 请求 URL,匹配状态 / 延迟 | 60 秒 | `max(plan_min10 秒)` |
| `tcp` | 在超时时间内打开 TCP 套接字 | 60 秒 | `max(plan_min, 10 秒)` |
| `dns` | 解析记录,可选地匹配值 | 60 秒 | `max(plan_min, 秒)` |
|_cert` | 打开 TLS叶证书,在 `` 之前提醒86,400 秒(每天) | `max(plan_min, 3600 秒)` |
| `domain_expiry` | 查询 RDAP,在域的 `expiration` 事件之前提醒 | 86,400 秒(每天) | `max(plan_min, 3600 秒`tls_cert `domain_expiry`warn_days` /_days` ,并在结果负载中显示_remaining` 以及注册 证书主题。
共状态页面
内置-facing `/status` 页面(HTML + JSON +2.0)。通过 `public_status` 按目标选择;该页面在 Caddy 层绕过基本身份验证,带有每 IP ,在进程中缓存 10 秒,如果 ClickHouse 无法访问,则优雅地。操作员讲述`PATCH /api/incidents/{id}`POST /api/v/{id}/)并安排维护窗口(`POST /api/vmaintenance`)。访客订阅电子邮件或网络钩子更新。
## 警报
通知通道是按组织资源创建的(Slack 输入网络钩子,通用 HTTP 网络钩子,Telegram 机器人,SMS 网关,...),通过 `/api/v1/notification-channels` 创建。传输机密在存储时被密封,永远不会回显。目标通过在其 `alerts` 数组中绑定一个通道:
```jsonc
"alerts": { "channel_id": "0192…", "after_failures": 3 },
{ "channel_id": "0193…", "after_failures": "notify_recovery": false }
]
```
一次性 + 恢复语义。通道是租户隔离的 -只能绑定其所属组织拥有的通道。
## 多区域
在用户所在的区域运行探针代理;控制区域分配检查,仪表盘和状态页面可以按区域查看。带有一个组织作用域令牌的单个二进制文件可以在任何地方运行。
## Terraform
使用官方提供程序 [`uptimepage/uptimepage`](https://registry.terraform.io/providers/uptimetimepage) 以代码方式管理目标和通知通道:
```hcl
terraform {
required_providers {
uptimepage = {
source = "uptimepage/uptimepage"
}
}
}
provider "uptimepage" {
token = var.uptimepage_token # 或设置 UPTIMEPAGE_TOKEN
org = "your-org-slug" #托管资源所需;或 UPTIMEPAGE_ORG
# 端点默认为 https://app.uptimepage.dev;为自托管实例设置
}
resource "uptimepage_target" "api" {
name = "api 生产环境"
interval = 60
check = {
type = "http"
http = {
url = "https://example.com/healthz"
expected_status = { kind = "exact", exact = 200 }
}
}
}
```
## MCP 服务器
MCP 服务器允许 LLM 客户端(claude.ai 连接器,Claude Desktop,IDE)回答关于一个组织的监视器的问题,并采取一些受保护的操作,通过 Streamable HTTP 在 `/mcp`。七种只读工具 + 四种写入工具(每个作用域门控,确认每个操作,并审计)。身份验证是一个组织绑定作用域令牌 - 手动粘贴,或使用一次性 OAuth 2.1 连接器。默认关闭;启用 `UPTIMEPAGE_MCP_ENABLED=true`( MCP_OAUTH_ENABLED` 用于连接器)。
## 自托管
### Docker)
```bash
docker compose up -d启动 Postgres 18、ClickHouse 26.3 和器。两个数据库的迁移在进程启动 - 无需 init-script 接线,无需外部迁移工具。
创建第一个所有者帐户(所有登录提供程序都假定已存在帐户,因此请单独创建):
```bash
docker compose exec uptimepage uptimepage bootstrap-owner --email you@example.com
```
它打印,仅显示一次:一个一次性链接,直接登录到 web 仪表盘,以及一个完全访问 API 令牌 + 组织 slug。打开链接以进入仪表盘;使用令牌进行 API 调用。创建目标:
```bash
curl -X POST http://127.0.0.1/api/v1/targets \
-H: Bearer <token>' \
-H 'timepage-org: <org-slug>' \
H 'content-type: application/json' \
-d '{
"name": "example",
"check": {
"type": "http",
"url": "https://example.com/",
"method": "GET",
"timeout": 5000,
"follow_redirects": false,
"max_redirects": 0,
"expected_status": { " "exact", "value": 200 },
"headers": {},
"verify_tls": true
},
"interval": 60,
"enabled": true,
"tags": []
}'
```
读取正常运行时间,抓取指标:
```bash
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
```
启动链接仅登录一次。对于持续登录 - 以及邀请团队 - 配置登录提供程序:GitHub 或 Google OAuth,或用于魔术链接的真实电子邮件提供程序(`[auth.github]` / `[auth.google]` / `[email]` 在 `config/default.toml` 中,或匹配 env 变量)。参见 [docs/authentication.md](docs/authentication.md)。
### 生产部署
对于具有 TLS、基本身份验证和适当强化的生产部署(Caddy edge,Postgres + ClickHouse 仅限内部访问,ClickHouse 内存上限),请参阅 [`deployment/README.md`](deployment/README.md) 或 [docs/deployment.md](docs/deployment.md)。上述本地开发栈足以进行评估;请勿将其暴露在互联网上。
### 本地构建
```bash
cargo build --release
./target/release/uptimepage
```
需要 Postgres 和 ClickHouse 可以在 `config/default.toml` 中的 URL 访问,加上非空的 fingerprint 盐(应用程序在没有 fingerprint 盐的情况下拒绝启动):
```bash
export UPTIMEPAGE_AUTH__FINGERPRINT_SALT=$(openssl rand -base64 32)
```
在不重新构建容器的情况下,与 compose 栈对抗:
```bash
docker compose up -d postgres clickhouse
cargo run --release
```
## 文档
在线:<https://uptimepage.github.io/uptimepage/>
[`docs/`](docs/) 下的源代码 - 直接在 GitHub 上也可阅读:
| 文件 | 涵盖内容 |
|---|---|
| [docs/architecture.md](docs/architecture.md) | 目标、模块布局、数据流、关键设计选择、并发模型 |
| [docs/api.md](docs/api.md) | REST 端点、检查规范有效载荷形状、结果 + 正常运行时间查询 |
| [docs/public-status.md](docs/public-status.md) | 公共 `/status` 页面的操作指南:组件、事件、维护 |
| [docs/authentication.md](docs/authentication.md) | 登录、会话、作用域 API 令牌、组织绑定 |
| [docs/multi-region.md](docs/multi-region.md) | 区域探针代理、操作员界面、运行代理、按区域视图 |
| [docs/mcp.md](docs/mcp.md) | 用于 LLM 客户端的 MCP 服务器:工具、作用域、OAuth 连接器、启用、示例 |
| [docs/configuration.md](docs/configuration.md) | `default.toml` 参考、环境变量覆盖方案、调优说明 |
| [docs/metrics.md](docs/metrics.md) | Prometheus 系列(包括连接 / TLS / 池仪表)、OpenTelemetry 跟踪 |
| [docs/deployment.md](docs/deployment.md) | Docker、绑定地址、迁移、大小调整、正常关闭 |
| [docs/development.md](docs/development.md) | 本地开发工作流、Web UI(栈、路由、添加页面、测试)、更快构建 |
| [docs/loadtest.md](docs/loadtest.md) | `bin/loadtest` 环境变量、macOS 注意事项、HTTP/1 与 h2c 权衡、Linux 容器路径 |
| [docs/benchmarksdocs/benchmarks | 基準单核吞吐量、配置文件分解 |
| [docs/troubleshooting/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](docs/development.md#web-ui).
## 法律
运行实例在其策略中提供 `/terms`、`/privacy`、`/cookies`、`/impressum`、`/abuse-policy`、`/security-policy` 和 RFC 9116 `/.well-known/security.txt`。源文档位于 [`docs/legal/`](docs/legal/)。GDPR 自助服务(数据导出、帐户删除、恢复)位于 `/settings/account`。
## 许可证
uptimepage 遵循 [AGPL-3.0](LICENSE) 许可。参见 [LICENSING.md](LICENSING.md) 以了解这在实践中的含义。
如果您想贡献,请CONTRIBUTING.md](CONTRIBUTING.md)。对于安全漏洞披露,请参见 [SECURITY.md](SECURITY.md)。
连接信息
猜你喜欢
暂无推荐服务器