RPC 系列(二十四):brpc 内置服务

什么是内置服务

内置服务以多种形式展现服务器内部状态,提高你开发和调试服务的效率。brpc 通过 HTTP 协议提供内置服务,可通过浏览器或 curl 访问,服务器会根据 User-Agent 返回纯文本或 html,你也可以添加 ?console=1 要求返回纯文本。如果服务端口被限(比如不是所有的端口都能被笔记本访问到),可以使用 rpc_view 转发。

下面是分别从浏览器和终端访问的截图:

从浏览器访问

从浏览器访问内置服务:顶部导航栏提供 status、vars、connections、flags、rpcz、cpu、heap 等入口,more 页面还列出了 /version、/health、/vlog、/sockets、/bthreads、/protobufs 等服务链接

从命令行访问

在终端用 curl 访问内置服务,返回纯文本的服务列表,包括 /status、/vars、/flags、/rpcz、/hotspots、/version、/health、/vlog 等入口及各自的用法说明

安全模式

出于安全考虑,直接对外服务需要隐藏内置服务(包括经过 nginx 或其他 http server 转发流量的),具体方法见 server 一文中的安全模式部分。

主要服务

  • /status:显示所有服务的主要状态。
  • /vars:用户可定制的,描绘各种指标的计数器。
  • /connections:所有连接的统计信息。
  • /flags:所有 gflags 的状态,可动态修改。
  • /rpcz:查看所有的 RPC 的细节。
  • cpu profiler:分析 cpu 热点。
  • heap profiler:分析内存占用。
  • contention profiler:分析锁竞争。

其他服务

/version

查看服务器的版本。用户可通过 Server::set_version() 设置 Server 的版本,如果用户没有设置,框架会自动为用户生成,规则:brpc_server_<service-name1>_<service-name2> ...

访问 /version 内置服务,页面显示当前服务器的版本名为 media_server

/health

探测服务的存活情况。

访问 /health 内置服务,页面返回 OK 表示服务存活

/protobufs

查看程序中所有的 protobuf 结构体。

访问 /protobufs 内置服务,页面列出了程序中定义的 HttpRequest、HttpResponse、HttpStreamingService、ListIDCAddressService、MonitoringService 等 protobuf 结构体与服务

/vlog

查看程序中当前可开启的 VLOG(对 glog 无效)。

访问 /vlog 内置服务,页面以表格列出各源码位置的 VLOG 模块及其当前值、需要值和状态,可在线修改开启

/dir 与 /threads

  • /dir:浏览服务器上的所有文件,方便但非常危险,默认关闭。
  • /threads:查看进程内所有线程的运行状况,调用时对程序性能影响较大,默认关闭。

系列导航


   转载规则


《RPC 系列(二十四):brpc 内置服务》 由 吴杭沉 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
RPC 系列(二十五):brpc 的服务器推送 RPC 系列(二十五):brpc 的服务器推送
server push 指的是 server 端发生某事件后立刻向 client 端发送消息,而不是像通常的 RPC 访问中那样被动地回复 client。brpc 中推荐以如下两种方式实现推送。 远程事件和本地事件类似,分为两步:注册和通知
2024-02-20
下一篇 
RPC 系列(二十三):brpc Server 全解 RPC 系列(二十三):brpc Server 全解
下面以 Echo 为例说明 brpc Server 的定义与使用方法。 填写 proto 文件请求、回复、服务的接口均定义在 proto 文件中。 # 告诉protoc要生成C++ Service基类,如果是java或python,则应分别
2024-02-06
  目录