diff --git a/README.md b/README.md
index fd72ab4..1ca410d 100644
--- a/README.md
+++ b/README.md
@@ -822,6 +822,23 @@ node prober/node/index.js
- [ ] 面板:更多形态(如时间线视图、地图视图)、明暗主题手动切换、可用率区间可配置(7/30/90 天)
- [ ] 状态页 JSON API 的 CORS 开放与缓存策略细化
+## 本地运行
+
+**零依赖,不需要 `npm install`**:
+
+```bash
+git clone https://github.com/tamakyi/shiroko-monitor.git
+cd shiroko-monitor
+node prober/node/index.js
+```
+
+打开 (管理端在 `/admin`)。要求 Node.js ≥ 18。
+
+改 `public/monitors.json` 里的 `monitors` 即可添加自己的目标,**文件会被自动热重载,不用重启**。
+
+- 完整说明(三种运行模式 / 配置分层 / 开机自启 / 常见问题)→ **[docs/DEPLOY-LOCAL.md](docs/DEPLOY-LOCAL.md)**
+- 面板部署到 GitHub Pages → **[docs/DEPLOY-PAGES.md](docs/DEPLOY-PAGES.md)**
+
## 开发
```bash
diff --git a/docs/DEPLOY-LOCAL.md b/docs/DEPLOY-LOCAL.md
new file mode 100644
index 0000000..435ccc0
--- /dev/null
+++ b/docs/DEPLOY-LOCAL.md
@@ -0,0 +1,282 @@
+# 本地运行指南
+
+全部跑在自己机器上:探针、面板、管理端都在 `http://localhost:8787`。
+
+**零依赖** —— 不需要 `npm install`,只用 Node 自带模块。
+
+---
+
+## 最短路径(三条命令)
+
+```bash
+git clone https://github.com/tamakyi/shiroko-monitor.git
+cd shiroko-monitor
+node prober/node/index.js
+```
+
+打开 就能看到面板(内置了 8 个示例目标,第一次启动后约一分钟内有数据)。
+
+要求:**Node.js ≥ 18**(`node -v` 查看)。
+
+---
+
+## 启动后有什么
+
+| 地址 | 用途 |
+| --- | --- |
+| | 公开面板(只读) |
+| | 管理端(需先绑定 2FA) |
+| | 状态快照(JSON) |
+
+启动日志会告诉你当前的探测范围与数据源,例如:
+
+```
+shiroko-monitor v0.12.3
+面板: http://localhost:8787/
+管理后台: http://localhost:8787/admin (仅本机可访问;需远程访问请设 settings.admin.allowRemote=true)
+展示口径: both 探测范围: all —— 全部(自建 8 个)
+```
+
+---
+
+## 三种运行模式
+
+### 1. 常驻(默认)
+
+```bash
+node prober/node/index.js
+```
+
+按各目标自己的 `interval` 持续探测,Ctrl+C 停止。**适合长期使用。**
+
+### 2. 跑一轮就退(CI 用)
+
+```bash
+node prober/node/index.js --once
+```
+
+探测一轮、写出 `public/status.json` 后退出。
+
+### 3. 演示数据(不想真探测)
+
+```bash
+node prober/node/index.js --once --demo
+```
+
+生成一份假的状态快照,用于静态部署的首版占位。
+
+### 常用参数
+
+| 参数 | 作用 |
+| --- | --- |
+| `--config=` | 指定公开配置(默认 `public/monitors.json`) |
+| `--local-config=` | 指定私有配置(默认 `local.monitors.json`) |
+| `--out=` | 指定快照输出(默认 `public/status.json`) |
+| `--data-dir=` | 指定私有数据目录(默认 `./data`,存通知去抖状态与事件) |
+| `--test-notify` | 给所有已启用渠道发一条测试消息 |
+| `PORT=9000 node prober/node/index.js` | 换端口(`PORT` 是环境变量,不是参数) |
+
+---
+
+## 配置自己的监控目标
+
+编辑 `public/monitors.json` 的 `monitors` 数组:
+
+```jsonc
+{
+ "id": "my-site", // 唯一标识,改了会丢失该目标的历史
+ "name": "我的站点",// 显示名
+ "group": "生产环境",// 分组(面板按它分页签)
+ "type": "http",// http | tcp | banner
+ "url": "https://example.com",
+ "expectStatus": [200], // 哪些状态码算正常
+ "interval": 60,// 探测间隔(秒)
+ "timeout": 10 // 超时(秒)
+}
+```
+
+TCP 与 banner 类型:
+
+```jsonc
+{ "id": "db-5432", "name": "数据库", "type": "tcp", "host": "10.0.0.5", "port": 5432, "interval": 60 }
+{ "id": "ssh", "name": "SSH", "type": "banner", "host": "10.0.0.6", "port": 22,
+ "expectBanner": "^SSH-2.0", "timeout": 10 }// 匹配标识串正则
+```
+
+改完**自动热重载**(监听文件变化,约 200ms 生效),不用重启。
+
+---
+
+## 配置怎么分层
+
+| 文件 | 是否入库 | 放什么 |
+| --- | --- | --- |
+| `public/monitors.json` | ✅ | 目标定义、非敏感设置(会随 GitHub Pages 公开) |
+| `local.monitors.json` | ❌(`.gitignore`) | 真实地址、`apiKey`、私有覆盖 |
+
+`local.monitors.json` **可选**,不存在也能跑。要用时自建:
+
+```jsonc
+{
+ "_comment": "按 id 覆盖 public/monitors.json 的同名条目,或覆盖 settings",
+ "settings": {
+ "uptimeRobot": { "enabled": true, "apiKey": "ur1769665-...", "pollIntervalSec": 300 },
+ "probeScope": "all"
+ },
+ "monitors": [
+ { "id": "example-com", "url": "https://real-host.internal" } // 只写要覆盖的字段
+ ]
+}
+```
+
+> ⚠️ **API Key 绝不要写进 `public/monitors.json`** —— 它会随 Pages 部署公开。
+
+---
+
+## 接UptimeRobot
+
+项目支持把UptimeRobot 上已有的监控结果接进来(作为「异地探测视角」与自建探测并列展示)。**只读**,用 `ur` 开头的只读 Key 即可。
+
+```jsonc
+// local.monitors.json
+{
+ "settings": {
+ "uptimeRobot": {
+ "enabled": true,
+ "apiKey": "ur1769665-xxxxxxxx",
+ "pollIntervalSec": 300
+ },
+ "probeScope": "uptimerobot" // 只同步 UR,不探测本地配置的目标
+ }
+}
+```
+
+也可以直接用环境变量:`UPTIMEROBOT_API_KEY=ur... node prober/node/index.js`
+
+---
+
+## 启用管理端(可选)
+
+管理端能改配置、加维护窗口、发通知自检。**必须先绑定 2FA。**
+
+```bash
+# Windows PowerShell
+$env:SHIROKO_ADMIN_SETUP_KEY='换成一串足够长的随机口令'
+node prober/node/index.js
+
+# macOS / Linux
+export SHIROKO_ADMIN_SETUP_KEY='换成一串足够长的随机口令'
+node prober/node/index.js
+```
+
+打开 ,四步绑定:
+
+1. 输入 `SHIROKO_ADMIN_SETUP_KEY` → 生成密钥
+2. 用验证器 App 扫码(或手动输入密钥 / 复制 `otpauth://` 链接)
+3. 输入 App 显示的 6 位码 → 完成绑定
+4. **保存 10 枚恢复码**(只显示这一次)
+
+之后每次进入管理界面都要输 6 位动态码或一枚恢复码。
+
+> 不设 `SHIROKO_ADMIN_SETUP_KEY` 时绑定入口直接关闭,管理端处于「完全不可用」状态 —— 这是安全的默认值。
+
+---
+
+## 通知(可选)
+
+支持邮件(SMTP)与 [MeoW](https://www.chuckfang.com/MeoW/api_doc.html) 推送,写在 `local.monitors.json`:
+
+```jsonc
+{
+ "settings": {
+ "notify": {
+ "enabled": true,
+ "failureThreshold": 2,// 连续失败几次才告警
+ "recoveryNotify": true, // 恢复时也通知
+ "quietHours": "23:00-08:00",// 静默时段(不打扰)
+ "channels": {
+ "email": {
+ "enabled": true,
+ "host": "smtp.example.com",
+ "port": 465,
+ "secure": true, // 465 隐式 TLS;587 用 STARTTLS
+ "user": "ops@example.com",
+ "pass": "授权码",
+ "from": "ops@example.com",
+ "to": ["ops@example.com"]
+ },
+ "meow": { "enabled": false, "nickname": "你的MeoW昵称" }
+ }
+ }
+ }
+}
+```
+
+配好后自检一下:
+
+```bash
+node prober/node/index.js --test-notify
+```
+
+---
+
+## 开机自启(可选)
+
+**macOS / Linux(systemd)**
+
+```ini
+# /etc/systemd/system/shiroko-monitor.service
+[Unit]
+Description=shiroko-monitor
+After=network-online.target
+
+[Service]
+WorkingDirectory=/opt/shiroko-monitor
+ExecStart=/usr/bin/node prober/node/index.js
+Restart=always
+RestartSec=5
+Environment=SHIROKO_ADMIN_SETUP_KEY=你的口令
+Environment=SHIROKO_DATA_DIR=/var/lib/shiroko
+
+[Install]
+WantedBy=multi-user.target
+```
+
+```bash
+sudo systemctl enable --now shiroko-monitor
+sudo journalctl -u shiroko-monitor -f
+```
+
+**Windows(NSSM)**
+
+```powershell
+nssm install ShirokoMonitor "C:\Program Files\nodejs\node.exe" "C:\shiroko-monitor\prober\node\index.js"
+nssm set ShirokoMonitor AppDirectory C:\shiroko-monitor
+nssm set ShirokoMonitor AppEnvironmentExtra SHIROKO_ADMIN_SETUP_KEY=你的口令
+nssm start ShirokoMonitor
+```
+
+---
+
+## 常见问题
+
+**面板一直显示「等待检测」**
+第一次启动后需要等第一轮探测完成(按各目标的 `interval`,最长可能几分钟)。看日志确认探测范围。
+
+**面板是空的**
+检查日志里的「探测范围」。若显示「仅 UptimeRobot(0 个)」说明你把 `dataFilter` 设成了 `uptimerobot` 但没配 API Key —— 把它改成 `both`,或配置 `uptimeRobot.apiKey`。
+
+**想改端口**
+`PORT=9000 node prober/node/index.js`(环境变量,不是命令行参数)。
+
+**端口被占用**
+`PORT=9000 node prober/node/index.js` 换一个。
+
+**改了配置没生效**
+文件监听有 200ms 防抖,稍等即可;若是 `local.monitors.json`,确认 JSON 格式正确(尾逗号会导致解析失败,此时日志会打印 `[config] 重载失败`)。
+
+**数据存在哪**
+`public/status.json`(快照,会入库)与 `data/`(通知去抖状态、事件时间线、2FA 档案,不入库)。换机器时前者可以不带。
+
+**内存占用**
+常驻约 60–80 MB RSS。目标多、心率历史长时会略增。
\ No newline at end of file
diff --git a/docs/DEPLOY-PAGES.md b/docs/DEPLOY-PAGES.md
index a58aa82..48994a6 100644
--- a/docs/DEPLOY-PAGES.md
+++ b/docs/DEPLOY-PAGES.md
@@ -34,11 +34,31 @@
git clone <你的仓库>
cd shiroko-monitor
-# 私有配置(不入库):真实地址、API Key 等放这里
-cp local.monitors.json.example local.monitors.json # 或按下面提示自建
+# 私有配置(可选):真实地址、API Key 等敏感信息放这里,不入库
node prober/node/index.js
```
+
+想用私有配置文件?
+
+`local.monitors.json` 是可选的,不存在也能跑(会直接用 `public/monitors.json`)。
+需要拆分敏感信息时自建即可,结构如下:
+
+```jsonc
+// local.monitors.json(已在 .gitignore 中)
+{
+ "_comment": "按 id 覆盖 public/monitors.json 的同名条目,或覆盖 settings",
+ "settings": {
+ "uptimeRobot": { "enabled": true, "apiKey": "ur...", "pollIntervalSec": 300 },
+ "probeScope": "all"
+ },
+ "monitors": [
+ { "id": "example-com", "url": "https://real-internal-host.example" }
+ ]
+}
+```
+
+
启动后确认:
```
diff --git a/package.json b/package.json
index ad02f99..dd125f0 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "shiroko-monitor",
- "version": "0.1.0",
- "description": "轻量级服务监控面板:纯静态前端 + Node/边缘探针,支持 HTTP 与 TCP 探测",
+ "version": "0.12.3",
+ "description": "轻量级服务监控面板:纯静态前端 + Node/边缘探针,支持 HTTP/TCP 探测、UptimeRobot 数据源与 2FA 管理端",
"type": "module",
"scripts": {
"start": "node prober/node/index.js",
diff --git a/public/monitors.json b/public/monitors.json
index e9d34fc..8473c0b 100644
--- a/public/monitors.json
+++ b/public/monitors.json
@@ -6,7 +6,7 @@
"theme": "shiroko",
"artwork": "assets/shiroko-figure.webp",
"decoOpacity": 0.78,
- "dataFilter": "uptimerobot",
+ "dataFilter": "both",
"refreshInterval": 300,
"dataSource": "auto",
"adminUrl": "",
diff --git a/public/status.json b/public/status.json
index b54cc0e..62b1537 100644
--- a/public/status.json
+++ b/public/status.json
@@ -1,22 +1,22 @@
{
"prober": "shiroko-monitor-node/0.12.2",
"demo": false,
- "generatedAt": "2026-10-14T08:47:43.133Z",
- "dataUpdatedAt": "2026-10-14T08:47:14.355Z",
- "updateIntervalSec": 300,
- "dataFilter": "uptimerobot",
+ "generatedAt": "2026-10-14T09:01:44.780Z",
+ "dataUpdatedAt": "2026-10-14T09:01:34.289Z",
+ "updateIntervalSec": 60,
+ "dataFilter": "both",
"probeScope": "all",
"stats": {
- "total": 6,
- "up": 5,
- "down": 1,
+ "total": 14,
+ "up": 10,
+ "down": 4,
"pending": 0,
- "avgLatency": 1036,
- "avgUptime90": 83.3,
+ "avgLatency": 1046,
+ "avgUptime90": 63.9,
"memory": {
- "rssMB": 84.1,
- "heapUsedMB": 14.3,
- "heapTotalMB": 15.7
+ "rssMB": 73.3,
+ "heapUsedMB": 13,
+ "heapTotalMB": 14.2
}
},
"sources": {
@@ -24,10 +24,10 @@
"enabled": true,
"ok": true,
"error": null,
- "lastSyncAt": "2026-10-14T08:43:33.439Z",
+ "lastSyncAt": "2026-10-14T08:59:05.177Z",
"count": 6,
"syncing": false,
- "lastSyncMs": 1791967412139
+ "lastSyncMs": 1791968343771
}
},
"notify": {
@@ -50,204 +50,1033 @@
"type": "down",
"detail": "UptimeRobot:403 Forbidden",
"maintenance": false
+ },
+ {
+ "t": "2026-10-14T01:52:04.581Z",
+ "id": "example-com",
+ "name": "Example 站点",
+ "type": "up",
+ "detail": "已恢复",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-14T01:51:03.855Z",
+ "id": "example-com",
+ "name": "Example 站点",
+ "type": "down",
+ "detail": "ETIMEDOUT",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-14T01:35:55.133Z",
+ "id": "example-com",
+ "name": "Example 站点",
+ "type": "up",
+ "detail": "已恢复",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-14T01:34:55.625Z",
+ "id": "example-com",
+ "name": "Example 站点",
+ "type": "down",
+ "detail": "ETIMEDOUT",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-14T01:24:49.605Z",
+ "id": "example-com",
+ "name": "Example 站点",
+ "type": "up",
+ "detail": "已恢复",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-14T01:23:50.168Z",
+ "id": "example-com",
+ "name": "Example 站点",
+ "type": "down",
+ "detail": "ETIMEDOUT",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-14T00:19:17.842Z",
+ "id": "example-com",
+ "name": "Example 站点",
+ "type": "up",
+ "detail": "已恢复",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-14T00:18:18.341Z",
+ "id": "example-com",
+ "name": "Example 站点",
+ "type": "down",
+ "detail": "ETIMEDOUT",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-13T23:21:49.904Z",
+ "id": "example-com",
+ "name": "Example 站点",
+ "type": "up",
+ "detail": "已恢复",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-13T23:20:50.360Z",
+ "id": "example-com",
+ "name": "Example 站点",
+ "type": "down",
+ "detail": "ETIMEDOUT",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-13T22:43:29.917Z",
+ "id": "cloudflare-site",
+ "name": "Cloudflare 官网",
+ "type": "up",
+ "detail": "已恢复",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-13T22:42:30.376Z",
+ "id": "cloudflare-site",
+ "name": "Cloudflare 官网",
+ "type": "down",
+ "detail": "UND_ERR_HEADERS_OVERFLOW",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-13T20:45:32.593Z",
+ "id": "cloudflare-site",
+ "name": "Cloudflare 官网",
+ "type": "up",
+ "detail": "已恢复",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-13T20:44:33.185Z",
+ "id": "cloudflare-site",
+ "name": "Cloudflare 官网",
+ "type": "down",
+ "detail": "UND_ERR_HEADERS_OVERFLOW",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-13T20:32:28.339Z",
+ "id": "cloudflare-site",
+ "name": "Cloudflare 官网",
+ "type": "up",
+ "detail": "已恢复",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-13T20:31:27.781Z",
+ "id": "cloudflare-site",
+ "name": "Cloudflare 官网",
+ "type": "down",
+ "detail": "ETIMEDOUT",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-13T20:27:24.883Z",
+ "id": "cloudflare-site",
+ "name": "Cloudflare 官网",
+ "type": "up",
+ "detail": "已恢复",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-13T20:25:24.931Z",
+ "id": "cloudflare-site",
+ "name": "Cloudflare 官网",
+ "type": "down",
+ "detail": "UND_ERR_HEADERS_OVERFLOW",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-13T20:21:21.972Z",
+ "id": "cloudflare-site",
+ "name": "Cloudflare 官网",
+ "type": "up",
+ "detail": "已恢复",
+ "maintenance": false
}
],
"monitors": {
- "ur-792059439": {
+ "example-com": {
"status": "up",
- "latency": 337,
- "code": null,
- "detail": "UptimeRobot:运行正常",
- "lastCheck": "2026-10-14T08:42:00.000Z",
+ "latency": 675,
+ "code": 200,
+ "detail": "HTTP 200",
+ "lastCheck": "2026-10-14T09:01:24.931Z",
"history": [
{
- "t": "2026-10-13T09:20:00.000Z",
+ "t": "2026-10-14T08:49:07.628Z",
"ok": true,
- "ms": 302
+ "ms": 2202
},
{
- "t": "2026-10-13T10:00:00.000Z",
+ "t": "2026-10-14T08:50:06.655Z",
"ok": true,
- "ms": 437
+ "ms": 723
},
{
- "t": "2026-10-13T10:40:00.000Z",
+ "t": "2026-10-14T08:51:07.649Z",
"ok": true,
- "ms": 246
+ "ms": 1160
},
{
- "t": "2026-10-13T11:20:00.000Z",
+ "t": "2026-10-14T08:52:08.231Z",
"ok": true,
- "ms": 395
+ "ms": 1149
},
{
- "t": "2026-10-13T12:00:00.000Z",
+ "t": "2026-10-14T08:53:08.390Z",
"ok": true,
- "ms": 311
+ "ms": 692
},
{
- "t": "2026-10-13T12:40:00.000Z",
+ "t": "2026-10-14T08:54:09.477Z",
"ok": true,
- "ms": 415
+ "ms": 1240
},
{
- "t": "2026-10-13T13:20:00.000Z",
+ "t": "2026-10-14T08:55:09.329Z",
"ok": true,
- "ms": 278
+ "ms": 677
},
{
- "t": "2026-10-13T14:00:00.000Z",
+ "t": "2026-10-14T08:55:21.697Z",
"ok": true,
- "ms": 356
+ "ms": 973
},
{
- "t": "2026-10-13T14:40:00.000Z",
+ "t": "2026-10-14T08:56:21.891Z",
"ok": true,
- "ms": 165
+ "ms": 684
},
{
- "t": "2026-10-13T15:20:00.000Z",
+ "t": "2026-10-14T08:57:22.967Z",
"ok": true,
- "ms": 301
+ "ms": 1227
},
{
- "t": "2026-10-13T16:00:00.000Z",
+ "t": "2026-10-14T08:58:23.604Z",
"ok": true,
- "ms": 411
+ "ms": 1177
},
{
- "t": "2026-10-13T16:40:00.000Z",
+ "t": "2026-10-14T08:59:24.157Z",
"ok": true,
- "ms": 245
+ "ms": 1232
},
{
- "t": "2026-10-13T17:20:00.000Z",
+ "t": "2026-10-14T09:00:25.063Z",
"ok": true,
- "ms": 273
+ "ms": 1314
},
{
- "t": "2026-10-13T18:00:00.000Z",
+ "t": "2026-10-14T09:01:24.931Z",
"ok": true,
- "ms": 386
- },
- {
- "t": "2026-10-13T18:40:00.000Z",
- "ok": true,
- "ms": 243
- },
- {
- "t": "2026-10-13T19:20:00.000Z",
- "ok": true,
- "ms": 535
- },
- {
- "t": "2026-10-13T20:00:00.000Z",
- "ok": true,
- "ms": 369
- },
- {
- "t": "2026-10-13T20:40:00.000Z",
- "ok": true,
- "ms": 405
- },
- {
- "t": "2026-10-13T21:20:00.000Z",
- "ok": true,
- "ms": 274
- },
- {
- "t": "2026-10-13T22:00:00.000Z",
- "ok": true,
- "ms": 350
- },
- {
- "t": "2026-10-13T22:40:00.000Z",
- "ok": true,
- "ms": 196
- },
- {
- "t": "2026-10-13T23:20:00.000Z",
- "ok": true,
- "ms": 306
- },
- {
- "t": "2026-10-14T00:00:00.000Z",
- "ok": true,
- "ms": 386
- },
- {
- "t": "2026-10-14T00:40:00.000Z",
- "ok": true,
- "ms": 180
- },
- {
- "t": "2026-10-14T01:20:00.000Z",
- "ok": true,
- "ms": 392
- },
- {
- "t": "2026-10-14T02:05:00.000Z",
- "ok": true,
- "ms": 244
- },
- {
- "t": "2026-10-14T02:45:00.000Z",
- "ok": true,
- "ms": 208
- },
- {
- "t": "2026-10-14T03:25:00.000Z",
- "ok": true,
- "ms": 269
- },
- {
- "t": "2026-10-14T04:05:00.000Z",
- "ok": true,
- "ms": 281
- },
- {
- "t": "2026-10-14T04:45:00.000Z",
- "ok": true,
- "ms": 205
- },
- {
- "t": "2026-10-14T05:25:00.000Z",
- "ok": true,
- "ms": 338
- },
- {
- "t": "2026-10-14T06:05:00.000Z",
- "ok": true,
- "ms": 348
- },
- {
- "t": "2026-10-14T06:45:00.000Z",
- "ok": true,
- "ms": 309
- },
- {
- "t": "2026-10-14T07:25:00.000Z",
- "ok": true,
- "ms": 437
- },
- {
- "t": "2026-10-14T08:06:00.000Z",
- "ok": true,
- "ms": 546
- },
- {
- "t": "2026-10-14T08:42:00.000Z",
- "ok": true,
- "ms": 337
+ "ms": 675
}
],
"daily": {
"2026-10-14": {
- "total": 7,
- "up": 7,
- "latSum": 2445,
- "latCount": 7,
- "latMax": 394
+ "total": 14,
+ "up": 14,
+ "latSum": 15125,
+ "latCount": 14,
+ "latMax": 2202
+ }
+ },
+ "tls": {
+ "daysLeft": 72,
+ "validTo": "2026-12-25T22:56:35.000Z",
+ "issuer": "SSL Corporation",
+ "checkedAt": "2026-10-14T08:49:07.609Z",
+ "error": null
+ },
+ "lat": {
+ "avg": 1080,
+ "max": 2202,
+ "days": [
+ {
+ "key": "2026-10-14",
+ "avg": 1080
+ }
+ ]
+ }
+ },
+ "baidu": {
+ "status": "up",
+ "latency": 89,
+ "code": 200,
+ "detail": "HTTP 200",
+ "lastCheck": "2026-10-14T09:01:24.351Z",
+ "history": [
+ {
+ "t": "2026-10-14T08:49:06.041Z",
+ "ok": true,
+ "ms": 612
+ },
+ {
+ "t": "2026-10-14T08:50:06.555Z",
+ "ok": true,
+ "ms": 619
+ },
+ {
+ "t": "2026-10-14T08:51:06.568Z",
+ "ok": true,
+ "ms": 78
+ },
+ {
+ "t": "2026-10-14T08:52:07.162Z",
+ "ok": true,
+ "ms": 79
+ },
+ {
+ "t": "2026-10-14T08:53:08.337Z",
+ "ok": true,
+ "ms": 635
+ },
+ {
+ "t": "2026-10-14T08:54:08.858Z",
+ "ok": true,
+ "ms": 619
+ },
+ {
+ "t": "2026-10-14T08:55:09.251Z",
+ "ok": true,
+ "ms": 598
+ },
+ {
+ "t": "2026-10-14T08:55:20.812Z",
+ "ok": true,
+ "ms": 85
+ },
+ {
+ "t": "2026-10-14T08:56:21.914Z",
+ "ok": true,
+ "ms": 705
+ },
+ {
+ "t": "2026-10-14T08:57:21.827Z",
+ "ok": true,
+ "ms": 84
+ },
+ {
+ "t": "2026-10-14T08:58:23.030Z",
+ "ok": true,
+ "ms": 600
+ },
+ {
+ "t": "2026-10-14T08:59:23.525Z",
+ "ok": true,
+ "ms": 597
+ },
+ {
+ "t": "2026-10-14T09:00:23.924Z",
+ "ok": true,
+ "ms": 165
+ },
+ {
+ "t": "2026-10-14T09:01:24.351Z",
+ "ok": true,
+ "ms": 89
+ }
+ ],
+ "daily": {
+ "2026-10-14": {
+ "total": 14,
+ "up": 14,
+ "latSum": 5565,
+ "latCount": 14,
+ "latMax": 705
+ }
+ },
+ "tls": {
+ "daysLeft": 101,
+ "validTo": "2027-01-24T02:32:55.000Z",
+ "issuer": "GlobalSign nv-sa",
+ "checkedAt": "2026-10-14T08:49:07.678Z",
+ "error": null
+ },
+ "lat": {
+ "avg": 398,
+ "max": 705,
+ "days": [
+ {
+ "key": "2026-10-14",
+ "avg": 398
+ }
+ ]
+ }
+ },
+ "cloudflare-site": {
+ "status": "up",
+ "latency": 1466,
+ "code": 200,
+ "detail": "HTTP 200",
+ "lastCheck": "2026-10-14T09:01:25.732Z",
+ "history": [
+ {
+ "t": "2026-10-14T08:49:07.143Z",
+ "ok": true,
+ "ms": 1710
+ },
+ {
+ "t": "2026-10-14T08:50:07.601Z",
+ "ok": true,
+ "ms": 1661
+ },
+ {
+ "t": "2026-10-14T08:51:07.364Z",
+ "ok": true,
+ "ms": 872
+ },
+ {
+ "t": "2026-10-14T08:52:07.832Z",
+ "ok": true,
+ "ms": 747
+ },
+ {
+ "t": "2026-10-14T08:53:08.950Z",
+ "ok": true,
+ "ms": 1247
+ },
+ {
+ "t": "2026-10-14T08:54:10.271Z",
+ "ok": true,
+ "ms": 2030
+ },
+ {
+ "t": "2026-10-14T08:55:09.926Z",
+ "ok": true,
+ "ms": 1270
+ },
+ {
+ "t": "2026-10-14T08:55:21.047Z",
+ "ok": true,
+ "ms": 318
+ },
+ {
+ "t": "2026-10-14T08:56:21.884Z",
+ "ok": true,
+ "ms": 673
+ },
+ {
+ "t": "2026-10-14T08:57:22.613Z",
+ "ok": true,
+ "ms": 867
+ },
+ {
+ "t": "2026-10-14T08:58:24.272Z",
+ "ok": true,
+ "ms": 1839
+ },
+ {
+ "t": "2026-10-14T08:59:24.829Z",
+ "ok": true,
+ "ms": 1899
+ },
+ {
+ "t": "2026-10-14T09:00:25.081Z",
+ "ok": true,
+ "ms": 1320
+ },
+ {
+ "t": "2026-10-14T09:01:25.732Z",
+ "ok": true,
+ "ms": 1466
+ }
+ ],
+ "daily": {
+ "2026-10-14": {
+ "total": 14,
+ "up": 14,
+ "latSum": 17919,
+ "latCount": 14,
+ "latMax": 2030
+ }
+ },
+ "tls": {
+ "daysLeft": 88,
+ "validTo": "2027-01-10T21:43:36.000Z",
+ "issuer": "Google Trust Services",
+ "checkedAt": "2026-10-14T08:49:08.311Z",
+ "error": null
+ },
+ "lat": {
+ "avg": 1280,
+ "max": 2030,
+ "days": [
+ {
+ "key": "2026-10-14",
+ "avg": 1280
+ }
+ ]
+ }
+ },
+ "github-api": {
+ "status": "up",
+ "latency": 1279,
+ "code": 200,
+ "detail": "HTTP 200",
+ "lastCheck": "2026-10-14T09:00:23.014Z",
+ "history": [
+ {
+ "t": "2026-10-14T08:49:07.306Z",
+ "ok": true,
+ "ms": 1869
+ },
+ {
+ "t": "2026-10-14T08:54:07.070Z",
+ "ok": true,
+ "ms": 842
+ },
+ {
+ "t": "2026-10-14T08:55:22.049Z",
+ "ok": true,
+ "ms": 1319
+ },
+ {
+ "t": "2026-10-14T09:00:23.014Z",
+ "ok": true,
+ "ms": 1279
+ }
+ ],
+ "daily": {
+ "2026-10-14": {
+ "total": 4,
+ "up": 4,
+ "latSum": 5309,
+ "latCount": 4,
+ "latMax": 1869
+ }
+ },
+ "tls": {
+ "daysLeft": 44,
+ "validTo": "2026-11-27T23:59:59.000Z",
+ "issuer": "Sectigo Limited",
+ "checkedAt": "2026-10-14T08:49:09.257Z",
+ "error": null
+ },
+ "lat": {
+ "avg": 1327,
+ "max": 1869,
+ "days": [
+ {
+ "key": "2026-10-14",
+ "avg": 1327
+ }
+ ]
+ }
+ },
+ "httpbin-500": {
+ "status": "up",
+ "latency": 1723,
+ "code": 500,
+ "detail": "HTTP 500",
+ "lastCheck": "2026-10-14T09:01:22.960Z",
+ "history": [
+ {
+ "t": "2026-10-14T08:49:08.114Z",
+ "ok": true,
+ "ms": 2671
+ },
+ {
+ "t": "2026-10-14T08:51:06.931Z",
+ "ok": true,
+ "ms": 1457
+ },
+ {
+ "t": "2026-10-14T08:53:07.948Z",
+ "ok": true,
+ "ms": 2263
+ },
+ {
+ "t": "2026-10-14T08:55:08.735Z",
+ "ok": true,
+ "ms": 2099
+ },
+ {
+ "t": "2026-10-14T08:55:21.989Z",
+ "ok": true,
+ "ms": 1257
+ },
+ {
+ "t": "2026-10-14T08:57:22.071Z",
+ "ok": true,
+ "ms": 1334
+ },
+ {
+ "t": "2026-10-14T08:59:22.408Z",
+ "ok": true,
+ "ms": 1507
+ },
+ {
+ "t": "2026-10-14T09:01:22.960Z",
+ "ok": true,
+ "ms": 1723
+ }
+ ],
+ "daily": {
+ "2026-10-14": {
+ "total": 8,
+ "up": 8,
+ "latSum": 14311,
+ "latCount": 8,
+ "latMax": 2671
+ }
+ },
+ "tls": {
+ "daysLeft": 80,
+ "validTo": "2027-01-02T23:59:59.000Z",
+ "issuer": "Amazon",
+ "checkedAt": "2026-10-14T08:49:10.811Z",
+ "error": null
+ },
+ "lat": {
+ "avg": 1789,
+ "max": 2671,
+ "days": [
+ {
+ "key": "2026-10-14",
+ "avg": 1789
+ }
+ ]
+ }
+ },
+ "badssl-expired": {
+ "status": "down",
+ "latency": 5163,
+ "code": 0,
+ "detail": "ECONNRESET",
+ "lastCheck": "2026-10-14T09:01:26.404Z",
+ "history": [
+ {
+ "t": "2026-10-14T08:49:08.317Z",
+ "ok": false,
+ "ms": 2868
+ },
+ {
+ "t": "2026-10-14T08:51:07.053Z",
+ "ok": false,
+ "ms": 1574
+ },
+ {
+ "t": "2026-10-14T08:53:07.433Z",
+ "ok": false,
+ "ms": 1745
+ },
+ {
+ "t": "2026-10-14T08:55:09.301Z",
+ "ok": false,
+ "ms": 2663
+ },
+ {
+ "t": "2026-10-14T08:55:22.888Z",
+ "ok": false,
+ "ms": 2154
+ },
+ {
+ "t": "2026-10-14T08:57:22.262Z",
+ "ok": false,
+ "ms": 1522
+ },
+ {
+ "t": "2026-10-14T08:59:24.324Z",
+ "ok": false,
+ "ms": 3420
+ },
+ {
+ "t": "2026-10-14T09:01:26.404Z",
+ "ok": false,
+ "ms": 5163
+ }
+ ],
+ "daily": {
+ "2026-10-14": {
+ "total": 8,
+ "up": 0
+ }
+ },
+ "tls": {
+ "daysLeft": -4203,
+ "validTo": "2015-04-12T23:59:59.000Z",
+ "issuer": "COMODO CA Limited",
+ "checkedAt": "2026-10-14T08:49:12.607Z",
+ "error": null
+ }
+ },
+ "cloudflare-dns-tcp": {
+ "status": "down",
+ "latency": 10015,
+ "code": null,
+ "detail": "TCP 连接超时",
+ "lastCheck": "2026-10-14T09:01:34.288Z",
+ "history": [
+ {
+ "t": "2026-10-14T08:49:15.457Z",
+ "ok": false,
+ "ms": 10005
+ },
+ {
+ "t": "2026-10-14T08:50:15.952Z",
+ "ok": false,
+ "ms": 10009
+ },
+ {
+ "t": "2026-10-14T08:51:16.497Z",
+ "ok": false,
+ "ms": 10002
+ },
+ {
+ "t": "2026-10-14T08:52:17.103Z",
+ "ok": false,
+ "ms": 10016
+ },
+ {
+ "t": "2026-10-14T08:53:17.708Z",
+ "ok": false,
+ "ms": 10002
+ },
+ {
+ "t": "2026-10-14T08:54:18.272Z",
+ "ok": false,
+ "ms": 10028
+ },
+ {
+ "t": "2026-10-14T08:55:18.671Z",
+ "ok": false,
+ "ms": 10007
+ },
+ {
+ "t": "2026-10-14T08:55:30.738Z",
+ "ok": false,
+ "ms": 10002
+ },
+ {
+ "t": "2026-10-14T08:56:31.217Z",
+ "ok": false,
+ "ms": 10004
+ },
+ {
+ "t": "2026-10-14T08:57:31.795Z",
+ "ok": false,
+ "ms": 10046
+ },
+ {
+ "t": "2026-10-14T08:58:32.448Z",
+ "ok": false,
+ "ms": 10012
+ },
+ {
+ "t": "2026-10-14T08:59:32.937Z",
+ "ok": false,
+ "ms": 10004
+ },
+ {
+ "t": "2026-10-14T09:00:33.771Z",
+ "ok": false,
+ "ms": 10005
+ },
+ {
+ "t": "2026-10-14T09:01:34.288Z",
+ "ok": false,
+ "ms": 10015
+ }
+ ],
+ "daily": {
+ "2026-10-14": {
+ "total": 14,
+ "up": 0
+ }
+ }
+ },
+ "google-dns-tcp": {
+ "status": "down",
+ "latency": 10015,
+ "code": null,
+ "detail": "TCP 连接超时",
+ "lastCheck": "2026-10-14T09:01:34.289Z",
+ "history": [
+ {
+ "t": "2026-10-14T08:49:15.458Z",
+ "ok": false,
+ "ms": 10005
+ },
+ {
+ "t": "2026-10-14T08:50:15.952Z",
+ "ok": false,
+ "ms": 10009
+ },
+ {
+ "t": "2026-10-14T08:51:16.497Z",
+ "ok": false,
+ "ms": 10003
+ },
+ {
+ "t": "2026-10-14T08:52:17.104Z",
+ "ok": false,
+ "ms": 10016
+ },
+ {
+ "t": "2026-10-14T08:53:17.708Z",
+ "ok": false,
+ "ms": 10001
+ },
+ {
+ "t": "2026-10-14T08:54:18.272Z",
+ "ok": false,
+ "ms": 10028
+ },
+ {
+ "t": "2026-10-14T08:55:18.671Z",
+ "ok": false,
+ "ms": 10006
+ },
+ {
+ "t": "2026-10-14T08:55:30.738Z",
+ "ok": false,
+ "ms": 10002
+ },
+ {
+ "t": "2026-10-14T08:56:31.217Z",
+ "ok": false,
+ "ms": 10004
+ },
+ {
+ "t": "2026-10-14T08:57:31.797Z",
+ "ok": false,
+ "ms": 10048
+ },
+ {
+ "t": "2026-10-14T08:58:32.449Z",
+ "ok": false,
+ "ms": 10012
+ },
+ {
+ "t": "2026-10-14T08:59:32.938Z",
+ "ok": false,
+ "ms": 10003
+ },
+ {
+ "t": "2026-10-14T09:00:33.771Z",
+ "ok": false,
+ "ms": 10005
+ },
+ {
+ "t": "2026-10-14T09:01:34.289Z",
+ "ok": false,
+ "ms": 10015
+ }
+ ],
+ "daily": {
+ "2026-10-14": {
+ "total": 14,
+ "up": 0
+ }
+ }
+ },
+ "ur-792059439": {
+ "status": "up",
+ "latency": 335,
+ "code": null,
+ "detail": "UptimeRobot:运行正常",
+ "lastCheck": "2026-10-14T08:57:00.000Z",
+ "history": [
+ {
+ "t": "2026-10-13T09:40:00.000Z",
+ "ok": true,
+ "ms": 296
+ },
+ {
+ "t": "2026-10-13T10:20:00.000Z",
+ "ok": true,
+ "ms": 183
+ },
+ {
+ "t": "2026-10-13T11:00:00.000Z",
+ "ok": true,
+ "ms": 413
+ },
+ {
+ "t": "2026-10-13T11:40:00.000Z",
+ "ok": true,
+ "ms": 232
+ },
+ {
+ "t": "2026-10-13T12:20:00.000Z",
+ "ok": true,
+ "ms": 295
+ },
+ {
+ "t": "2026-10-13T13:00:00.000Z",
+ "ok": true,
+ "ms": 258
+ },
+ {
+ "t": "2026-10-13T13:40:00.000Z",
+ "ok": true,
+ "ms": 277
+ },
+ {
+ "t": "2026-10-13T14:20:00.000Z",
+ "ok": true,
+ "ms": 563
+ },
+ {
+ "t": "2026-10-13T15:00:00.000Z",
+ "ok": true,
+ "ms": 248
+ },
+ {
+ "t": "2026-10-13T15:45:00.000Z",
+ "ok": true,
+ "ms": 253
+ },
+ {
+ "t": "2026-10-13T16:25:00.000Z",
+ "ok": true,
+ "ms": 487
+ },
+ {
+ "t": "2026-10-13T17:05:00.000Z",
+ "ok": true,
+ "ms": 257
+ },
+ {
+ "t": "2026-10-13T17:45:00.000Z",
+ "ok": true,
+ "ms": 314
+ },
+ {
+ "t": "2026-10-13T18:25:00.000Z",
+ "ok": true,
+ "ms": 344
+ },
+ {
+ "t": "2026-10-13T19:05:00.000Z",
+ "ok": true,
+ "ms": 478
+ },
+ {
+ "t": "2026-10-13T19:45:00.000Z",
+ "ok": true,
+ "ms": 409
+ },
+ {
+ "t": "2026-10-13T20:25:00.000Z",
+ "ok": true,
+ "ms": 369
+ },
+ {
+ "t": "2026-10-13T21:05:00.000Z",
+ "ok": true,
+ "ms": 241
+ },
+ {
+ "t": "2026-10-13T21:45:00.000Z",
+ "ok": true,
+ "ms": 298
+ },
+ {
+ "t": "2026-10-13T22:25:00.000Z",
+ "ok": true,
+ "ms": 182
+ },
+ {
+ "t": "2026-10-13T23:05:00.000Z",
+ "ok": true,
+ "ms": 265
+ },
+ {
+ "t": "2026-10-13T23:45:00.000Z",
+ "ok": true,
+ "ms": 242
+ },
+ {
+ "t": "2026-10-14T00:25:00.000Z",
+ "ok": true,
+ "ms": 333
+ },
+ {
+ "t": "2026-10-14T01:05:00.000Z",
+ "ok": true,
+ "ms": 336
+ },
+ {
+ "t": "2026-10-14T01:45:00.000Z",
+ "ok": true,
+ "ms": 180
+ },
+ {
+ "t": "2026-10-14T02:25:00.000Z",
+ "ok": true,
+ "ms": 326
+ },
+ {
+ "t": "2026-10-14T03:05:00.000Z",
+ "ok": true,
+ "ms": 205
+ },
+ {
+ "t": "2026-10-14T03:45:00.000Z",
+ "ok": true,
+ "ms": 278
+ },
+ {
+ "t": "2026-10-14T04:25:00.000Z",
+ "ok": true,
+ "ms": 176
+ },
+ {
+ "t": "2026-10-14T05:05:00.000Z",
+ "ok": true,
+ "ms": 266
+ },
+ {
+ "t": "2026-10-14T05:45:00.000Z",
+ "ok": true,
+ "ms": 414
+ },
+ {
+ "t": "2026-10-14T06:25:00.000Z",
+ "ok": true,
+ "ms": 249
+ },
+ {
+ "t": "2026-10-14T07:05:00.000Z",
+ "ok": true,
+ "ms": 444
+ },
+ {
+ "t": "2026-10-14T07:41:00.000Z",
+ "ok": true,
+ "ms": 652
+ },
+ {
+ "t": "2026-10-14T08:21:00.000Z",
+ "ok": true,
+ "ms": 362
+ },
+ {
+ "t": "2026-10-14T08:57:00.000Z",
+ "ok": true,
+ "ms": 335
+ }
+ ],
+ "daily": {
+ "2026-10-14": {
+ "total": 3,
+ "up": 3,
+ "latSum": 1029,
+ "latCount": 3,
+ "latMax": 369
}
},
"meta": {
@@ -272,206 +1101,206 @@
"90": 0
},
"lat": {
- "avg": 349,
- "max": 394,
+ "avg": 343,
+ "max": 369,
"days": [
{
"key": "2026-10-14",
- "avg": 349
+ "avg": 343
}
]
}
},
"ur-795497022": {
"status": "up",
- "latency": 696,
+ "latency": 806,
"code": null,
"detail": "UptimeRobot:运行正常",
- "lastCheck": "2026-10-14T08:38:00.000Z",
+ "lastCheck": "2026-10-14T08:54:00.000Z",
"history": [
{
- "t": "2026-10-13T09:35:00.000Z",
+ "t": "2026-10-13T10:00:00.000Z",
"ok": true,
- "ms": 663
+ "ms": 791
},
{
- "t": "2026-10-13T10:15:00.000Z",
+ "t": "2026-10-13T10:40:00.000Z",
"ok": true,
- "ms": 837
+ "ms": 678
},
{
- "t": "2026-10-13T10:55:00.000Z",
- "ok": true,
- "ms": 723
- },
- {
- "t": "2026-10-13T11:35:00.000Z",
- "ok": true,
- "ms": 688
- },
- {
- "t": "2026-10-13T12:15:00.000Z",
- "ok": true,
- "ms": 824
- },
- {
- "t": "2026-10-13T12:55:00.000Z",
- "ok": true,
- "ms": 799
- },
- {
- "t": "2026-10-13T13:35:00.000Z",
- "ok": true,
- "ms": 943
- },
- {
- "t": "2026-10-13T14:20:00.000Z",
- "ok": true,
- "ms": 808
- },
- {
- "t": "2026-10-13T15:00:00.000Z",
- "ok": true,
- "ms": 842
- },
- {
- "t": "2026-10-13T15:40:00.000Z",
- "ok": true,
- "ms": 918
- },
- {
- "t": "2026-10-13T16:20:00.000Z",
- "ok": true,
- "ms": 646
- },
- {
- "t": "2026-10-13T17:00:00.000Z",
- "ok": true,
- "ms": 722
- },
- {
- "t": "2026-10-13T17:40:00.000Z",
- "ok": true,
- "ms": 749
- },
- {
- "t": "2026-10-13T18:20:00.000Z",
- "ok": true,
- "ms": 750
- },
- {
- "t": "2026-10-13T19:00:00.000Z",
- "ok": true,
- "ms": 920
- },
- {
- "t": "2026-10-13T19:40:00.000Z",
- "ok": true,
- "ms": 715
- },
- {
- "t": "2026-10-13T20:20:00.000Z",
- "ok": true,
- "ms": 835
- },
- {
- "t": "2026-10-13T21:00:00.000Z",
- "ok": true,
- "ms": 1038
- },
- {
- "t": "2026-10-13T21:40:00.000Z",
- "ok": true,
- "ms": 1235
- },
- {
- "t": "2026-10-13T22:20:00.000Z",
- "ok": true,
- "ms": 731
- },
- {
- "t": "2026-10-13T23:00:00.000Z",
- "ok": true,
- "ms": 685
- },
- {
- "t": "2026-10-13T23:40:00.000Z",
- "ok": true,
- "ms": 597
- },
- {
- "t": "2026-10-14T00:20:00.000Z",
- "ok": true,
- "ms": 676
- },
- {
- "t": "2026-10-14T01:00:00.000Z",
- "ok": true,
- "ms": 755
- },
- {
- "t": "2026-10-14T01:40:00.000Z",
- "ok": true,
- "ms": 658
- },
- {
- "t": "2026-10-14T02:20:00.000Z",
+ "t": "2026-10-13T11:20:00.000Z",
"ok": true,
"ms": 740
},
{
- "t": "2026-10-14T03:00:00.000Z",
+ "t": "2026-10-13T12:00:00.000Z",
"ok": true,
- "ms": 718
+ "ms": 828
},
{
- "t": "2026-10-14T03:40:00.000Z",
+ "t": "2026-10-13T12:40:00.000Z",
"ok": true,
- "ms": 593
+ "ms": 722
},
{
- "t": "2026-10-14T04:20:00.000Z",
+ "t": "2026-10-13T13:20:00.000Z",
"ok": true,
- "ms": 627
+ "ms": 849
},
{
- "t": "2026-10-14T05:00:00.000Z",
+ "t": "2026-10-13T14:00:00.000Z",
"ok": true,
- "ms": 674
+ "ms": 1071
},
{
- "t": "2026-10-14T05:40:00.000Z",
+ "t": "2026-10-13T14:40:00.000Z",
"ok": true,
- "ms": 700
+ "ms": 863
},
{
- "t": "2026-10-14T06:20:00.000Z",
+ "t": "2026-10-13T15:20:00.000Z",
"ok": true,
- "ms": 707
+ "ms": 893
},
{
- "t": "2026-10-14T07:33:00.000Z",
+ "t": "2026-10-13T16:00:00.000Z",
"ok": true,
- "ms": 985
+ "ms": 742
},
{
- "t": "2026-10-14T08:05:00.000Z",
+ "t": "2026-10-13T16:40:00.000Z",
"ok": true,
- "ms": 712
+ "ms": 769
},
{
- "t": "2026-10-14T08:38:00.000Z",
+ "t": "2026-10-13T17:20:00.000Z",
+ "ok": true,
+ "ms": 769
+ },
+ {
+ "t": "2026-10-13T18:00:00.000Z",
+ "ok": true,
+ "ms": 738
+ },
+ {
+ "t": "2026-10-13T18:40:00.000Z",
+ "ok": true,
+ "ms": 888
+ },
+ {
+ "t": "2026-10-13T19:20:00.000Z",
+ "ok": true,
+ "ms": 810
+ },
+ {
+ "t": "2026-10-13T20:00:00.000Z",
+ "ok": true,
+ "ms": 754
+ },
+ {
+ "t": "2026-10-13T20:40:00.000Z",
+ "ok": true,
+ "ms": 1721
+ },
+ {
+ "t": "2026-10-13T21:20:00.000Z",
+ "ok": true,
+ "ms": 749
+ },
+ {
+ "t": "2026-10-13T22:00:00.000Z",
+ "ok": true,
+ "ms": 1288
+ },
+ {
+ "t": "2026-10-13T22:40:00.000Z",
+ "ok": true,
+ "ms": 694
+ },
+ {
+ "t": "2026-10-13T23:20:00.000Z",
+ "ok": true,
+ "ms": 728
+ },
+ {
+ "t": "2026-10-14T00:00:00.000Z",
+ "ok": true,
+ "ms": 611
+ },
+ {
+ "t": "2026-10-14T00:40:00.000Z",
+ "ok": true,
+ "ms": 752
+ },
+ {
+ "t": "2026-10-14T01:20:00.000Z",
+ "ok": true,
+ "ms": 734
+ },
+ {
+ "t": "2026-10-14T02:00:00.000Z",
+ "ok": true,
+ "ms": 635
+ },
+ {
+ "t": "2026-10-14T02:40:00.000Z",
+ "ok": true,
+ "ms": 781
+ },
+ {
+ "t": "2026-10-14T03:20:00.000Z",
+ "ok": true,
+ "ms": 710
+ },
+ {
+ "t": "2026-10-14T04:00:00.000Z",
+ "ok": true,
+ "ms": 645
+ },
+ {
+ "t": "2026-10-14T04:40:00.000Z",
+ "ok": true,
+ "ms": 668
+ },
+ {
+ "t": "2026-10-14T05:20:00.000Z",
+ "ok": true,
+ "ms": 683
+ },
+ {
+ "t": "2026-10-14T06:00:00.000Z",
+ "ok": true,
+ "ms": 701
+ },
+ {
+ "t": "2026-10-14T06:40:00.000Z",
+ "ok": true,
+ "ms": 727
+ },
+ {
+ "t": "2026-10-14T07:20:00.000Z",
"ok": true,
"ms": 696
+ },
+ {
+ "t": "2026-10-14T08:21:00.000Z",
+ "ok": true,
+ "ms": 757
+ },
+ {
+ "t": "2026-10-14T08:54:00.000Z",
+ "ok": true,
+ "ms": 806
}
],
"daily": {
"2026-10-14": {
- "total": 7,
- "up": 7,
- "latSum": 4953,
- "latCount": 7,
- "latMax": 721
+ "total": 3,
+ "up": 3,
+ "latSum": 2324,
+ "latCount": 3,
+ "latMax": 806
}
},
"meta": {
@@ -496,206 +1325,211 @@
"90": 5432
},
"lat": {
- "avg": 708,
- "max": 721,
+ "avg": 775,
+ "max": 806,
"days": [
{
"key": "2026-10-14",
- "avg": 708
+ "avg": 775
}
]
}
},
"ur-795556828": {
"status": "up",
- "latency": 398,
+ "latency": 357,
"code": null,
"detail": "UptimeRobot:运行正常",
- "lastCheck": "2026-10-14T08:42:00.000Z",
+ "lastCheck": "2026-10-14T08:57:00.000Z",
"history": [
{
- "t": "2026-10-13T09:55:00.000Z",
+ "t": "2026-10-13T09:35:00.000Z",
"ok": true,
- "ms": 455
+ "ms": 212
},
{
- "t": "2026-10-13T10:35:00.000Z",
+ "t": "2026-10-13T10:15:00.000Z",
"ok": true,
- "ms": 372
+ "ms": 415
},
{
- "t": "2026-10-13T11:15:00.000Z",
+ "t": "2026-10-13T10:55:00.000Z",
"ok": true,
- "ms": 240
+ "ms": 221
},
{
- "t": "2026-10-13T11:55:00.000Z",
+ "t": "2026-10-13T11:35:00.000Z",
"ok": true,
- "ms": 261
+ "ms": 392
},
{
- "t": "2026-10-13T12:35:00.000Z",
+ "t": "2026-10-13T12:15:00.000Z",
"ok": true,
- "ms": 335
+ "ms": 291
},
{
- "t": "2026-10-13T13:15:00.000Z",
+ "t": "2026-10-13T12:55:00.000Z",
"ok": true,
- "ms": 413
+ "ms": 380
},
{
- "t": "2026-10-13T13:55:00.000Z",
+ "t": "2026-10-13T13:35:00.000Z",
"ok": true,
- "ms": 283
+ "ms": 303
},
{
- "t": "2026-10-13T14:35:00.000Z",
+ "t": "2026-10-13T14:15:00.000Z",
"ok": true,
- "ms": 309
+ "ms": 322
},
{
- "t": "2026-10-13T15:20:00.000Z",
+ "t": "2026-10-13T14:55:00.000Z",
"ok": true,
- "ms": 451
+ "ms": 476
},
{
- "t": "2026-10-13T16:00:00.000Z",
+ "t": "2026-10-13T15:35:00.000Z",
"ok": true,
- "ms": 248
+ "ms": 320
},
{
- "t": "2026-10-13T16:40:00.000Z",
+ "t": "2026-10-13T16:15:00.000Z",
"ok": true,
- "ms": 378
+ "ms": 318
},
{
- "t": "2026-10-13T17:20:00.000Z",
+ "t": "2026-10-13T16:55:00.000Z",
+ "ok": true,
+ "ms": 414
+ },
+ {
+ "t": "2026-10-13T17:35:00.000Z",
+ "ok": true,
+ "ms": 384
+ },
+ {
+ "t": "2026-10-13T18:15:00.000Z",
+ "ok": true,
+ "ms": 424
+ },
+ {
+ "t": "2026-10-13T18:55:00.000Z",
+ "ok": true,
+ "ms": 260
+ },
+ {
+ "t": "2026-10-13T19:35:00.000Z",
"ok": true,
"ms": 293
},
{
- "t": "2026-10-13T18:00:00.000Z",
+ "t": "2026-10-13T20:15:00.000Z",
"ok": true,
- "ms": 495
+ "ms": 273
},
{
- "t": "2026-10-13T18:40:00.000Z",
+ "t": "2026-10-13T20:55:00.000Z",
"ok": true,
- "ms": 391
+ "ms": 471
},
{
- "t": "2026-10-13T19:20:00.000Z",
- "ok": true,
- "ms": 338
- },
- {
- "t": "2026-10-13T20:00:00.000Z",
- "ok": true,
- "ms": 363
- },
- {
- "t": "2026-10-13T20:40:00.000Z",
- "ok": true,
- "ms": 499
- },
- {
- "t": "2026-10-13T21:20:00.000Z",
- "ok": true,
- "ms": 372
- },
- {
- "t": "2026-10-13T22:00:00.000Z",
- "ok": true,
- "ms": 194
- },
- {
- "t": "2026-10-13T22:40:00.000Z",
- "ok": true,
- "ms": 225
- },
- {
- "t": "2026-10-13T23:20:00.000Z",
- "ok": true,
- "ms": 237
- },
- {
- "t": "2026-10-14T00:00:00.000Z",
- "ok": true,
- "ms": 215
- },
- {
- "t": "2026-10-14T00:40:00.000Z",
- "ok": true,
- "ms": 298
- },
- {
- "t": "2026-10-14T01:20:00.000Z",
- "ok": true,
- "ms": 450
- },
- {
- "t": "2026-10-14T02:00:00.000Z",
- "ok": true,
- "ms": 319
- },
- {
- "t": "2026-10-14T02:40:00.000Z",
- "ok": true,
- "ms": 398
- },
- {
- "t": "2026-10-14T03:20:00.000Z",
+ "t": "2026-10-13T21:35:00.000Z",
"ok": true,
"ms": 347
},
{
- "t": "2026-10-14T04:00:00.000Z",
+ "t": "2026-10-13T22:15:00.000Z",
"ok": true,
- "ms": 407
+ "ms": 238
},
{
- "t": "2026-10-14T04:40:00.000Z",
+ "t": "2026-10-13T22:55:00.000Z",
"ok": true,
- "ms": 344
+ "ms": 233
},
{
- "t": "2026-10-14T05:20:00.000Z",
+ "t": "2026-10-13T23:35:00.000Z",
"ok": true,
- "ms": 337
+ "ms": 240
},
{
- "t": "2026-10-14T06:00:00.000Z",
+ "t": "2026-10-14T00:15:00.000Z",
"ok": true,
- "ms": 365
+ "ms": 312
},
{
- "t": "2026-10-14T06:40:00.000Z",
+ "t": "2026-10-14T00:55:00.000Z",
"ok": true,
- "ms": 252
+ "ms": 341
},
{
- "t": "2026-10-14T07:20:00.000Z",
+ "t": "2026-10-14T01:40:00.000Z",
"ok": true,
- "ms": 421
+ "ms": 382
},
{
- "t": "2026-10-14T08:06:00.000Z",
+ "t": "2026-10-14T02:20:00.000Z",
"ok": true,
- "ms": 387
+ "ms": 129
},
{
- "t": "2026-10-14T08:42:00.000Z",
+ "t": "2026-10-14T03:00:00.000Z",
"ok": true,
- "ms": 398
+ "ms": 595
+ },
+ {
+ "t": "2026-10-14T03:40:00.000Z",
+ "ok": true,
+ "ms": 465
+ },
+ {
+ "t": "2026-10-14T04:20:00.000Z",
+ "ok": true,
+ "ms": 332
+ },
+ {
+ "t": "2026-10-14T05:00:00.000Z",
+ "ok": true,
+ "ms": 269
+ },
+ {
+ "t": "2026-10-14T05:40:00.000Z",
+ "ok": true,
+ "ms": 549
+ },
+ {
+ "t": "2026-10-14T06:20:00.000Z",
+ "ok": true,
+ "ms": 177
+ },
+ {
+ "t": "2026-10-14T07:00:00.000Z",
+ "ok": true,
+ "ms": 394
+ },
+ {
+ "t": "2026-10-14T07:36:00.000Z",
+ "ok": true,
+ "ms": 182
+ },
+ {
+ "t": "2026-10-14T08:16:00.000Z",
+ "ok": true,
+ "ms": 369
+ },
+ {
+ "t": "2026-10-14T08:57:00.000Z",
+ "ok": true,
+ "ms": 357
}
],
"daily": {
"2026-10-14": {
- "total": 7,
- "up": 7,
- "latSum": 2618,
- "latCount": 7,
- "latMax": 421
+ "total": 3,
+ "up": 3,
+ "latSum": 1079,
+ "latCount": 3,
+ "latMax": 384
}
},
"meta": {
@@ -720,22 +1554,22 @@
"90": 0
},
"lat": {
- "avg": 374,
- "max": 421,
+ "avg": 360,
+ "max": 384,
"days": [
{
"key": "2026-10-14",
- "avg": 374
+ "avg": 360
}
]
}
},
"ur-792059414": {
"status": "up",
- "latency": 3208,
+ "latency": 3205,
"code": null,
"detail": "UptimeRobot:运行正常",
- "lastCheck": "2026-10-14T08:40:00.000Z",
+ "lastCheck": "2026-10-14T08:57:00.000Z",
"history": [
{
"t": "2026-10-13T09:55:00.000Z",
@@ -873,43 +1707,43 @@
"ms": 1955
},
{
- "t": "2026-10-14T05:20:00.000Z",
+ "t": "2026-10-14T05:25:00.000Z",
"ok": true,
- "ms": 3605
+ "ms": 3612
},
{
- "t": "2026-10-14T06:00:00.000Z",
+ "t": "2026-10-14T06:10:00.000Z",
"ok": true,
- "ms": 2050
+ "ms": 1928
},
{
- "t": "2026-10-14T06:40:00.000Z",
+ "t": "2026-10-14T06:55:00.000Z",
"ok": true,
- "ms": 1494
+ "ms": 1423
},
{
- "t": "2026-10-14T07:20:00.000Z",
+ "t": "2026-10-14T07:38:00.000Z",
"ok": true,
- "ms": 2086
+ "ms": 2110
},
{
- "t": "2026-10-14T08:00:00.000Z",
+ "t": "2026-10-14T08:17:00.000Z",
"ok": true,
- "ms": 1610
+ "ms": 2428
},
{
- "t": "2026-10-14T08:40:00.000Z",
+ "t": "2026-10-14T08:57:00.000Z",
"ok": true,
- "ms": 3208
+ "ms": 3205
}
],
"daily": {
"2026-10-14": {
- "total": 7,
- "up": 7,
- "latSum": 20805,
- "latCount": 7,
- "latMax": 3208
+ "total": 3,
+ "up": 3,
+ "latSum": 8282,
+ "latCount": 3,
+ "latMax": 3205
}
},
"meta": {
@@ -934,206 +1768,211 @@
"90": 7593
},
"lat": {
- "avg": 2972,
- "max": 3208,
+ "avg": 2761,
+ "max": 3205,
"days": [
{
"key": "2026-10-14",
- "avg": 2972
+ "avg": 2761
}
]
}
},
"ur-798788113": {
"status": "up",
- "latency": 541,
+ "latency": 375,
"code": null,
"detail": "UptimeRobot:运行正常",
- "lastCheck": "2026-10-14T08:43:00.000Z",
+ "lastCheck": "2026-10-14T08:58:00.000Z",
"history": [
{
- "t": "2026-10-13T09:55:00.000Z",
+ "t": "2026-10-13T09:35:00.000Z",
"ok": true,
- "ms": 602
+ "ms": 605
},
{
- "t": "2026-10-13T10:35:00.000Z",
- "ok": true,
- "ms": 519
- },
- {
- "t": "2026-10-13T11:15:00.000Z",
- "ok": true,
- "ms": 325
- },
- {
- "t": "2026-10-13T11:55:00.000Z",
- "ok": true,
- "ms": 933
- },
- {
- "t": "2026-10-13T12:35:00.000Z",
- "ok": true,
- "ms": 424
- },
- {
- "t": "2026-10-13T13:15:00.000Z",
- "ok": true,
- "ms": 460
- },
- {
- "t": "2026-10-13T13:55:00.000Z",
- "ok": true,
- "ms": 496
- },
- {
- "t": "2026-10-13T14:35:00.000Z",
- "ok": true,
- "ms": 438
- },
- {
- "t": "2026-10-13T15:15:00.000Z",
- "ok": true,
- "ms": 459
- },
- {
- "t": "2026-10-13T15:55:00.000Z",
- "ok": true,
- "ms": 349
- },
- {
- "t": "2026-10-13T16:35:00.000Z",
- "ok": true,
- "ms": 367
- },
- {
- "t": "2026-10-13T17:15:00.000Z",
- "ok": true,
- "ms": 504
- },
- {
- "t": "2026-10-13T17:55:00.000Z",
- "ok": true,
- "ms": 286
- },
- {
- "t": "2026-10-13T18:35:00.000Z",
- "ok": true,
- "ms": 389
- },
- {
- "t": "2026-10-13T19:15:00.000Z",
- "ok": true,
- "ms": 1491
- },
- {
- "t": "2026-10-13T19:55:00.000Z",
+ "t": "2026-10-13T10:15:00.000Z",
"ok": true,
"ms": 456
},
{
- "t": "2026-10-13T20:35:00.000Z",
+ "t": "2026-10-13T10:55:00.000Z",
"ok": true,
- "ms": 433
+ "ms": 420
},
{
- "t": "2026-10-13T21:15:00.000Z",
+ "t": "2026-10-13T11:35:00.000Z",
"ok": true,
- "ms": 426
+ "ms": 878
},
{
- "t": "2026-10-13T21:55:00.000Z",
+ "t": "2026-10-13T12:15:00.000Z",
"ok": true,
- "ms": 249
+ "ms": 530
},
{
- "t": "2026-10-13T22:35:00.000Z",
+ "t": "2026-10-13T12:55:00.000Z",
"ok": true,
- "ms": 359
+ "ms": 517
},
{
- "t": "2026-10-13T23:15:00.000Z",
+ "t": "2026-10-13T13:35:00.000Z",
"ok": true,
- "ms": 311
+ "ms": 491
},
{
- "t": "2026-10-13T23:55:00.000Z",
+ "t": "2026-10-13T14:20:00.000Z",
"ok": true,
- "ms": 222
+ "ms": 429
},
{
- "t": "2026-10-14T00:35:00.000Z",
+ "t": "2026-10-13T15:00:00.000Z",
"ok": true,
- "ms": 332
+ "ms": 447
},
{
- "t": "2026-10-14T01:15:00.000Z",
+ "t": "2026-10-13T15:40:00.000Z",
"ok": true,
- "ms": 328
+ "ms": 404
},
{
- "t": "2026-10-14T01:55:00.000Z",
+ "t": "2026-10-13T16:20:00.000Z",
"ok": true,
- "ms": 300
+ "ms": 312
},
{
- "t": "2026-10-14T02:35:00.000Z",
+ "t": "2026-10-13T17:00:00.000Z",
"ok": true,
- "ms": 405
+ "ms": 400
},
{
- "t": "2026-10-14T03:15:00.000Z",
+ "t": "2026-10-13T17:40:00.000Z",
"ok": true,
- "ms": 258
+ "ms": 431
},
{
- "t": "2026-10-14T03:55:00.000Z",
+ "t": "2026-10-13T18:20:00.000Z",
"ok": true,
- "ms": 274
+ "ms": 632
},
{
- "t": "2026-10-14T04:35:00.000Z",
+ "t": "2026-10-13T19:00:00.000Z",
+ "ok": true,
+ "ms": 372
+ },
+ {
+ "t": "2026-10-13T19:45:00.000Z",
+ "ok": true,
+ "ms": 411
+ },
+ {
+ "t": "2026-10-13T20:25:00.000Z",
+ "ok": true,
+ "ms": 465
+ },
+ {
+ "t": "2026-10-13T21:05:00.000Z",
+ "ok": true,
+ "ms": 392
+ },
+ {
+ "t": "2026-10-13T21:45:00.000Z",
+ "ok": true,
+ "ms": 284
+ },
+ {
+ "t": "2026-10-13T22:25:00.000Z",
+ "ok": true,
+ "ms": 329
+ },
+ {
+ "t": "2026-10-13T23:05:00.000Z",
+ "ok": true,
+ "ms": 360
+ },
+ {
+ "t": "2026-10-13T23:45:00.000Z",
+ "ok": true,
+ "ms": 221
+ },
+ {
+ "t": "2026-10-14T00:25:00.000Z",
"ok": true,
"ms": 265
},
{
- "t": "2026-10-14T05:15:00.000Z",
+ "t": "2026-10-14T01:05:00.000Z",
"ok": true,
- "ms": 373
+ "ms": 287
},
{
- "t": "2026-10-14T06:00:00.000Z",
+ "t": "2026-10-14T01:45:00.000Z",
"ok": true,
- "ms": 675
+ "ms": 328
},
{
- "t": "2026-10-14T06:40:00.000Z",
+ "t": "2026-10-14T02:25:00.000Z",
"ok": true,
- "ms": 525
+ "ms": 376
},
{
- "t": "2026-10-14T07:20:00.000Z",
+ "t": "2026-10-14T03:05:00.000Z",
"ok": true,
- "ms": 435
+ "ms": 253
},
{
- "t": "2026-10-14T08:07:00.000Z",
+ "t": "2026-10-14T03:45:00.000Z",
"ok": true,
- "ms": 444
+ "ms": 293
},
{
- "t": "2026-10-14T08:43:00.000Z",
+ "t": "2026-10-14T04:25:00.000Z",
"ok": true,
- "ms": 541
+ "ms": 319
+ },
+ {
+ "t": "2026-10-14T05:05:00.000Z",
+ "ok": true,
+ "ms": 329
+ },
+ {
+ "t": "2026-10-14T05:45:00.000Z",
+ "ok": true,
+ "ms": 634
+ },
+ {
+ "t": "2026-10-14T06:25:00.000Z",
+ "ok": true,
+ "ms": 526
+ },
+ {
+ "t": "2026-10-14T07:05:00.000Z",
+ "ok": true,
+ "ms": 436
+ },
+ {
+ "t": "2026-10-14T07:42:00.000Z",
+ "ok": true,
+ "ms": 395
+ },
+ {
+ "t": "2026-10-14T08:22:00.000Z",
+ "ok": true,
+ "ms": 443
+ },
+ {
+ "t": "2026-10-14T08:58:00.000Z",
+ "ok": true,
+ "ms": 375
}
],
"daily": {
"2026-10-14": {
- "total": 7,
- "up": 7,
- "latSum": 3014,
- "latCount": 7,
- "latMax": 541
+ "total": 3,
+ "up": 3,
+ "latSum": 1245,
+ "latCount": 3,
+ "latMax": 450
}
},
"meta": {
@@ -1158,23 +1997,28 @@
"90": 0
},
"lat": {
- "avg": 431,
- "max": 541,
+ "avg": 415,
+ "max": 450,
"days": [
{
"key": "2026-10-14",
- "avg": 431
+ "avg": 415
}
]
}
},
"ur-796219015": {
"status": "down",
- "latency": 185,
+ "latency": 191,
"code": 403,
"detail": "UptimeRobot:403 Forbidden",
"lastCheck": "2026-05-07T07:54:09.000Z",
"history": [
+ {
+ "t": "2026-10-14T08:58:00.000Z",
+ "ok": true,
+ "ms": 191
+ },
{
"t": "2026-05-07T07:54:09.000Z",
"ok": false,
@@ -1183,7 +2027,7 @@
],
"daily": {
"2026-10-14": {
- "total": 7,
+ "total": 3,
"up": 0
}
},
@@ -1211,3 +2055,4 @@
}
}
}
+
\ No newline at end of file