行业资讯
📅 2026/9/3 12:46:21
frp 运维实战:Dashboard、Prometheus 与动态代理,10 分钟搭好完整可观测体系
frp 运维实战Dashboard、Prometheus 与动态代理10 分钟搭好完整可观测体系【免费下载链接】frpA fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.项目地址: https://gitcode.com/GitHub_Trending/fr/frpfrp 是一款高性能的快速反向代理工具fast reverse proxy专门用来把藏在 NAT 或防火墙后面的本地服务器暴露到公网上。但真实运维中能通只是起点谁连上来了流量多大某个代理挂了谁负责靠肉眼看日志显然撑不住。本文带你用 frp 自带的 Dashboard、Prometheus 指标导出和动态代理管理三大特性快速搭起一套完整、可观测、可在线变更的代理运维体系全程基本不需要手写代码。先看懂 frp 的架构可观测体系长在哪里在动手之前先花 30 秒理解 frp 的架构你就知道监控该埋在哪一层公网用户访问的是 frps 的端口frps 再沿着 frpc 主动建立的持久隧道把流量转发到内网服务。所有连接数、流量、客户端状态都汇聚在 frps 一侧这就是观测的主战场。架构源码可参考 server/service.go 中的 frps 主服务以及 client/service.go 中的 frpc 主服务。一键开启 frps DashboardWeb 界面速览客户端与流量frp 服务端内置了一个功能完整的 DashboardWeb 管理面板只需在 conf/frps.toml 中配置webServer区块即可开启官方全量示例见 conf/frps_full_example.toml配置项推荐值说明webServer.addr0.0.0.0监听地址建议配合反向代理与鉴权webServer.port7500面板端口设置后 Dashboard 自动可用webServer.user/password自定义强密码面板登录凭证务必修改webServer.pprofEnabletrue排障时在面板端口上启用 Go pprof 性能分析打开面板后你可以直接看到客户端数量、代理总数、按类型TCP/UDP/HTTP/HTTPS分布的代理饼图以及今天的入站/出站流量统计无需再 SSH 到机器上敲命令 小贴士代理定义中可以通过[proxies.annotations]添加自定义标注见 conf/frpc_full_example.toml这些标注会直接显示在 frps Dashboard 上非常适合用来标记业务线、负责人等信息。frpc 客户端同样内置了 Web Dashboard前端源码在 web/frpc/服务端面板源码在 web/frps/两者都通过 Go embed 直接编译进二进制开箱即用。接入 Prometheus让 frp 指标进入你的监控大盘Dashboard 适合人看而告警和容量规划需要机器可读的指标。frp 内置了 Prometheus 导出器在 conf/frps.toml 里加一行enablePrometheus true指标就会暴露在 webServer 的/metrics端点上Prometheus 抓取一下即可。指标实现位于 pkg/metrics/prometheus/server.go核心指标一览指标名类型用途frp_server_client_countsGauge当前在线 frpc 客户端数掉零即断连告警frp_server_proxy_counts{type}Gauge各类型代理数量frp_server_connection_counts{name,type}Gauge每个代理的实时连接数识别热点代理frp_server_traffic_in/traffic_outCounter按代理维度的进出流量rate()后即带宽曲线配套的内存版指标pkg/metrics/mem/server.go通过pkg/metrics/aggregate/pkg/metrics/aggregate/server.go统一聚合上报架构非常干净。一条典型告警规则就是客户端数突降 或 某代理连接数超阈值再配上 Grafana 面板容量趋势一目了然。动态代理管理不重启 frpc 增删改代理可观测的最后一块拼图是可变更——传统方式下新增一个代理要改配置文件再重启 frpc既慢又容易出错。新版 frp 提供了完整的动态代理管理能力1. Store 持久化 多配置源聚合frpc 支持内置 store 源配置中的store字段见 pkg/config/v1/client.go动态创建、删除的代理会持久化下来与静态配置文件互为补充。两个来源由聚合器统一加载合并实现见 pkg/config/source/aggregator.go配置替换逻辑在 pkg/config/source/config_source.go——整个过程原子化、线程安全对现有代理零影响。2. Admin API程序化管理代理frpc 暴露了一组 REST 接口路由注册见 client/api_router.go全部受 Basic 鉴权保护接口功能GET /api/status查看运行状态与所有代理详情GET/PUT /api/config获取/整体更新代理配置GET/POST/PUT/DELETE /api/store/proxies对持久化代理做完整 CRUDGET /api/reload热加载配置无需重启这意味着你可以用 Ansible、Kubernetes Operator 或自己的运维脚本批量下发代理实现配置即代码。3. frpc Web 面板鼠标点点就完成变更不想写脚本frpc 自带的面板源码 web/frpc/提供了代理/访问者的可视化表单编辑proxy-form目录下拆分了基础、传输、HTTP、负载均衡、健康检查等独立区块web/frpc/src/components/proxy-form/改完保存即通过 store API 生效配合 Dashboard 实时验证状态形成改—看—验的完整闭环。最佳实践清单把三件套用起来安全先行Dashboard 的webServer.user/password使用强密码生产环境建议挂在内网或加反向代理鉴权绝不明文用默认账号。必建三条告警客户端数归零、单代理连接数突增、traffic_out速率异常飙升。配置分层稳定代理写进 conf/frpc.toml 静态文件临时/实验代理走 store 动态创建互不干扰。排障利器性能抖动时临时打开webServer.pprofEnable true用 pprof 定位热点。️善用 annotations给每个代理打上业务标注Dashboard 上谁负责、什么服务一眼可辨。至此你拥有的不再是一个能转发流量的 frp而是一个**看得见Dashboard、量得准Prometheus、改得快动态代理**的完整可观测体系。更多配置细节可翻阅 doc/ 目录下的文档与 README_zh.md动手试试吧【免费下载链接】frpA fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.项目地址: https://gitcode.com/GitHub_Trending/fr/frp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考