diff --git a/docs/screenshot-desktop.png b/docs/screenshot-desktop.png
index 6db996e..44e273d 100644
Binary files a/docs/screenshot-desktop.png and b/docs/screenshot-desktop.png differ
diff --git a/docs/screenshot-mobile.png b/docs/screenshot-mobile.png
index 00d4d47..341ed5b 100644
Binary files a/docs/screenshot-mobile.png and b/docs/screenshot-mobile.png differ
diff --git a/docs/screenshot-view-cards.png b/docs/screenshot-view-cards.png
index 9c2617c..df3354d 100644
Binary files a/docs/screenshot-view-cards.png and b/docs/screenshot-view-cards.png differ
diff --git a/docs/screenshot-view-table.png b/docs/screenshot-view-table.png
index 23e2fbc..555c9a4 100644
Binary files a/docs/screenshot-view-table.png and b/docs/screenshot-view-table.png differ
diff --git a/prober/node/index.js b/prober/node/index.js
index 14e39a2..70d5b35 100644
--- a/prober/node/index.js
+++ b/prober/node/index.js
@@ -77,6 +77,7 @@ const MIME = {
'.png': 'image/png',
'.jpg': 'image/jpeg',
'.ico': 'image/x-icon',
+ '.webp': 'image/webp',
'.woff2': 'font/woff2',
};
diff --git a/public/assets/app.js b/public/assets/app.js
index 3c88835..039eeaf 100644
--- a/public/assets/app.js
+++ b/public/assets/app.js
@@ -283,14 +283,25 @@ function renderEvents() {
if (!box) return;
const list = $('events-list');
const empty = $('events-empty');
- const all = state.status?.events ?? [];
+ const count = $('events-count');
+ // 事件随分组页签联动:只展示当前页签下目标的事件。
+ // 用「当前可见目标 id 集合」反查,而不是事件自身的 group 字段 ——
+ // 外部数据源(UptimeRobot)的事件在快照里没有 group,按名字反查才准。
+ const visibleIds = new Set(visibleGroups().flatMap(([, list]) => list.map((m) => m.id)));
+ const all = (state.status?.events ?? []).filter((e) => visibleIds.has(e.id));
box.hidden = all.length === 0;
empty.hidden = all.length > 0;
- if (!all.length) return;
+ if (!all.length) {
+ // 必须清空列表:仅隐藏区块的话旧行仍留在 DOM 里(换个分组再切回来会看到过期内容)
+ list.innerHTML = '';
+ if (count) count.textContent = '';
+ const more = $('events-more');
+ if (more) more.hidden = true;
+ return;
+ }
const expanded = state.eventsExpanded === true;
const shown = expanded ? all : all.slice(0, EVENTS_COLLAPSED);
- const count = $('events-count');
if (count) count.textContent = all.length > shown.length ? `最近 ${shown.length} / ${all.length} 条` : `最近 ${all.length} 条`;
const label = { down: '故障', up: '恢复', tls: '证书', maintenance: '维护' };
@@ -488,6 +499,8 @@ function setFilter(g) {
state.filter = g;
renderTabs();
renderView();
+ // 事件按当前页签过滤,切页签后必须一并重渲染
+ renderEvents();
}
function visibleGroups() {
@@ -943,6 +956,28 @@ function applyArtwork() {
document.body.appendChild(img);
}
+// favicon 格式协商:同尺寸的 WebP 体积更小,浏览器按 type 自动挑第一个认识的;
+// 不认识 WebP 的旧浏览器会跳到 PNG,两者并存保证任何环境都有图标。
+function setFavicon(shiroko) {
+ const head = document.head;
+ if (!head) return;
+ for (const el of head.querySelectorAll('link[data-favicon]')) el.remove();
+ const links = shiroko
+ ? [
+ { href: 'assets/favicon-shiroko.webp', type: 'image/webp' },
+ { href: 'assets/favicon-shiroko.png', type: 'image/png' },
+ ]
+ : [{ href: 'assets/favicon.svg', type: 'image/svg+xml' }];
+ for (const l of links) {
+ const el = document.createElement('link');
+ el.rel = 'icon';
+ el.href = l.href;
+ el.type = l.type;
+ el.dataset.favicon = '1';
+ head.appendChild(el);
+ }
+}
+
function applyTheme(theme, { persist = true } = {}) {
state.theme = THEMES[theme] ? theme : 'default';
if (state.theme === 'default') delete document.body.dataset.theme;
@@ -955,8 +990,7 @@ function applyTheme(theme, { persist = true } = {}) {
localStorage.setItem('shiroko.theme', state.theme);
} catch { /* 忽略 */ }
}
- const icon = document.querySelector('link[rel="icon"]');
- if (icon) icon.setAttribute('href', state.theme === 'shiroko' ? 'assets/favicon-shiroko.png' : 'assets/favicon.svg');
+ setFavicon(state.theme === 'shiroko');
applyArtwork();
const btn = $('theme-btn');
if (btn) {
diff --git a/public/assets/favicon-shiroko.webp b/public/assets/favicon-shiroko.webp
new file mode 100644
index 0000000..f277639
Binary files /dev/null and b/public/assets/favicon-shiroko.webp differ
diff --git a/public/index.html b/public/index.html
index b166006..57a7191 100644
--- a/public/index.html
+++ b/public/index.html
@@ -5,7 +5,7 @@
Shiroko Monitor
-
+
diff --git a/public/status.json b/public/status.json
index 62b1537..155b8b3 100644
--- a/public/status.json
+++ b/public/status.json
@@ -1,8 +1,8 @@
{
"prober": "shiroko-monitor-node/0.12.2",
"demo": false,
- "generatedAt": "2026-10-14T09:01:44.780Z",
- "dataUpdatedAt": "2026-10-14T09:01:34.289Z",
+ "generatedAt": "2026-10-14T09:34:40.966Z",
+ "dataUpdatedAt": "2026-10-14T09:33:59.150Z",
"updateIntervalSec": 60,
"dataFilter": "both",
"probeScope": "all",
@@ -11,12 +11,12 @@
"up": 10,
"down": 4,
"pending": 0,
- "avgLatency": 1046,
- "avgUptime90": 63.9,
+ "avgLatency": 992,
+ "avgUptime90": 61.7,
"memory": {
- "rssMB": 73.3,
- "heapUsedMB": 13,
- "heapTotalMB": 14.2
+ "rssMB": 80.5,
+ "heapUsedMB": 16.3,
+ "heapTotalMB": 18.7
}
},
"sources": {
@@ -24,10 +24,10 @@
"enabled": true,
"ok": true,
"error": null,
- "lastSyncAt": "2026-10-14T08:59:05.177Z",
+ "lastSyncAt": "2026-10-14T09:32:59.982Z",
"count": 6,
"syncing": false,
- "lastSyncMs": 1791968343771
+ "lastSyncMs": 1791970378633
}
},
"notify": {
@@ -36,13 +36,29 @@
"quietHours": null,
"failureThreshold": 2,
"lastResult": {
- "at": "2026-10-14T02:19:42.390Z",
+ "at": "2026-10-14T09:16:31.742Z",
"suppressed": false,
"skipped": "notify-disabled",
"results": []
}
},
"events": [
+ {
+ "t": "2026-10-14T09:16:31.733Z",
+ "id": "httpbin-500",
+ "name": "HTTPBin 500(演示 expectStatus)",
+ "type": "up",
+ "detail": "已恢复",
+ "maintenance": false
+ },
+ {
+ "t": "2026-10-14T09:14:17.293Z",
+ "id": "httpbin-500",
+ "name": "HTTPBin 500(演示 expectStatus)",
+ "type": "down",
+ "detail": "请求超时(>10s)",
+ "maintenance": false
+ },
{
"t": "2026-10-14T02:11:47.171Z",
"id": "ur-796219015",
@@ -186,277 +202,566 @@
"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": {
"example-com": {
"status": "up",
- "latency": 675,
+ "latency": 828,
"code": 200,
"detail": "HTTP 200",
- "lastCheck": "2026-10-14T09:01:24.931Z",
+ "lastCheck": "2026-10-14T09:33:49.963Z",
"history": [
{
- "t": "2026-10-14T08:49:07.628Z",
+ "t": "2026-10-14T09:03:26.495Z",
"ok": true,
- "ms": 2202
+ "ms": 1249
},
{
- "t": "2026-10-14T08:50:06.655Z",
+ "t": "2026-10-14T09:04:27.241Z",
"ok": true,
- "ms": 723
+ "ms": 1456
},
{
- "t": "2026-10-14T08:51:07.649Z",
+ "t": "2026-10-14T09:05:26.958Z",
"ok": true,
- "ms": 1160
+ "ms": 668
},
{
- "t": "2026-10-14T08:52:08.231Z",
+ "t": "2026-10-14T09:06:07.513Z",
"ok": true,
- "ms": 1149
+ "ms": 698
},
{
- "t": "2026-10-14T08:53:08.390Z",
+ "t": "2026-10-14T09:07:08.288Z",
"ok": true,
- "ms": 692
+ "ms": 987
},
{
- "t": "2026-10-14T08:54:09.477Z",
+ "t": "2026-10-14T09:08:08.038Z",
"ok": true,
- "ms": 1240
+ "ms": 1236
},
{
- "t": "2026-10-14T08:55:09.329Z",
+ "t": "2026-10-14T09:09:08.561Z",
"ok": true,
- "ms": 677
+ "ms": 1198
},
{
- "t": "2026-10-14T08:55:21.697Z",
+ "t": "2026-10-14T09:10:09.137Z",
"ok": true,
- "ms": 973
+ "ms": 1207
},
{
- "t": "2026-10-14T08:56:21.891Z",
+ "t": "2026-10-14T09:11:09.397Z",
"ok": true,
- "ms": 684
+ "ms": 924
},
{
- "t": "2026-10-14T08:57:22.967Z",
+ "t": "2026-10-14T09:12:09.887Z",
"ok": true,
- "ms": 1227
+ "ms": 665
},
{
- "t": "2026-10-14T08:58:23.604Z",
+ "t": "2026-10-14T09:13:12.078Z",
"ok": true,
- "ms": 1177
+ "ms": 2292
},
{
- "t": "2026-10-14T08:59:24.157Z",
+ "t": "2026-10-14T09:14:11.528Z",
"ok": true,
- "ms": 1232
+ "ms": 1219
},
{
- "t": "2026-10-14T09:00:25.063Z",
+ "t": "2026-10-14T09:15:12.578Z",
"ok": true,
- "ms": 1314
+ "ms": 1886
},
{
- "t": "2026-10-14T09:01:24.931Z",
+ "t": "2026-10-14T09:16:28.525Z",
"ok": true,
- "ms": 675
+ "ms": 1423
+ },
+ {
+ "t": "2026-10-14T09:17:28.807Z",
+ "ok": true,
+ "ms": 1229
+ },
+ {
+ "t": "2026-10-14T09:18:29.297Z",
+ "ok": true,
+ "ms": 1220
+ },
+ {
+ "t": "2026-10-14T09:19:29.790Z",
+ "ok": true,
+ "ms": 1168
+ },
+ {
+ "t": "2026-10-14T09:20:31.031Z",
+ "ok": true,
+ "ms": 1857
+ },
+ {
+ "t": "2026-10-14T09:20:33.443Z",
+ "ok": true,
+ "ms": 211
+ },
+ {
+ "t": "2026-10-14T09:20:35.465Z",
+ "ok": true,
+ "ms": 220
+ },
+ {
+ "t": "2026-10-14T09:20:36.474Z",
+ "ok": true,
+ "ms": 216
+ },
+ {
+ "t": "2026-10-14T09:20:37.481Z",
+ "ok": true,
+ "ms": 220
+ },
+ {
+ "t": "2026-10-14T09:20:38.483Z",
+ "ok": true,
+ "ms": 215
+ },
+ {
+ "t": "2026-10-14T09:21:40.058Z",
+ "ok": true,
+ "ms": 1189
+ },
+ {
+ "t": "2026-10-14T09:22:35.955Z",
+ "ok": true,
+ "ms": 694
+ },
+ {
+ "t": "2026-10-14T09:22:37.518Z",
+ "ok": true,
+ "ms": 229
+ },
+ {
+ "t": "2026-10-14T09:22:38.524Z",
+ "ok": true,
+ "ms": 223
+ },
+ {
+ "t": "2026-10-14T09:22:39.531Z",
+ "ok": true,
+ "ms": 222
+ },
+ {
+ "t": "2026-10-14T09:22:40.812Z",
+ "ok": true,
+ "ms": 483
+ },
+ {
+ "t": "2026-10-14T09:23:41.792Z",
+ "ok": true,
+ "ms": 696
+ },
+ {
+ "t": "2026-10-14T09:24:02.121Z",
+ "ok": true,
+ "ms": 696
+ },
+ {
+ "t": "2026-10-14T09:24:03.678Z",
+ "ok": true,
+ "ms": 231
+ },
+ {
+ "t": "2026-10-14T09:24:04.682Z",
+ "ok": true,
+ "ms": 225
+ },
+ {
+ "t": "2026-10-14T09:24:05.691Z",
+ "ok": true,
+ "ms": 235
+ },
+ {
+ "t": "2026-10-14T09:24:06.702Z",
+ "ok": true,
+ "ms": 243
+ },
+ {
+ "t": "2026-10-14T09:24:45.070Z",
+ "ok": true,
+ "ms": 2269
+ },
+ {
+ "t": "2026-10-14T09:25:44.482Z",
+ "ok": true,
+ "ms": 1221
+ },
+ {
+ "t": "2026-10-14T09:25:55.531Z",
+ "ok": true,
+ "ms": 1022
+ },
+ {
+ "t": "2026-10-14T09:26:56.724Z",
+ "ok": true,
+ "ms": 1549
+ },
+ {
+ "t": "2026-10-14T09:27:27.960Z",
+ "ok": true,
+ "ms": 969
+ },
+ {
+ "t": "2026-10-14T09:28:27.769Z",
+ "ok": true,
+ "ms": 670
+ },
+ {
+ "t": "2026-10-14T09:29:29.119Z",
+ "ok": true,
+ "ms": 1456
+ },
+ {
+ "t": "2026-10-14T09:30:07.155Z",
+ "ok": true,
+ "ms": 1204
+ },
+ {
+ "t": "2026-10-14T09:31:07.162Z",
+ "ok": true,
+ "ms": 673
+ },
+ {
+ "t": "2026-10-14T09:31:18.540Z",
+ "ok": true,
+ "ms": 715
+ },
+ {
+ "t": "2026-10-14T09:32:19.122Z",
+ "ok": true,
+ "ms": 851
+ },
+ {
+ "t": "2026-10-14T09:32:49.586Z",
+ "ok": true,
+ "ms": 976
+ },
+ {
+ "t": "2026-10-14T09:33:49.963Z",
+ "ok": true,
+ "ms": 828
}
],
"daily": {
"2026-10-14": {
- "total": 14,
- "up": 14,
- "latSum": 15125,
- "latCount": 14,
- "latMax": 2202
+ "total": 63,
+ "up": 63,
+ "latSum": 59726,
+ "latCount": 63,
+ "latMax": 2292
}
},
"tls": {
"daysLeft": 72,
"validTo": "2026-12-25T22:56:35.000Z",
"issuer": "SSL Corporation",
- "checkedAt": "2026-10-14T08:49:07.609Z",
+ "checkedAt": "2026-10-14T09:16:29.144Z",
"error": null
},
"lat": {
- "avg": 1080,
- "max": 2202,
+ "avg": 948,
+ "max": 2292,
"days": [
{
"key": "2026-10-14",
- "avg": 1080
+ "avg": 948
}
]
}
},
"baidu": {
"status": "up",
- "latency": 89,
+ "latency": 96,
"code": 200,
"detail": "HTTP 200",
- "lastCheck": "2026-10-14T09:01:24.351Z",
+ "lastCheck": "2026-10-14T09:33:49.235Z",
"history": [
{
- "t": "2026-10-14T08:49:06.041Z",
+ "t": "2026-10-14T09:03:25.858Z",
"ok": true,
- "ms": 612
+ "ms": 610
},
{
- "t": "2026-10-14T08:50:06.555Z",
+ "t": "2026-10-14T09:04:26.408Z",
"ok": true,
- "ms": 619
+ "ms": 618
},
{
- "t": "2026-10-14T08:51:06.568Z",
+ "t": "2026-10-14T09:05:26.873Z",
"ok": true,
- "ms": 78
+ "ms": 577
},
{
- "t": "2026-10-14T08:52:07.162Z",
+ "t": "2026-10-14T09:06:06.908Z",
"ok": true,
- "ms": 79
+ "ms": 88
},
{
- "t": "2026-10-14T08:53:08.337Z",
+ "t": "2026-10-14T09:07:07.409Z",
+ "ok": true,
+ "ms": 105
+ },
+ {
+ "t": "2026-10-14T09:08:07.434Z",
+ "ok": true,
+ "ms": 630
+ },
+ {
+ "t": "2026-10-14T09:09:07.962Z",
+ "ok": true,
+ "ms": 596
+ },
+ {
+ "t": "2026-10-14T09:10:08.578Z",
+ "ok": true,
+ "ms": 645
+ },
+ {
+ "t": "2026-10-14T09:11:08.594Z",
+ "ok": true,
+ "ms": 116
+ },
+ {
+ "t": "2026-10-14T09:12:09.819Z",
+ "ok": true,
+ "ms": 592
+ },
+ {
+ "t": "2026-10-14T09:13:10.372Z",
+ "ok": true,
+ "ms": 584
+ },
+ {
+ "t": "2026-10-14T09:14:10.917Z",
+ "ok": true,
+ "ms": 606
+ },
+ {
+ "t": "2026-10-14T09:15:11.300Z",
+ "ok": true,
+ "ms": 603
+ },
+ {
+ "t": "2026-10-14T09:16:27.751Z",
+ "ok": true,
+ "ms": 644
+ },
+ {
+ "t": "2026-10-14T09:17:28.217Z",
"ok": true,
"ms": 635
},
{
- "t": "2026-10-14T08:54:08.858Z",
+ "t": "2026-10-14T09:18:28.669Z",
+ "ok": true,
+ "ms": 590
+ },
+ {
+ "t": "2026-10-14T09:19:29.233Z",
+ "ok": true,
+ "ms": 608
+ },
+ {
+ "t": "2026-10-14T09:20:29.285Z",
+ "ok": true,
+ "ms": 106
+ },
+ {
+ "t": "2026-10-14T09:20:33.274Z",
+ "ok": true,
+ "ms": 41
+ },
+ {
+ "t": "2026-10-14T09:20:35.289Z",
+ "ok": true,
+ "ms": 42
+ },
+ {
+ "t": "2026-10-14T09:20:36.291Z",
+ "ok": true,
+ "ms": 31
+ },
+ {
+ "t": "2026-10-14T09:20:37.286Z",
+ "ok": true,
+ "ms": 24
+ },
+ {
+ "t": "2026-10-14T09:20:38.302Z",
+ "ok": true,
+ "ms": 32
+ },
+ {
+ "t": "2026-10-14T09:21:38.953Z",
+ "ok": true,
+ "ms": 82
+ },
+ {
+ "t": "2026-10-14T09:22:35.373Z",
+ "ok": true,
+ "ms": 108
+ },
+ {
+ "t": "2026-10-14T09:22:37.315Z",
+ "ok": true,
+ "ms": 25
+ },
+ {
+ "t": "2026-10-14T09:22:38.326Z",
+ "ok": true,
+ "ms": 24
+ },
+ {
+ "t": "2026-10-14T09:22:39.344Z",
+ "ok": true,
+ "ms": 34
+ },
+ {
+ "t": "2026-10-14T09:22:40.361Z",
+ "ok": true,
+ "ms": 31
+ },
+ {
+ "t": "2026-10-14T09:23:41.696Z",
+ "ok": true,
+ "ms": 595
+ },
+ {
+ "t": "2026-10-14T09:24:02.047Z",
"ok": true,
"ms": 619
},
{
- "t": "2026-10-14T08:55:09.251Z",
+ "t": "2026-10-14T09:24:03.507Z",
"ok": true,
- "ms": 598
+ "ms": 57
},
{
- "t": "2026-10-14T08:55:20.812Z",
+ "t": "2026-10-14T09:24:04.488Z",
"ok": true,
- "ms": 85
+ "ms": 30
},
{
- "t": "2026-10-14T08:56:21.914Z",
+ "t": "2026-10-14T09:24:05.487Z",
"ok": true,
- "ms": 705
+ "ms": 30
},
{
- "t": "2026-10-14T08:57:21.827Z",
+ "t": "2026-10-14T09:24:06.512Z",
"ok": true,
- "ms": 84
+ "ms": 51
},
{
- "t": "2026-10-14T08:58:23.030Z",
+ "t": "2026-10-14T09:24:43.403Z",
"ok": true,
- "ms": 600
+ "ms": 596
},
{
- "t": "2026-10-14T08:59:23.525Z",
+ "t": "2026-10-14T09:25:43.336Z",
"ok": true,
- "ms": 597
+ "ms": 71
},
{
- "t": "2026-10-14T09:00:23.924Z",
+ "t": "2026-10-14T09:25:54.594Z",
"ok": true,
- "ms": 165
+ "ms": 83
},
{
- "t": "2026-10-14T09:01:24.351Z",
+ "t": "2026-10-14T09:26:55.350Z",
"ok": true,
- "ms": 89
+ "ms": 172
+ },
+ {
+ "t": "2026-10-14T09:27:27.278Z",
+ "ok": true,
+ "ms": 285
+ },
+ {
+ "t": "2026-10-14T09:28:27.694Z",
+ "ok": true,
+ "ms": 591
+ },
+ {
+ "t": "2026-10-14T09:29:28.512Z",
+ "ok": true,
+ "ms": 847
+ },
+ {
+ "t": "2026-10-14T09:30:06.570Z",
+ "ok": true,
+ "ms": 618
+ },
+ {
+ "t": "2026-10-14T09:31:06.584Z",
+ "ok": true,
+ "ms": 92
+ },
+ {
+ "t": "2026-10-14T09:31:17.909Z",
+ "ok": true,
+ "ms": 82
+ },
+ {
+ "t": "2026-10-14T09:32:19.260Z",
+ "ok": true,
+ "ms": 987
+ },
+ {
+ "t": "2026-10-14T09:32:48.737Z",
+ "ok": true,
+ "ms": 125
+ },
+ {
+ "t": "2026-10-14T09:33:49.235Z",
+ "ok": true,
+ "ms": 96
}
],
"daily": {
"2026-10-14": {
- "total": 14,
- "up": 14,
- "latSum": 5565,
- "latCount": 14,
- "latMax": 705
+ "total": 63,
+ "up": 63,
+ "latSum": 21094,
+ "latCount": 63,
+ "latMax": 987
}
},
"tls": {
"daysLeft": 101,
"validTo": "2027-01-24T02:32:55.000Z",
"issuer": "GlobalSign nv-sa",
- "checkedAt": "2026-10-14T08:49:07.678Z",
+ "checkedAt": "2026-10-14T09:16:29.214Z",
"error": null
},
"lat": {
- "avg": 398,
- "max": 705,
+ "avg": 335,
+ "max": 987,
"days": [
{
"key": "2026-10-14",
- "avg": 398
+ "avg": 335
}
]
}
},
"cloudflare-site": {
"status": "up",
- "latency": 1466,
+ "latency": 679,
"code": 200,
"detail": "HTTP 200",
- "lastCheck": "2026-10-14T09:01:25.732Z",
+ "lastCheck": "2026-10-14T09:33:49.823Z",
"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,
@@ -491,14 +796,219 @@
"t": "2026-10-14T09:01:25.732Z",
"ok": true,
"ms": 1466
+ },
+ {
+ "t": "2026-10-14T09:02:25.458Z",
+ "ok": true,
+ "ms": 667
+ },
+ {
+ "t": "2026-10-14T09:03:26.666Z",
+ "ok": true,
+ "ms": 1416
+ },
+ {
+ "t": "2026-10-14T09:04:27.481Z",
+ "ok": true,
+ "ms": 1688
+ },
+ {
+ "t": "2026-10-14T09:05:27.469Z",
+ "ok": true,
+ "ms": 1171
+ },
+ {
+ "t": "2026-10-14T09:06:07.521Z",
+ "ok": true,
+ "ms": 698
+ },
+ {
+ "t": "2026-10-14T09:07:08.194Z",
+ "ok": true,
+ "ms": 887
+ },
+ {
+ "t": "2026-10-14T09:08:08.042Z",
+ "ok": true,
+ "ms": 1235
+ },
+ {
+ "t": "2026-10-14T09:09:09.085Z",
+ "ok": true,
+ "ms": 1716
+ },
+ {
+ "t": "2026-10-14T09:10:09.905Z",
+ "ok": true,
+ "ms": 1963
+ },
+ {
+ "t": "2026-10-14T09:11:09.198Z",
+ "ok": true,
+ "ms": 717
+ },
+ {
+ "t": "2026-10-14T09:12:10.029Z",
+ "ok": true,
+ "ms": 793
+ },
+ {
+ "t": "2026-10-14T09:13:10.975Z",
+ "ok": true,
+ "ms": 1185
+ },
+ {
+ "t": "2026-10-14T09:14:12.052Z",
+ "ok": true,
+ "ms": 1738
+ },
+ {
+ "t": "2026-10-14T09:15:12.388Z",
+ "ok": true,
+ "ms": 1684
+ },
+ {
+ "t": "2026-10-14T09:16:28.852Z",
+ "ok": true,
+ "ms": 1743
+ },
+ {
+ "t": "2026-10-14T09:17:29.339Z",
+ "ok": false,
+ "ms": 1752
+ },
+ {
+ "t": "2026-10-14T09:18:29.274Z",
+ "ok": true,
+ "ms": 1193
+ },
+ {
+ "t": "2026-10-14T09:19:30.341Z",
+ "ok": true,
+ "ms": 1710
+ },
+ {
+ "t": "2026-10-14T09:20:30.717Z",
+ "ok": true,
+ "ms": 1536
+ },
+ {
+ "t": "2026-10-14T09:20:33.942Z",
+ "ok": true,
+ "ms": 708
+ },
+ {
+ "t": "2026-10-14T09:20:39.126Z",
+ "ok": true,
+ "ms": 855
+ },
+ {
+ "t": "2026-10-14T09:21:40.070Z",
+ "ok": true,
+ "ms": 1196
+ },
+ {
+ "t": "2026-10-14T09:22:39.978Z",
+ "ok": true,
+ "ms": 666
+ },
+ {
+ "t": "2026-10-14T09:22:41.241Z",
+ "ok": true,
+ "ms": 910
+ },
+ {
+ "t": "2026-10-14T09:23:41.804Z",
+ "ok": true,
+ "ms": 699
+ },
+ {
+ "t": "2026-10-14T09:24:02.131Z",
+ "ok": true,
+ "ms": 700
+ },
+ {
+ "t": "2026-10-14T09:24:06.154Z",
+ "ok": true,
+ "ms": 696
+ },
+ {
+ "t": "2026-10-14T09:24:07.811Z",
+ "ok": true,
+ "ms": 1349
+ },
+ {
+ "t": "2026-10-14T09:24:44.009Z",
+ "ok": true,
+ "ms": 1197
+ },
+ {
+ "t": "2026-10-14T09:25:44.470Z",
+ "ok": true,
+ "ms": 1203
+ },
+ {
+ "t": "2026-10-14T09:25:54.811Z",
+ "ok": true,
+ "ms": 298
+ },
+ {
+ "t": "2026-10-14T09:26:56.641Z",
+ "ok": true,
+ "ms": 1461
+ },
+ {
+ "t": "2026-10-14T09:27:28.445Z",
+ "ok": true,
+ "ms": 1448
+ },
+ {
+ "t": "2026-10-14T09:28:28.288Z",
+ "ok": true,
+ "ms": 1183
+ },
+ {
+ "t": "2026-10-14T09:29:29.314Z",
+ "ok": true,
+ "ms": 1646
+ },
+ {
+ "t": "2026-10-14T09:30:07.136Z",
+ "ok": true,
+ "ms": 1181
+ },
+ {
+ "t": "2026-10-14T09:31:07.701Z",
+ "ok": true,
+ "ms": 1207
+ },
+ {
+ "t": "2026-10-14T09:31:18.734Z",
+ "ok": true,
+ "ms": 905
+ },
+ {
+ "t": "2026-10-14T09:32:19.892Z",
+ "ok": true,
+ "ms": 1615
+ },
+ {
+ "t": "2026-10-14T09:32:49.407Z",
+ "ok": true,
+ "ms": 793
+ },
+ {
+ "t": "2026-10-14T09:33:49.823Z",
+ "ok": true,
+ "ms": 679
}
],
"daily": {
"2026-10-14": {
- "total": 14,
- "up": 14,
- "latSum": 17919,
- "latCount": 14,
+ "total": 63,
+ "up": 62,
+ "latSum": 71535,
+ "latCount": 62,
"latMax": 2030
}
},
@@ -506,26 +1016,26 @@
"daysLeft": 88,
"validTo": "2027-01-10T21:43:36.000Z",
"issuer": "Google Trust Services",
- "checkedAt": "2026-10-14T08:49:08.311Z",
+ "checkedAt": "2026-10-14T09:16:29.801Z",
"error": null
},
"lat": {
- "avg": 1280,
+ "avg": 1154,
"max": 2030,
"days": [
{
"key": "2026-10-14",
- "avg": 1280
+ "avg": 1154
}
]
}
},
"github-api": {
"status": "up",
- "latency": 1279,
+ "latency": 2095,
"code": 200,
"detail": "HTTP 200",
- "lastCheck": "2026-10-14T09:00:23.014Z",
+ "lastCheck": "2026-10-14T09:30:08.053Z",
"history": [
{
"t": "2026-10-14T08:49:07.306Z",
@@ -546,41 +1056,141 @@
"t": "2026-10-14T09:00:23.014Z",
"ok": true,
"ms": 1279
+ },
+ {
+ "t": "2026-10-14T09:05:23.092Z",
+ "ok": true,
+ "ms": 848
+ },
+ {
+ "t": "2026-10-14T09:10:23.925Z",
+ "ok": true,
+ "ms": 855
+ },
+ {
+ "t": "2026-10-14T09:15:24.663Z",
+ "ok": true,
+ "ms": 867
+ },
+ {
+ "t": "2026-10-14T09:16:28.538Z",
+ "ok": true,
+ "ms": 1425
+ },
+ {
+ "t": "2026-10-14T09:20:34.155Z",
+ "ok": true,
+ "ms": 918
+ },
+ {
+ "t": "2026-10-14T09:20:35.355Z",
+ "ok": true,
+ "ms": 104
+ },
+ {
+ "t": "2026-10-14T09:20:36.665Z",
+ "ok": true,
+ "ms": 396
+ },
+ {
+ "t": "2026-10-14T09:20:37.363Z",
+ "ok": true,
+ "ms": 99
+ },
+ {
+ "t": "2026-10-14T09:20:38.374Z",
+ "ok": true,
+ "ms": 100
+ },
+ {
+ "t": "2026-10-14T09:22:37.402Z",
+ "ok": true,
+ "ms": 108
+ },
+ {
+ "t": "2026-10-14T09:22:38.415Z",
+ "ok": true,
+ "ms": 109
+ },
+ {
+ "t": "2026-10-14T09:22:39.426Z",
+ "ok": true,
+ "ms": 112
+ },
+ {
+ "t": "2026-10-14T09:22:40.448Z",
+ "ok": true,
+ "ms": 114
+ },
+ {
+ "t": "2026-10-14T09:24:03.591Z",
+ "ok": true,
+ "ms": 108
+ },
+ {
+ "t": "2026-10-14T09:24:04.573Z",
+ "ok": true,
+ "ms": 109
+ },
+ {
+ "t": "2026-10-14T09:24:05.566Z",
+ "ok": true,
+ "ms": 106
+ },
+ {
+ "t": "2026-10-14T09:24:06.582Z",
+ "ok": true,
+ "ms": 116
+ },
+ {
+ "t": "2026-10-14T09:24:44.166Z",
+ "ok": true,
+ "ms": 1347
+ },
+ {
+ "t": "2026-10-14T09:29:44.659Z",
+ "ok": true,
+ "ms": 858
+ },
+ {
+ "t": "2026-10-14T09:30:08.053Z",
+ "ok": true,
+ "ms": 2095
}
],
"daily": {
"2026-10-14": {
- "total": 4,
- "up": 4,
- "latSum": 5309,
- "latCount": 4,
- "latMax": 1869
+ "total": 26,
+ "up": 26,
+ "latSum": 19148,
+ "latCount": 26,
+ "latMax": 2095
}
},
"tls": {
"daysLeft": 44,
"validTo": "2026-11-27T23:59:59.000Z",
"issuer": "Sectigo Limited",
- "checkedAt": "2026-10-14T08:49:09.257Z",
+ "checkedAt": "2026-10-14T09:16:30.033Z",
"error": null
},
"lat": {
- "avg": 1327,
- "max": 1869,
+ "avg": 736,
+ "max": 2095,
"days": [
{
"key": "2026-10-14",
- "avg": 1327
+ "avg": 736
}
]
}
},
"httpbin-500": {
"status": "up",
- "latency": 1723,
+ "latency": 1260,
"code": 500,
"detail": "HTTP 500",
- "lastCheck": "2026-10-14T09:01:22.960Z",
+ "lastCheck": "2026-10-14T09:32:49.876Z",
"history": [
{
"t": "2026-10-14T08:49:08.114Z",
@@ -621,41 +1231,181 @@
"t": "2026-10-14T09:01:22.960Z",
"ok": true,
"ms": 1723
+ },
+ {
+ "t": "2026-10-14T09:03:23.723Z",
+ "ok": true,
+ "ms": 1498
+ },
+ {
+ "t": "2026-10-14T09:05:23.780Z",
+ "ok": true,
+ "ms": 1532
+ },
+ {
+ "t": "2026-10-14T09:06:08.869Z",
+ "ok": true,
+ "ms": 2043
+ },
+ {
+ "t": "2026-10-14T09:08:09.329Z",
+ "ok": true,
+ "ms": 2519
+ },
+ {
+ "t": "2026-10-14T09:10:08.350Z",
+ "ok": true,
+ "ms": 1421
+ },
+ {
+ "t": "2026-10-14T09:12:17.191Z",
+ "ok": false,
+ "ms": 10014
+ },
+ {
+ "t": "2026-10-14T09:14:17.293Z",
+ "ok": false,
+ "ms": 10009
+ },
+ {
+ "t": "2026-10-14T09:16:29.606Z",
+ "ok": true,
+ "ms": 2491
+ },
+ {
+ "t": "2026-10-14T09:18:30.172Z",
+ "ok": true,
+ "ms": 2087
+ },
+ {
+ "t": "2026-10-14T09:20:29.527Z",
+ "ok": true,
+ "ms": 1367
+ },
+ {
+ "t": "2026-10-14T09:20:33.796Z",
+ "ok": true,
+ "ms": 556
+ },
+ {
+ "t": "2026-10-14T09:20:35.493Z",
+ "ok": true,
+ "ms": 240
+ },
+ {
+ "t": "2026-10-14T09:20:36.499Z",
+ "ok": true,
+ "ms": 228
+ },
+ {
+ "t": "2026-10-14T09:20:37.496Z",
+ "ok": true,
+ "ms": 231
+ },
+ {
+ "t": "2026-10-14T09:20:38.734Z",
+ "ok": true,
+ "ms": 459
+ },
+ {
+ "t": "2026-10-14T09:22:38.537Z",
+ "ok": true,
+ "ms": 230
+ },
+ {
+ "t": "2026-10-14T09:22:39.551Z",
+ "ok": true,
+ "ms": 236
+ },
+ {
+ "t": "2026-10-14T09:22:40.690Z",
+ "ok": true,
+ "ms": 354
+ },
+ {
+ "t": "2026-10-14T09:24:04.850Z",
+ "ok": true,
+ "ms": 385
+ },
+ {
+ "t": "2026-10-14T09:24:05.692Z",
+ "ok": true,
+ "ms": 231
+ },
+ {
+ "t": "2026-10-14T09:24:06.704Z",
+ "ok": true,
+ "ms": 237
+ },
+ {
+ "t": "2026-10-14T09:24:44.554Z",
+ "ok": true,
+ "ms": 1731
+ },
+ {
+ "t": "2026-10-14T09:25:55.757Z",
+ "ok": true,
+ "ms": 1243
+ },
+ {
+ "t": "2026-10-14T09:27:29.375Z",
+ "ok": true,
+ "ms": 2377
+ },
+ {
+ "t": "2026-10-14T09:29:31.489Z",
+ "ok": true,
+ "ms": 3820
+ },
+ {
+ "t": "2026-10-14T09:30:08.344Z",
+ "ok": true,
+ "ms": 2383
+ },
+ {
+ "t": "2026-10-14T09:31:19.255Z",
+ "ok": true,
+ "ms": 1424
+ },
+ {
+ "t": "2026-10-14T09:32:49.876Z",
+ "ok": true,
+ "ms": 1260
}
],
"daily": {
"2026-10-14": {
- "total": 8,
- "up": 8,
- "latSum": 14311,
- "latCount": 8,
- "latMax": 2671
+ "total": 40,
+ "up": 38,
+ "latSum": 52464,
+ "latCount": 38,
+ "latMax": 3820
}
},
"tls": {
"daysLeft": 80,
"validTo": "2027-01-02T23:59:59.000Z",
"issuer": "Amazon",
- "checkedAt": "2026-10-14T08:49:10.811Z",
+ "checkedAt": "2026-10-14T09:16:30.730Z",
"error": null
},
"lat": {
- "avg": 1789,
- "max": 2671,
+ "avg": 1381,
+ "max": 3820,
"days": [
{
"key": "2026-10-14",
- "avg": 1789
+ "avg": 1381
}
]
}
},
"badssl-expired": {
"status": "down",
- "latency": 5163,
+ "latency": 1563,
"code": 0,
- "detail": "ECONNRESET",
- "lastCheck": "2026-10-14T09:01:26.404Z",
+ "detail": "CERT_HAS_EXPIRED",
+ "lastCheck": "2026-10-14T09:32:50.182Z",
"history": [
{
"t": "2026-10-14T08:49:08.317Z",
@@ -696,11 +1446,116 @@
"t": "2026-10-14T09:01:26.404Z",
"ok": false,
"ms": 5163
+ },
+ {
+ "t": "2026-10-14T09:03:23.770Z",
+ "ok": false,
+ "ms": 1541
+ },
+ {
+ "t": "2026-10-14T09:05:24.293Z",
+ "ok": false,
+ "ms": 2042
+ },
+ {
+ "t": "2026-10-14T09:06:08.360Z",
+ "ok": false,
+ "ms": 1532
+ },
+ {
+ "t": "2026-10-14T09:08:08.865Z",
+ "ok": false,
+ "ms": 2052
+ },
+ {
+ "t": "2026-10-14T09:10:14.922Z",
+ "ok": false,
+ "ms": 7988
+ },
+ {
+ "t": "2026-10-14T09:12:17.233Z",
+ "ok": false,
+ "ms": 10004
+ },
+ {
+ "t": "2026-10-14T09:14:08.777Z",
+ "ok": false,
+ "ms": 1491
+ },
+ {
+ "t": "2026-10-14T09:16:29.790Z",
+ "ok": false,
+ "ms": 2673
+ },
+ {
+ "t": "2026-10-14T09:18:31.892Z",
+ "ok": false,
+ "ms": 3805
+ },
+ {
+ "t": "2026-10-14T09:20:29.835Z",
+ "ok": false,
+ "ms": 1672
+ },
+ {
+ "t": "2026-10-14T09:20:34.272Z",
+ "ok": false,
+ "ms": 1030
+ },
+ {
+ "t": "2026-10-14T09:20:40.194Z",
+ "ok": false,
+ "ms": 1918
+ },
+ {
+ "t": "2026-10-14T09:22:41.357Z",
+ "ok": false,
+ "ms": 1020
+ },
+ {
+ "t": "2026-10-14T09:24:07.470Z",
+ "ok": false,
+ "ms": 999
+ },
+ {
+ "t": "2026-10-14T09:24:44.922Z",
+ "ok": false,
+ "ms": 2097
+ },
+ {
+ "t": "2026-10-14T09:25:59.216Z",
+ "ok": false,
+ "ms": 4699
+ },
+ {
+ "t": "2026-10-14T09:27:32.926Z",
+ "ok": false,
+ "ms": 5923
+ },
+ {
+ "t": "2026-10-14T09:29:37.675Z",
+ "ok": false,
+ "ms": 10004
+ },
+ {
+ "t": "2026-10-14T09:30:11.717Z",
+ "ok": false,
+ "ms": 5754
+ },
+ {
+ "t": "2026-10-14T09:31:19.326Z",
+ "ok": false,
+ "ms": 1493
+ },
+ {
+ "t": "2026-10-14T09:32:50.182Z",
+ "ok": false,
+ "ms": 1563
}
],
"daily": {
"2026-10-14": {
- "total": 8,
+ "total": 40,
"up": 0
}
},
@@ -708,27 +1563,17 @@
"daysLeft": -4203,
"validTo": "2015-04-12T23:59:59.000Z",
"issuer": "COMODO CA Limited",
- "checkedAt": "2026-10-14T08:49:12.607Z",
+ "checkedAt": "2026-10-14T09:16:31.732Z",
"error": null
}
},
"cloudflare-dns-tcp": {
"status": "down",
- "latency": 10015,
+ "latency": 10003,
"code": null,
"detail": "TCP 连接超时",
- "lastCheck": "2026-10-14T09:01:34.288Z",
+ "lastCheck": "2026-10-14T09:33:59.150Z",
"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,
@@ -788,32 +1633,202 @@
"t": "2026-10-14T09:01:34.288Z",
"ok": false,
"ms": 10015
+ },
+ {
+ "t": "2026-10-14T09:02:34.802Z",
+ "ok": false,
+ "ms": 10009
+ },
+ {
+ "t": "2026-10-14T09:03:35.256Z",
+ "ok": false,
+ "ms": 10002
+ },
+ {
+ "t": "2026-10-14T09:04:35.797Z",
+ "ok": false,
+ "ms": 10001
+ },
+ {
+ "t": "2026-10-14T09:05:36.306Z",
+ "ok": false,
+ "ms": 10006
+ },
+ {
+ "t": "2026-10-14T09:06:16.832Z",
+ "ok": false,
+ "ms": 10002
+ },
+ {
+ "t": "2026-10-14T09:07:17.321Z",
+ "ok": false,
+ "ms": 10011
+ },
+ {
+ "t": "2026-10-14T09:08:16.824Z",
+ "ok": false,
+ "ms": 10008
+ },
+ {
+ "t": "2026-10-14T09:09:17.383Z",
+ "ok": false,
+ "ms": 10011
+ },
+ {
+ "t": "2026-10-14T09:10:17.951Z",
+ "ok": false,
+ "ms": 9999
+ },
+ {
+ "t": "2026-10-14T09:11:18.495Z",
+ "ok": false,
+ "ms": 10011
+ },
+ {
+ "t": "2026-10-14T09:12:19.246Z",
+ "ok": false,
+ "ms": 10007
+ },
+ {
+ "t": "2026-10-14T09:13:19.805Z",
+ "ok": false,
+ "ms": 10013
+ },
+ {
+ "t": "2026-10-14T09:14:20.319Z",
+ "ok": false,
+ "ms": 10003
+ },
+ {
+ "t": "2026-10-14T09:15:20.723Z",
+ "ok": false,
+ "ms": 10008
+ },
+ {
+ "t": "2026-10-14T09:16:37.122Z",
+ "ok": false,
+ "ms": 10003
+ },
+ {
+ "t": "2026-10-14T09:17:37.598Z",
+ "ok": false,
+ "ms": 10008
+ },
+ {
+ "t": "2026-10-14T09:18:38.091Z",
+ "ok": false,
+ "ms": 10003
+ },
+ {
+ "t": "2026-10-14T09:19:38.638Z",
+ "ok": false,
+ "ms": 10001
+ },
+ {
+ "t": "2026-10-14T09:20:48.295Z",
+ "ok": false,
+ "ms": 10016
+ },
+ {
+ "t": "2026-10-14T09:21:48.882Z",
+ "ok": false,
+ "ms": 10005
+ },
+ {
+ "t": "2026-10-14T09:22:50.357Z",
+ "ok": false,
+ "ms": 10017
+ },
+ {
+ "t": "2026-10-14T09:23:51.117Z",
+ "ok": false,
+ "ms": 10007
+ },
+ {
+ "t": "2026-10-14T09:24:16.484Z",
+ "ok": false,
+ "ms": 10008
+ },
+ {
+ "t": "2026-10-14T09:24:52.834Z",
+ "ok": false,
+ "ms": 10008
+ },
+ {
+ "t": "2026-10-14T09:25:53.279Z",
+ "ok": false,
+ "ms": 10010
+ },
+ {
+ "t": "2026-10-14T09:26:04.523Z",
+ "ok": false,
+ "ms": 10005
+ },
+ {
+ "t": "2026-10-14T09:27:05.203Z",
+ "ok": false,
+ "ms": 10021
+ },
+ {
+ "t": "2026-10-14T09:27:37.012Z",
+ "ok": false,
+ "ms": 10007
+ },
+ {
+ "t": "2026-10-14T09:28:37.153Z",
+ "ok": false,
+ "ms": 10045
+ },
+ {
+ "t": "2026-10-14T09:29:37.678Z",
+ "ok": false,
+ "ms": 10005
+ },
+ {
+ "t": "2026-10-14T09:30:15.976Z",
+ "ok": false,
+ "ms": 10010
+ },
+ {
+ "t": "2026-10-14T09:31:16.504Z",
+ "ok": false,
+ "ms": 10004
+ },
+ {
+ "t": "2026-10-14T09:31:27.854Z",
+ "ok": false,
+ "ms": 10019
+ },
+ {
+ "t": "2026-10-14T09:32:28.288Z",
+ "ok": false,
+ "ms": 10009
+ },
+ {
+ "t": "2026-10-14T09:32:58.626Z",
+ "ok": false,
+ "ms": 10005
+ },
+ {
+ "t": "2026-10-14T09:33:59.150Z",
+ "ok": false,
+ "ms": 10003
}
],
"daily": {
"2026-10-14": {
- "total": 14,
+ "total": 63,
"up": 0
}
}
},
"google-dns-tcp": {
"status": "down",
- "latency": 10015,
+ "latency": 10003,
"code": null,
"detail": "TCP 连接超时",
- "lastCheck": "2026-10-14T09:01:34.289Z",
+ "lastCheck": "2026-10-14T09:33:59.150Z",
"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,
@@ -873,210 +1888,390 @@
"t": "2026-10-14T09:01:34.289Z",
"ok": false,
"ms": 10015
+ },
+ {
+ "t": "2026-10-14T09:02:34.802Z",
+ "ok": false,
+ "ms": 10009
+ },
+ {
+ "t": "2026-10-14T09:03:35.257Z",
+ "ok": false,
+ "ms": 10003
+ },
+ {
+ "t": "2026-10-14T09:04:35.798Z",
+ "ok": false,
+ "ms": 10002
+ },
+ {
+ "t": "2026-10-14T09:05:36.307Z",
+ "ok": false,
+ "ms": 10007
+ },
+ {
+ "t": "2026-10-14T09:06:16.832Z",
+ "ok": false,
+ "ms": 10002
+ },
+ {
+ "t": "2026-10-14T09:07:17.321Z",
+ "ok": false,
+ "ms": 10010
+ },
+ {
+ "t": "2026-10-14T09:08:16.824Z",
+ "ok": false,
+ "ms": 10007
+ },
+ {
+ "t": "2026-10-14T09:09:17.384Z",
+ "ok": false,
+ "ms": 10012
+ },
+ {
+ "t": "2026-10-14T09:10:17.952Z",
+ "ok": false,
+ "ms": 10000
+ },
+ {
+ "t": "2026-10-14T09:11:18.495Z",
+ "ok": false,
+ "ms": 10011
+ },
+ {
+ "t": "2026-10-14T09:12:19.247Z",
+ "ok": false,
+ "ms": 10007
+ },
+ {
+ "t": "2026-10-14T09:13:19.806Z",
+ "ok": false,
+ "ms": 10013
+ },
+ {
+ "t": "2026-10-14T09:14:20.319Z",
+ "ok": false,
+ "ms": 10002
+ },
+ {
+ "t": "2026-10-14T09:15:20.725Z",
+ "ok": false,
+ "ms": 10009
+ },
+ {
+ "t": "2026-10-14T09:16:37.123Z",
+ "ok": false,
+ "ms": 10003
+ },
+ {
+ "t": "2026-10-14T09:17:37.598Z",
+ "ok": false,
+ "ms": 10007
+ },
+ {
+ "t": "2026-10-14T09:18:38.092Z",
+ "ok": false,
+ "ms": 10002
+ },
+ {
+ "t": "2026-10-14T09:19:38.638Z",
+ "ok": false,
+ "ms": 10001
+ },
+ {
+ "t": "2026-10-14T09:20:48.296Z",
+ "ok": false,
+ "ms": 10016
+ },
+ {
+ "t": "2026-10-14T09:21:48.883Z",
+ "ok": false,
+ "ms": 10004
+ },
+ {
+ "t": "2026-10-14T09:22:50.358Z",
+ "ok": false,
+ "ms": 10017
+ },
+ {
+ "t": "2026-10-14T09:23:51.118Z",
+ "ok": false,
+ "ms": 10008
+ },
+ {
+ "t": "2026-10-14T09:24:16.484Z",
+ "ok": false,
+ "ms": 10008
+ },
+ {
+ "t": "2026-10-14T09:24:52.836Z",
+ "ok": false,
+ "ms": 10008
+ },
+ {
+ "t": "2026-10-14T09:25:53.279Z",
+ "ok": false,
+ "ms": 10010
+ },
+ {
+ "t": "2026-10-14T09:26:04.523Z",
+ "ok": false,
+ "ms": 10005
+ },
+ {
+ "t": "2026-10-14T09:27:05.203Z",
+ "ok": false,
+ "ms": 10021
+ },
+ {
+ "t": "2026-10-14T09:27:37.013Z",
+ "ok": false,
+ "ms": 10008
+ },
+ {
+ "t": "2026-10-14T09:28:37.154Z",
+ "ok": false,
+ "ms": 10046
+ },
+ {
+ "t": "2026-10-14T09:29:37.679Z",
+ "ok": false,
+ "ms": 10006
+ },
+ {
+ "t": "2026-10-14T09:30:15.976Z",
+ "ok": false,
+ "ms": 10010
+ },
+ {
+ "t": "2026-10-14T09:31:16.504Z",
+ "ok": false,
+ "ms": 10004
+ },
+ {
+ "t": "2026-10-14T09:31:27.854Z",
+ "ok": false,
+ "ms": 10019
+ },
+ {
+ "t": "2026-10-14T09:32:28.289Z",
+ "ok": false,
+ "ms": 10010
+ },
+ {
+ "t": "2026-10-14T09:32:58.627Z",
+ "ok": false,
+ "ms": 10005
+ },
+ {
+ "t": "2026-10-14T09:33:59.150Z",
+ "ok": false,
+ "ms": 10003
}
],
"daily": {
"2026-10-14": {
- "total": 14,
+ "total": 63,
"up": 0
}
}
},
"ur-792059439": {
"status": "up",
- "latency": 335,
+ "latency": 263,
"code": null,
"detail": "UptimeRobot:运行正常",
- "lastCheck": "2026-10-14T08:57:00.000Z",
+ "lastCheck": "2026-10-14T09:32:00.000Z",
"history": [
{
- "t": "2026-10-13T09:40:00.000Z",
+ "t": "2026-10-13T10:15:00.000Z",
"ok": true,
- "ms": 296
+ "ms": 307
},
{
- "t": "2026-10-13T10:20:00.000Z",
+ "t": "2026-10-13T10:55:00.000Z",
"ok": true,
- "ms": 183
+ "ms": 379
},
{
- "t": "2026-10-13T11:00:00.000Z",
+ "t": "2026-10-13T11:35:00.000Z",
"ok": true,
- "ms": 413
+ "ms": 244
},
{
- "t": "2026-10-13T11:40:00.000Z",
+ "t": "2026-10-13T12:15:00.000Z",
"ok": true,
- "ms": 232
+ "ms": 337
},
{
- "t": "2026-10-13T12:20:00.000Z",
+ "t": "2026-10-13T12:55:00.000Z",
"ok": true,
- "ms": 295
+ "ms": 392
},
{
- "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",
+ "t": "2026-10-13T13:35:00.000Z",
"ok": true,
"ms": 249
},
{
- "t": "2026-10-14T07:05:00.000Z",
+ "t": "2026-10-13T14:15:00.000Z",
"ok": true,
- "ms": 444
+ "ms": 549
},
{
- "t": "2026-10-14T07:41:00.000Z",
+ "t": "2026-10-13T14:55:00.000Z",
"ok": true,
- "ms": 652
+ "ms": 231
},
{
- "t": "2026-10-14T08:21:00.000Z",
+ "t": "2026-10-13T15:35:00.000Z",
"ok": true,
- "ms": 362
+ "ms": 219
},
{
- "t": "2026-10-14T08:57:00.000Z",
+ "t": "2026-10-13T16:15:00.000Z",
"ok": true,
- "ms": 335
+ "ms": 443
+ },
+ {
+ "t": "2026-10-13T16:55:00.000Z",
+ "ok": true,
+ "ms": 249
+ },
+ {
+ "t": "2026-10-13T17:35:00.000Z",
+ "ok": true,
+ "ms": 207
+ },
+ {
+ "t": "2026-10-13T18:15:00.000Z",
+ "ok": true,
+ "ms": 363
+ },
+ {
+ "t": "2026-10-13T18:55:00.000Z",
+ "ok": true,
+ "ms": 507
+ },
+ {
+ "t": "2026-10-13T19:35:00.000Z",
+ "ok": true,
+ "ms": 333
+ },
+ {
+ "t": "2026-10-13T20:15:00.000Z",
+ "ok": true,
+ "ms": 294
+ },
+ {
+ "t": "2026-10-13T20:55:00.000Z",
+ "ok": true,
+ "ms": 301
+ },
+ {
+ "t": "2026-10-13T21:35:00.000Z",
+ "ok": true,
+ "ms": 280
+ },
+ {
+ "t": "2026-10-13T22:15:00.000Z",
+ "ok": true,
+ "ms": 257
+ },
+ {
+ "t": "2026-10-13T22:55:00.000Z",
+ "ok": true,
+ "ms": 236
+ },
+ {
+ "t": "2026-10-13T23:35:00.000Z",
+ "ok": true,
+ "ms": 328
+ },
+ {
+ "t": "2026-10-14T00:15:00.000Z",
+ "ok": true,
+ "ms": 387
+ },
+ {
+ "t": "2026-10-14T00:55:00.000Z",
+ "ok": true,
+ "ms": 180
+ },
+ {
+ "t": "2026-10-14T01:35:00.000Z",
+ "ok": true,
+ "ms": 343
+ },
+ {
+ "t": "2026-10-14T02:15:00.000Z",
+ "ok": true,
+ "ms": 295
+ },
+ {
+ "t": "2026-10-14T02:55:00.000Z",
+ "ok": true,
+ "ms": 210
+ },
+ {
+ "t": "2026-10-14T03:35:00.000Z",
+ "ok": true,
+ "ms": 239
+ },
+ {
+ "t": "2026-10-14T04:15:00.000Z",
+ "ok": true,
+ "ms": 271
+ },
+ {
+ "t": "2026-10-14T04:55:00.000Z",
+ "ok": true,
+ "ms": 206
+ },
+ {
+ "t": "2026-10-14T05:35:00.000Z",
+ "ok": true,
+ "ms": 318
+ },
+ {
+ "t": "2026-10-14T06:15:00.000Z",
+ "ok": true,
+ "ms": 303
+ },
+ {
+ "t": "2026-10-14T06:55:00.000Z",
+ "ok": true,
+ "ms": 470
+ },
+ {
+ "t": "2026-10-14T07:35:00.000Z",
+ "ok": true,
+ "ms": 421
+ },
+ {
+ "t": "2026-10-14T08:15:00.000Z",
+ "ok": true,
+ "ms": 325
+ },
+ {
+ "t": "2026-10-14T08:52:00.000Z",
+ "ok": true,
+ "ms": 366
+ },
+ {
+ "t": "2026-10-14T09:32:00.000Z",
+ "ok": true,
+ "ms": 263
}
],
"daily": {
"2026-10-14": {
- "total": 3,
- "up": 3,
- "latSum": 1029,
- "latCount": 3,
- "latMax": 369
+ "total": 6,
+ "up": 6,
+ "latSum": 1635,
+ "latCount": 6,
+ "latMax": 295
}
},
"meta": {
@@ -1101,28 +2296,23 @@
"90": 0
},
"lat": {
- "avg": 343,
- "max": 369,
+ "avg": 273,
+ "max": 295,
"days": [
{
"key": "2026-10-14",
- "avg": 343
+ "avg": 273
}
]
}
},
"ur-795497022": {
"status": "up",
- "latency": 806,
+ "latency": 1356,
"code": null,
"detail": "UptimeRobot:运行正常",
- "lastCheck": "2026-10-14T08:54:00.000Z",
+ "lastCheck": "2026-10-14T09:31:00.000Z",
"history": [
- {
- "t": "2026-10-13T10:00:00.000Z",
- "ok": true,
- "ms": 791
- },
{
"t": "2026-10-13T10:40:00.000Z",
"ok": true,
@@ -1283,24 +2473,24 @@
"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
+ },
+ {
+ "t": "2026-10-14T09:31:00.000Z",
+ "ok": true,
+ "ms": 1356
}
],
"daily": {
"2026-10-14": {
- "total": 3,
- "up": 3,
- "latSum": 2324,
- "latCount": 3,
- "latMax": 806
+ "total": 6,
+ "up": 6,
+ "latSum": 7988,
+ "latCount": 6,
+ "latMax": 1356
}
},
"meta": {
@@ -1325,211 +2515,206 @@
"90": 5432
},
"lat": {
- "avg": 775,
- "max": 806,
+ "avg": 1331,
+ "max": 1356,
"days": [
{
"key": "2026-10-14",
- "avg": 775
+ "avg": 1331
}
]
}
},
"ur-795556828": {
"status": "up",
- "latency": 357,
+ "latency": 251,
"code": null,
"detail": "UptimeRobot:运行正常",
- "lastCheck": "2026-10-14T08:57:00.000Z",
+ "lastCheck": "2026-10-14T09:27:00.000Z",
"history": [
{
- "t": "2026-10-13T09:35:00.000Z",
- "ok": true,
- "ms": 212
- },
- {
- "t": "2026-10-13T10:15:00.000Z",
- "ok": true,
- "ms": 415
- },
- {
- "t": "2026-10-13T10:55:00.000Z",
- "ok": true,
- "ms": 221
- },
- {
- "t": "2026-10-13T11:35:00.000Z",
- "ok": true,
- "ms": 392
- },
- {
- "t": "2026-10-13T12:15:00.000Z",
- "ok": true,
- "ms": 291
- },
- {
- "t": "2026-10-13T12:55:00.000Z",
- "ok": true,
- "ms": 380
- },
- {
- "t": "2026-10-13T13:35:00.000Z",
- "ok": true,
- "ms": 303
- },
- {
- "t": "2026-10-13T14:15:00.000Z",
- "ok": true,
- "ms": 322
- },
- {
- "t": "2026-10-13T14:55:00.000Z",
- "ok": true,
- "ms": 476
- },
- {
- "t": "2026-10-13T15:35:00.000Z",
- "ok": true,
- "ms": 320
- },
- {
- "t": "2026-10-13T16:15:00.000Z",
- "ok": true,
- "ms": 318
- },
- {
- "t": "2026-10-13T16:55:00.000Z",
- "ok": true,
- "ms": 414
- },
- {
- "t": "2026-10-13T17:35:00.000Z",
+ "t": "2026-10-13T10:40:00.000Z",
"ok": true,
"ms": 384
},
{
- "t": "2026-10-13T18:15:00.000Z",
+ "t": "2026-10-13T11:20:00.000Z",
"ok": true,
- "ms": 424
+ "ms": 334
},
{
- "t": "2026-10-13T18:55:00.000Z",
+ "t": "2026-10-13T12:00:00.000Z",
"ok": true,
- "ms": 260
+ "ms": 234
},
{
- "t": "2026-10-13T19:35:00.000Z",
+ "t": "2026-10-13T12:40:00.000Z",
"ok": true,
- "ms": 293
+ "ms": 335
},
{
- "t": "2026-10-13T20:15:00.000Z",
+ "t": "2026-10-13T13:20:00.000Z",
"ok": true,
- "ms": 273
+ "ms": 379
},
{
- "t": "2026-10-13T20:55:00.000Z",
+ "t": "2026-10-13T14:00:00.000Z",
"ok": true,
- "ms": 471
+ "ms": 304
},
{
- "t": "2026-10-13T21:35:00.000Z",
- "ok": true,
- "ms": 347
- },
- {
- "t": "2026-10-13T22:15:00.000Z",
- "ok": true,
- "ms": 238
- },
- {
- "t": "2026-10-13T22:55:00.000Z",
- "ok": true,
- "ms": 233
- },
- {
- "t": "2026-10-13T23:35:00.000Z",
- "ok": true,
- "ms": 240
- },
- {
- "t": "2026-10-14T00:15:00.000Z",
- "ok": true,
- "ms": 312
- },
- {
- "t": "2026-10-14T00:55:00.000Z",
+ "t": "2026-10-13T14:40:00.000Z",
"ok": true,
"ms": 341
},
{
- "t": "2026-10-14T01:40:00.000Z",
+ "t": "2026-10-13T15:25:00.000Z",
"ok": true,
- "ms": 382
+ "ms": 417
},
{
- "t": "2026-10-14T02:20:00.000Z",
+ "t": "2026-10-13T16:05:00.000Z",
"ok": true,
- "ms": 129
+ "ms": 241
},
{
- "t": "2026-10-14T03:00:00.000Z",
+ "t": "2026-10-13T16:45:00.000Z",
"ok": true,
- "ms": 595
+ "ms": 366
},
{
- "t": "2026-10-14T03:40:00.000Z",
+ "t": "2026-10-13T17:25:00.000Z",
"ok": true,
- "ms": 465
+ "ms": 244
},
{
- "t": "2026-10-14T04:20:00.000Z",
+ "t": "2026-10-13T18:05:00.000Z",
"ok": true,
- "ms": 332
+ "ms": 378
},
{
- "t": "2026-10-14T05:00:00.000Z",
+ "t": "2026-10-13T18:45:00.000Z",
"ok": true,
- "ms": 269
+ "ms": 310
},
{
- "t": "2026-10-14T05:40:00.000Z",
+ "t": "2026-10-13T19:25:00.000Z",
"ok": true,
- "ms": 549
+ "ms": 335
},
{
- "t": "2026-10-14T06:20:00.000Z",
+ "t": "2026-10-13T20:05:00.000Z",
"ok": true,
- "ms": 177
+ "ms": 351
},
{
- "t": "2026-10-14T07:00:00.000Z",
+ "t": "2026-10-13T20:45:00.000Z",
"ok": true,
- "ms": 394
+ "ms": 523
},
{
- "t": "2026-10-14T07:36:00.000Z",
+ "t": "2026-10-13T21:25:00.000Z",
"ok": true,
- "ms": 182
+ "ms": 400
},
{
- "t": "2026-10-14T08:16:00.000Z",
+ "t": "2026-10-13T22:05:00.000Z",
"ok": true,
- "ms": 369
+ "ms": 222
},
{
- "t": "2026-10-14T08:57:00.000Z",
+ "t": "2026-10-13T22:45:00.000Z",
"ok": true,
- "ms": 357
+ "ms": 169
+ },
+ {
+ "t": "2026-10-13T23:25:00.000Z",
+ "ok": true,
+ "ms": 225
+ },
+ {
+ "t": "2026-10-14T00:05:00.000Z",
+ "ok": true,
+ "ms": 209
+ },
+ {
+ "t": "2026-10-14T00:45:00.000Z",
+ "ok": true,
+ "ms": 272
+ },
+ {
+ "t": "2026-10-14T01:25:00.000Z",
+ "ok": true,
+ "ms": 431
+ },
+ {
+ "t": "2026-10-14T02:05:00.000Z",
+ "ok": true,
+ "ms": 241
+ },
+ {
+ "t": "2026-10-14T02:45:00.000Z",
+ "ok": true,
+ "ms": 444
+ },
+ {
+ "t": "2026-10-14T03:25:00.000Z",
+ "ok": true,
+ "ms": 359
+ },
+ {
+ "t": "2026-10-14T04:05:00.000Z",
+ "ok": true,
+ "ms": 400
+ },
+ {
+ "t": "2026-10-14T04:45:00.000Z",
+ "ok": true,
+ "ms": 214
+ },
+ {
+ "t": "2026-10-14T05:25:00.000Z",
+ "ok": true,
+ "ms": 404
+ },
+ {
+ "t": "2026-10-14T06:05:00.000Z",
+ "ok": true,
+ "ms": 137
+ },
+ {
+ "t": "2026-10-14T06:50:00.000Z",
+ "ok": true,
+ "ms": 412
+ },
+ {
+ "t": "2026-10-14T07:30:00.000Z",
+ "ok": true,
+ "ms": 303
+ },
+ {
+ "t": "2026-10-14T08:10:00.000Z",
+ "ok": true,
+ "ms": 387
+ },
+ {
+ "t": "2026-10-14T08:47:00.000Z",
+ "ok": true,
+ "ms": 418
+ },
+ {
+ "t": "2026-10-14T09:27:00.000Z",
+ "ok": true,
+ "ms": 251
}
],
"daily": {
"2026-10-14": {
- "total": 3,
- "up": 3,
- "latSum": 1079,
- "latCount": 3,
- "latMax": 384
+ "total": 6,
+ "up": 6,
+ "latSum": 1443,
+ "latCount": 6,
+ "latMax": 251
}
},
"meta": {
@@ -1554,28 +2739,23 @@
"90": 0
},
"lat": {
- "avg": 360,
- "max": 384,
+ "avg": 241,
+ "max": 251,
"days": [
{
"key": "2026-10-14",
- "avg": 360
+ "avg": 241
}
]
}
},
"ur-792059414": {
"status": "up",
- "latency": 3205,
+ "latency": 2695,
"code": null,
"detail": "UptimeRobot:运行正常",
- "lastCheck": "2026-10-14T08:57:00.000Z",
+ "lastCheck": "2026-10-14T09:30:00.000Z",
"history": [
- {
- "t": "2026-10-13T09:55:00.000Z",
- "ok": true,
- "ms": 1597
- },
{
"t": "2026-10-13T10:40:00.000Z",
"ok": true,
@@ -1722,28 +2902,33 @@
"ms": 1423
},
{
- "t": "2026-10-14T07:38:00.000Z",
+ "t": "2026-10-14T07:35:00.000Z",
"ok": true,
- "ms": 2110
+ "ms": 2010
},
{
- "t": "2026-10-14T08:17:00.000Z",
+ "t": "2026-10-14T08:15:00.000Z",
"ok": true,
"ms": 2428
},
{
- "t": "2026-10-14T08:57:00.000Z",
+ "t": "2026-10-14T08:51:00.000Z",
"ok": true,
- "ms": 3205
+ "ms": 2460
+ },
+ {
+ "t": "2026-10-14T09:30:00.000Z",
+ "ok": true,
+ "ms": 2695
}
],
"daily": {
"2026-10-14": {
- "total": 3,
- "up": 3,
- "latSum": 8282,
- "latCount": 3,
- "latMax": 3205
+ "total": 6,
+ "up": 6,
+ "latSum": 17898,
+ "latCount": 6,
+ "latMax": 3289
}
},
"meta": {
@@ -1768,211 +2953,206 @@
"90": 7593
},
"lat": {
- "avg": 2761,
- "max": 3205,
+ "avg": 2983,
+ "max": 3289,
"days": [
{
"key": "2026-10-14",
- "avg": 2761
+ "avg": 2983
}
]
}
},
"ur-798788113": {
"status": "up",
- "latency": 375,
+ "latency": 410,
"code": null,
"detail": "UptimeRobot:运行正常",
- "lastCheck": "2026-10-14T08:58:00.000Z",
+ "lastCheck": "2026-10-14T09:28:00.000Z",
"history": [
{
- "t": "2026-10-13T09:35:00.000Z",
+ "t": "2026-10-13T10:35:00.000Z",
"ok": true,
- "ms": 605
+ "ms": 519
},
{
- "t": "2026-10-13T10:15:00.000Z",
+ "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",
"ok": true,
"ms": 456
},
{
- "t": "2026-10-13T10:55:00.000Z",
+ "t": "2026-10-13T20:35:00.000Z",
"ok": true,
- "ms": 420
+ "ms": 433
},
{
- "t": "2026-10-13T11:35:00.000Z",
+ "t": "2026-10-13T21:15:00.000Z",
"ok": true,
- "ms": 878
+ "ms": 426
},
{
- "t": "2026-10-13T12:15:00.000Z",
+ "t": "2026-10-13T21:55:00.000Z",
"ok": true,
- "ms": 530
+ "ms": 249
},
{
- "t": "2026-10-13T12:55:00.000Z",
+ "t": "2026-10-13T22:35:00.000Z",
"ok": true,
- "ms": 517
+ "ms": 359
},
{
- "t": "2026-10-13T13:35:00.000Z",
+ "t": "2026-10-13T23:15:00.000Z",
"ok": true,
- "ms": 491
+ "ms": 311
},
{
- "t": "2026-10-13T14:20:00.000Z",
+ "t": "2026-10-13T23:55:00.000Z",
"ok": true,
- "ms": 429
+ "ms": 222
},
{
- "t": "2026-10-13T15:00:00.000Z",
+ "t": "2026-10-14T00:35:00.000Z",
"ok": true,
- "ms": 447
+ "ms": 332
},
{
- "t": "2026-10-13T15:40:00.000Z",
- "ok": true,
- "ms": 404
- },
- {
- "t": "2026-10-13T16:20:00.000Z",
- "ok": true,
- "ms": 312
- },
- {
- "t": "2026-10-13T17:00:00.000Z",
- "ok": true,
- "ms": 400
- },
- {
- "t": "2026-10-13T17:40:00.000Z",
- "ok": true,
- "ms": 431
- },
- {
- "t": "2026-10-13T18:20:00.000Z",
- "ok": true,
- "ms": 632
- },
- {
- "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-14T01:05:00.000Z",
- "ok": true,
- "ms": 287
- },
- {
- "t": "2026-10-14T01:45:00.000Z",
+ "t": "2026-10-14T01:15:00.000Z",
"ok": true,
"ms": 328
},
{
- "t": "2026-10-14T02:25:00.000Z",
+ "t": "2026-10-14T01:55:00.000Z",
"ok": true,
- "ms": 376
+ "ms": 300
},
{
- "t": "2026-10-14T03:05:00.000Z",
+ "t": "2026-10-14T02:35:00.000Z",
"ok": true,
- "ms": 253
+ "ms": 405
},
{
- "t": "2026-10-14T03:45:00.000Z",
+ "t": "2026-10-14T03:15:00.000Z",
"ok": true,
- "ms": 293
+ "ms": 258
},
{
- "t": "2026-10-14T04:25:00.000Z",
+ "t": "2026-10-14T03:55:00.000Z",
"ok": true,
- "ms": 319
+ "ms": 274
},
{
- "t": "2026-10-14T05:05:00.000Z",
+ "t": "2026-10-14T04:35:00.000Z",
"ok": true,
- "ms": 329
+ "ms": 265
},
{
- "t": "2026-10-14T05:45:00.000Z",
+ "t": "2026-10-14T05:15:00.000Z",
"ok": true,
- "ms": 634
+ "ms": 373
},
{
- "t": "2026-10-14T06:25:00.000Z",
+ "t": "2026-10-14T06:00:00.000Z",
"ok": true,
- "ms": 526
+ "ms": 675
},
{
- "t": "2026-10-14T07:05:00.000Z",
+ "t": "2026-10-14T06:40:00.000Z",
"ok": true,
- "ms": 436
+ "ms": 525
},
{
- "t": "2026-10-14T07:42:00.000Z",
+ "t": "2026-10-14T07:20:00.000Z",
"ok": true,
- "ms": 395
+ "ms": 435
},
{
- "t": "2026-10-14T08:22:00.000Z",
+ "t": "2026-10-14T08:12:00.000Z",
"ok": true,
- "ms": 443
+ "ms": 227
},
{
- "t": "2026-10-14T08:58:00.000Z",
+ "t": "2026-10-14T08:48:00.000Z",
"ok": true,
- "ms": 375
+ "ms": 450
+ },
+ {
+ "t": "2026-10-14T09:28:00.000Z",
+ "ok": true,
+ "ms": 410
}
],
"daily": {
"2026-10-14": {
- "total": 3,
- "up": 3,
- "latSum": 1245,
- "latCount": 3,
- "latMax": 450
+ "total": 6,
+ "up": 6,
+ "latSum": 2418,
+ "latCount": 6,
+ "latMax": 427
}
},
"meta": {
@@ -1997,12 +3177,12 @@
"90": 0
},
"lat": {
- "avg": 415,
- "max": 450,
+ "avg": 403,
+ "max": 427,
"days": [
{
"key": "2026-10-14",
- "avg": 415
+ "avg": 403
}
]
}
@@ -2027,7 +3207,7 @@
],
"daily": {
"2026-10-14": {
- "total": 3,
+ "total": 6,
"up": 0
}
},
@@ -2055,4 +3235,3 @@
}
}
}
-
\ No newline at end of file
diff --git a/scripts/prepare-artwork.py b/scripts/prepare-artwork.py
index df04814..c44a643 100644
--- a/scripts/prepare-artwork.py
+++ b/scripts/prepare-artwork.py
@@ -104,8 +104,17 @@ def main():
figure = cut_out(SRC / "figure-original.png", DST / "shiroko-figure.webp", 560, min_area=150)
# 图标:补成正方形再缩到 180,供圆形头像与 favicon 使用
icon = cut_out(SRC / "icon-original.png", DST / "shiroko-icon.webp", 180, min_area=15, square=True)
- icon.resize((64, 64), Image.LANCZOS).save(DST / "favicon-shiroko.png", "PNG", optimize=True)
- print(f"favicon-shiroko.png: 64x64,体积 {(DST / 'favicon-shiroko.png').stat().st_size / 1024:.1f}KB")
+
+ # favicon 两种格式都产出:PNG 64 与 WebP 64。
+ # PNG 不删——favicon 是浏览器最早的请求,WebP 覆盖虽广但旧浏览器会直接不显示图标,
+ # 留 PNG 作回退代价只有几 KB,换来「任何浏览器都有图标」更稳妥。
+ icon64 = icon.resize((64, 64), Image.LANCZOS)
+ icon64.save(DST / "favicon-shiroko.png", "PNG", optimize=True)
+ icon64.save(DST / "favicon-shiroko.webp", "WEBP", quality=90, method=6)
+ png_kb = (DST / "favicon-shiroko.png").stat().st_size / 1024
+ webp_kb = (DST / "favicon-shiroko.webp").stat().st_size / 1024
+ print(f"favicon-shiroko: 64x64,PNG {png_kb:.1f}KB / WebP {webp_kb:.1f}KB")
+
# 单车:200 高,通体无服装白,全部清理
cut_out(SRC / "bike-original.png", DST / "shiroko-bike.webp", 200, min_area=20)
print("完成。视觉上请确认:光环环内、车架三角、轮圈内扇形均为透明,且角色的脸/袜子/衣服完好。")
diff --git a/scripts/verify-views.cjs b/scripts/verify-views.cjs
index dbec830..d0bec6b 100644
--- a/scripts/verify-views.cjs
+++ b/scripts/verify-views.cjs
@@ -437,6 +437,37 @@ async function main() {
const refreshBtnShown = await dp.evaluate(() => !document.getElementById('refresh-btn').hidden);
check('同源模式下保留刷新按钮', refreshBtnShown === true, `可见=${refreshBtnShown}`);
check('事件默认折叠为 8 条并可展开', evr.shown === 8 && evr.moreHidden === false && /展开全部 12 条/.test(evr.moreText), `显示 ${evr.shown} 条,按钮「${evr.moreText}」,计数「${evr.count}」`);
+
+ // ---- 事件随分组页签联动 ----
+ // 此前 setFilter 只重渲染视图不重渲染事件,且过滤依据用的是 allMonitors()
+ // (只受 dataFilter 约束、不受分组影响),导致切页签后事件纹丝不动。
+ const evTabs = await dp.evaluate(() => [...document.querySelectorAll('#group-tabs .tab')].map((t) => t.textContent.trim()));
+ // 找一个「事件里没有目标」的分组:演示数据的 12 条事件全部挂在 ids[0] 上,
+ // 因此要排除 ids[0] 所属的那个分组
+ const ids0Group = cfgJson.monitors.find((m) => m.id === ids[0])?.group || '未分组';
+ const quietTab = evTabs.find((t) => !t.startsWith('全部') && !t.startsWith(ids0Group));
+ check('存在可用于验证的分组页签', Boolean(quietTab), `事件目标属于「${ids0Group}」,可用安静分组:${quietTab ?? '无'}`);
+ if (quietTab) {
+ await dp.click(`#group-tabs .tab:text-is("${quietTab}")`);
+ await dp.waitForTimeout(500);
+ const evAfter = await dp.evaluate(() => {
+ const visIds = [...document.querySelectorAll('table.monitor-table tbody tr[data-status]')].map((tr) => tr.dataset.id);
+ const rows = [...document.querySelectorAll('.events-table tbody tr')];
+ return {
+ visibleTargets: visIds,
+ events: rows.length,
+ // 事件行里的目标名必须都属于当前页签可见的目标
+ names: rows.map((tr) => tr.querySelector('.ev-name')?.textContent?.trim()),
+ hidden: document.getElementById('events').hidden,
+ };
+ });
+ check('切分组页签后事件同步过滤(不再显示其它分组的事件)', evAfter.events === 0 && evAfter.hidden === true,
+ `「${quietTab}」页签下事件 ${evAfter.events} 条、区块隐藏=${evAfter.hidden}`);
+ }
+ await dp.click('#group-tabs .tab:text-matches("^全部")');
+ await dp.waitForTimeout(400);
+ const evBack = await dp.evaluate(() => document.querySelectorAll('.events-table tbody tr').length);
+ check('切回「全部」恢复完整事件', evBack === 8, `${evBack} 条`);
await dp.click('#events-more');
await dp.waitForTimeout(300);
const evExpanded = await dp.evaluate(() => ({ shown: document.querySelectorAll('.events-table tbody tr').length, text: document.getElementById('events-more').textContent }));