本文档概述了 frp (Fast Reverse Proxy) 中可用的指标收集和监控功能。它涵盖了内置的统计信息收集机制以及与 Prometheus 等外部监控系统的集成。有关显示这些指标的管理界面的信息,请参阅 服务器仪表板 和 客户端管理界面。
frp 通过多个接口和机制提供全面的监控能力
监控架构图
来源: server/dashboard_api.go47-49 server/dashboard_api.go107-109 server/dashboard_api.go369-382 client/admin_api.go162-195
frp 通过其内存统计信息收集器维护服务器和代理性能的内部统计信息。此收集器收集各种指标,包括
| 指标 | 描述 |
|---|---|
TotalTrafficIn | 总入站流量(字节) |
TotalTrafficOut | 总出站流量(字节) |
CurConns | 当前连接数 |
ClientCounts | 连接的客户端数量 |
ProxyTypeCounts | 按类型划分的代理数量 |
| 指标 | 描述 |
|---|---|
TodayTrafficIn | 当天入站流量(字节) |
TodayTrafficOut | 当天出站流量(字节) |
CurConns | 当前连接到此代理的数量 |
LastStartTime | 代理上次启动的时间戳 |
LastCloseTime | 代理上次关闭的时间戳 |
状态 | 当前状态(在线/离线) |
统计信息流程图
来源: server/dashboard_api.go107-129 server/dashboard_api.go239-271 server/dashboard_api.go348-383
frp 可以通过服务器仪表板上的 /metrics 端点以 Prometheus 格式公开指标。这允许与 Prometheus 监控系统集成。
要在 frp 中启用 Prometheus 指标,请在您的 frps.ini 或 frps.toml 配置中添加以下内容
启用后,指标可在 http://<dashboard_addr>:<dashboard_port>/metrics 访问。
Prometheus 集成图
来源: server/dashboard_api.go47-49
frps 仪表板通过图表提供流量指标的可视化。它显示了每个代理随时间的入站和出站流量。
单个代理的流量图从 /api/traffic/:name 端点获取数据,并使用 ECharts 库进行渲染。
流量数据流程图
来源: web/frps/src/components/Traffic.vue13-30 server/dashboard_api.go348-383
frpc 客户端和 frps 服务器都提供一个 /healthz 端点,如果服务正常运行,它会返回 200 OK 状态。外部监控系统可以利用此端点进行简单的健康检查。
来源: server/dashboard_api.go91-94 client/admin_api.go65-68
frps 服务器提供了几个用于监控服务器状态的 API 端点
| 端点 | 描述 |
|---|---|
/api/serverinfo | 返回整体服务器统计信息和配置 |
/api/proxy/{type} | 列出特定类型的代理及其统计信息 |
/api/proxy/{type}/{name} | 返回特定代理的详细信息 |
/api/traffic/{name} | 返回特定代理的流量时间序列数据 |
来自 /api/serverinfo 的示例响应
来源: server/dashboard_api.go96-133 server/dashboard_api.go214-271
frpc 客户端提供 /api/status 端点,该端点返回客户端管理的所有代理的状态。
来源: client/admin_api.go162-195
启用 Prometheus 集成:对于生产部署,启用 Prometheus 指标以利用全面的监控生态系统。
设置告警规则:为关键指标配置告警,例如
仪表板集成:创建 Grafana 仪表板以可视化 frp 的实时和历史指标。
定期日志审查:将指标监控与日志分析相结合,实现完整的可观测性。
健康检查集成:配置外部健康检查器来监控服务器和客户端的 /healthz 端点。
| 端点 | HTTP 方法 | 描述 |
|---|---|---|
/healthz | GET | 基本健康检查端点 |
/metrics | GET | Prometheus 指标(启用时) |
/api/serverinfo | GET | 服务器统计信息和配置 |
/api/proxy/{type} | GET | 按类型列出代理及其统计信息 |
/api/proxy/{type}/{name} | GET | 获取特定代理信息 |
/api/traffic/{name} | GET | 获取代理的流量时间序列 |
/api/proxies?status=offline | DELETE | 清除离线代理的统计信息 |
| 端点 | HTTP 方法 | 描述 |
|---|---|---|
/healthz | GET | 基本健康检查端点 |
/api/status | GET | 客户端管理的所有代理的状态 |
/api/reload | GET | 重新加载配置并返回状态 |
/api/stop | POST | 停止客户端服务 |