Docs/ 运维/ 监控与指标

监控与指标

通过内置指标、可配置告警、运行时间检查和可共享的状态页面监控你的基础设施——全部无需外部工具。

指标控制台

sh0 从每个容器和主机系统收集资源使用指标。指标控制台提供 CPU、内存、磁盘和网络使用的实时和历史视图。

可从两处访问指标:

  • 服务器级指标 -- 所有容器的总体宿主机资源使用情况。导航到 设置 → 指标。
  • 服务级指标 -- 每个容器的使用情况。打开任何服务并点击 指标 选项卡。
Server-level metrics dashboard -- showing CPU, memory, disk, and network charts with time range selector

CPU 指标

CPU 指标显示正在使用的可用 CPU 核心百分比。对于设置了 CPU 限制的容器,图表还会显示限制线作为参考,以便查看容器距离节流有多近。

CPU usage chart -- showing a time series line graph with the container CPU limit displayed as a dashed line

内存指标

内存指标显示当前 RAM 消耗、缓存使用和配置的限制。持续接近内存限制使用的容器可能需要更高的分配或可能存在内存泄漏。

  • 已用 -- 进程消耗的活跃内存。
  • 缓存 -- 文件系统缓存(可被操作系统回收)。
  • 限制 -- 配置的内存上限。

磁盘与网络

磁盘指标显示宿主机文件系统的总空间和已用空间。网络指标跟踪每个容器的入站和出站流量(字节/秒)。

Disk usage bar and network I/O chart -- showing inbound and outbound traffic over time

指标保留

指标存储在 sh0 的内部 SQLite 数据库中,通过自动降采样保持低存储需求:

时间范围分辨率保留
最近 1 小时10 秒1 小时
最近 24 小时1 分钟24 小时
最近 7 天5 分钟7 天
最近 30 天1 小时30 天
Note
指标数据存储在服务器本地。如果你需要长期指标保留或外部监控,可以通过暴露指标端点与 Prometheus 或 Grafana 等工具集成。

配置告警

告警在指标超过阈值时通知你。你可以为 CPU 使用率、内存使用率、磁盘空间和容器健康状态设置告警。

  1. 导航到 设置 → 告警。
  2. 点击 添加告警。
  3. 选择指标类型(CPU、内存、磁盘或容器状态)。
  4. 设置阈值(例如 CPU > 80%)。
  5. 选择持续时间——条件必须持续多长时间才触发(例如 5 分钟)。
  6. 选择一个或多个通知渠道。
  7. 点击 保存。
Alert configuration form -- metric type selector, threshold slider, duration input, and notification channel checkboxes

通知渠道

sh0 支持多种告警通知渠道:

  • 邮件 -- 向一个或多个地址发送告警邮件。
  • Webhook -- 向任意 URL POST JSON 负载(兼容 Slack、Discord、PagerDuty 等)。
  • 控制台 -- 在 sh0 控制台中显示通知横幅(始终启用)。
Webhook payload example
{
  "alert": "CPU Usage High",
  "service": "my-api",
  "stack": "production",
  "metric": "cpu_percent",
  "value": 92.5,
  "threshold": 80,
  "status": "firing",
  "timestamp": "2026-03-21T14:30:00Z"
}
Tip
要向 Slack 发送告警,请创建 Slack Incoming Webhook URL 并将其作为 webhook 通知渠道添加。sh0 的告警负载与 Slack 期望的格式兼容。

运行时间监控

运行时间监控检查你的服务是否响应 HTTP 请求。sh0 以固定间隔 ping 你配置的端点,并记录响应状态和延迟。

  1. 打开服务并导航到 运行时间 选项卡。
  2. 点击 添加检查。
  3. 输入要监控的 URL(例如 https://myapp.sh0.app/health)。
  4. 设置检查间隔(30 秒、1 分钟、5 分钟等)。
  5. 可选设置期望的状态码(默认:200)。
  6. 点击 保存。
Uptime monitoring dashboard -- showing uptime percentage, response time graph, and recent check results

当检查连续失败达到配置的重试次数时,sh0 触发关联的告警。当服务恢复时,自动发送恢复通知。

公共状态页面

创建公共状态页面与用户分享服务运行时间。状态页面显示选定服务的当前状态和历史运行时间。

  1. 导航到 设置 → 状态页面。
  2. 点击 创建状态页面。
  3. 选择 URL 别名(例如 status.yourdomain.com)。
  4. 选择要显示的服务和运行时间检查。
  5. 自定义页面标题和品牌。
  6. 点击 发布。
Warning
只有当实例确实能够发送邮件(已在“设置”中配置 SMTP)时,公开状态页才会显示邮件订阅表单。未配置 SMTP 时,页面会在没有表单的情况下提供服务,而不是承诺一封永远不会到达的确认邮件。
Public status page -- showing service statuses (operational, degraded, outage) and a 90-day uptime history bar
Note
状态页面由 sh0 自身通过 Caddy 提供服务。你可以通过添加 CNAME 记录将自定义域名指向状态页面。SSL 证书自动配置。