菜单

指标与监控

相关源文件

本文档概述了 frp (Fast Reverse Proxy) 中可用的指标收集和监控功能。它涵盖了内置的统计信息收集机制以及与 Prometheus 等外部监控系统的集成。有关显示这些指标的管理界面的信息,请参阅 服务器仪表板客户端管理界面

frp 监控架构概述

frp 通过多个接口和机制提供全面的监控能力

  1. 内置统计信息收集:自动收集流量和连接统计信息
  2. Prometheus 集成:公开指标供 Prometheus 抓取
  3. 仪表板可视化:通过服务器和客户端的 Web 界面展示指标
  4. 健康检查:提供状态和健康检查端点

监控架构图

来源: 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

Prometheus 集成

frp 可以通过服务器仪表板上的 /metrics 端点以 Prometheus 格式公开指标。这允许与 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

监控 frp 的最佳实践

  1. 启用 Prometheus 集成:对于生产部署,启用 Prometheus 指标以利用全面的监控生态系统。

  2. 设置告警规则:为关键指标配置告警,例如

    • 高连接数
    • 流量高峰
    • 代理状态更改(离线/在线)
  3. 仪表板集成:创建 Grafana 仪表板以可视化 frp 的实时和历史指标。

  4. 定期日志审查:将指标监控与日志分析相结合,实现完整的可观测性。

  5. 健康检查集成:配置外部健康检查器来监控服务器和客户端的 /healthz 端点。

服务器端点

端点HTTP 方法描述
/healthzGET基本健康检查端点
/metricsGETPrometheus 指标(启用时)
/api/serverinfoGET服务器统计信息和配置
/api/proxy/{type}GET按类型列出代理及其统计信息
/api/proxy/{type}/{name}GET获取特定代理信息
/api/traffic/{name}GET获取代理的流量时间序列
/api/proxies?status=offlineDELETE清除离线代理的统计信息

客户端端点

端点HTTP 方法描述
/healthzGET基本健康检查端点
/api/statusGET客户端管理的所有代理的状态
/api/reloadGET重新加载配置并返回状态
/api/stopPOST停止客户端服务

来源: server/dashboard_api.go40-66 client/admin_api.go42-62