Skip to content

性能监控 ​

性能监控把主机、Gately 进程与各站点的性能数据放在一页,并在指标持续超过阈值时经通知中心发送告警,条件解除后再发一条恢复通知。管理界面位于侧边栏「系统」分组 →「性能监控」。

它面向「半夜 CPU 打满、某个站点连接数暴涨、后端变慢没人知道」这类场景,数据只保存在内存中。需要 24 小时以上的历史、跨实例汇总或复杂查询时,请使用 Prometheus 与 Grafana。

性能面板 ​

页面右上角可以切换 60 秒、1 小时、24 小时三个时间档。

主机与 Gately 进程 ​

图表内容
主机 CPU整机所有核心的平均使用率
主机内存 / 磁盘已用内存占物理内存的比例(不含可回收缓存),配置目录所在分区的已用比例
系统负载1 分钟负载
Gately 进程 CPUGately 进程占整机算力的比例,与主机 CPU 口径一致
Gately 进程内存常驻内存(MB)
文件描述符 / 协程进程打开的文件描述符数与 Go 协程数

后台每 5 秒采样一次:60 秒档每个采样一个点;1 小时档每分钟一个点,取该分钟的平均值;24 小时档每 5 分钟一个点。CPU 图表中的虚线为每个点所在时段内的峰值,短暂的尖峰不会被平均值抹平。图表上悬停可查看具体时刻的数值。

部分平台取不到某些指标(例如 macOS 上没有 CPU 使用率),对应图表显示「暂无数据」。

站点 ​

开启 Web 服务模块时,列出全部运行中的站点(含默认站点):

列说明
进行中站点当前正在处理的请求数,包括 WebSocket 等长连接
每秒请求最近约 60 秒的平均每秒请求数
5xx 比例最近约 60 秒内 5xx 响应占已完成响应的百分比
延迟 P95最近约 60 秒首字节延迟的 95 分位估算值
后端健康后端数 / 后端总数,以及当前转发中的连接数

点击站点打开站点统计,查看 24 小时的请求、错误与延迟趋势。

首字节延迟 ​

延迟为「首字节延迟」:从请求到达到响应头发出的时间,代表后端或站点本身的响应速度。以下情况不计入:

  • 响应体的传输时间(大文件下载不会拉高延迟);
  • WebSocket 等协议升级请求;
  • 被访问控制直接断开、或被管理员断开的请求。

每个请求按耗时落入 50 个细分档(1 毫秒到 60 秒,相邻档相差约 10%~25%),每档同时累计次数与总耗时,分位数取所在档的平均耗时,误差不超过档宽,不保存单个请求的数据。Prometheus 导出的 gately_site_request_duration_seconds 直方图使用其中 13 个常用边界。

告警规则 ​

点击「添加告警规则」。新建时可以点击模板预填常见规则(主机 CPU 过高、磁盘空间不足、站点 5xx 过多、站点响应变慢等),再按需修改。

字段说明
名称必填,最多 64 个字符,出现在通知标题中
指标见下表
阈值比较符 >、>=、<、<= 加数值,单位由指标决定
持续时长1 到 1440 分钟。条件持续满足这么久才发出告警,中途回落一次即重新计时
生效站点站点与后端节点类指标可选,留空表示全部站点
最小请求数5xx 比例与延迟指标使用,默认 20。最近约 60 秒的请求少于该数时不判定,避免低流量时一两个错误或慢请求就触发告警
告警级别警告或错误,决定通知事件的级别
备注、启用可选
指标单位判定对象
主机 CPU 使用率%本机
主机内存使用率%本机
主机磁盘使用率(配置目录所在分区)%本机
Gately 进程 CPU 使用率%Gately 进程
Gately 进程常驻内存MBGately 进程
站点进行中的请求数个每个站点
站点每秒请求数次/秒每个站点
站点 5xx 响应比例%每个站点
站点首字节延迟 P95毫秒每个站点
后端节点当前连接数个每个后端节点

站点与后端节点类指标对每个对象单独判定、单独告警,例如一条「5xx 比例 > 5%」的规则可以同时对两个站点分别告警。「站点每秒请求数 < 1」可以发现流量突然中断。

判定与通知 ​

  1. 后台每 5 秒评估一次全部启用的规则。
  2. 条件开始满足时进入「计时中」,持续满足到设定时长后转为「告警中」,并发布 perf.alert 事件。
  3. 告警中的条件解除后发布 perf.recovered 事件。站点的 5xx 比例与延迟在最近约 60 秒请求不足时无法判定,同样视为解除,恢复通知会注明。
  4. 站点被删除或停用时,它的告警直接清除,不发恢复通知。

页面顶部列出计时中与告警中的对象、当前值与持续时间。

修改规则的名称、级别或备注不影响正在进行的计时;修改指标、阈值、持续时长、生效站点或最小请求数,或者停用规则,会清除该规则的计时与告警状态。已触发的告警会补发一条恢复通知,注明规则已删除、停用或修改。计时与告警状态只保存在内存中,重启后重新开始。

告警经通知中心发送,需要在通知中心添加订阅「性能监控:触发告警」与「性能监控:告警恢复」的规则(可用「性能告警」模板),否则告警只写入本页日志,页面上也会出现提示。通知中心的静默对性能告警同样有效,不同对象的事件来源不同,不会互相吞掉;持续时长已经起到了去抖作用,一般不需要再设置静默。

资源与限制 ​

  • 历史只保存在内存中:主机与进程每分钟一个点,保留 24 小时;站点延迟每分钟保存 P50 与 P95,有流量的站点约占 23 KB。
  • 告警规则最多 200 条,一条规则最多指定 200 个站点。
  • 开启 Web 服务模块时,单个请求增加的开销约为一次取时间与几次计数。

监控指标 ​

性能监控开启时,/api/metrics 额外导出最近一次采样的主机与进程指标,以及各规则的告警数,详见监控指标。

接口 ​

接口说明
GET /api/perf/overview?range=60s|1h|24h主机与进程历史
GET /api/perf/sites各站点最近约 60 秒的指标
GET /api/perf/alerts计时中与告警中的对象
GET /api/perf/metrics可用于告警的指标
/api/perf/rules告警规则的增删改查、启停、排序与分组

读取需要 perf:read 权限,修改规则需要 perf:write 权限,见 API 令牌。

以 Apache-2.0 许可证开源发布。