Builtin services expose internal status of servers in different pespectives, making development and debugging over brpc more efficient. brpc serves builting services via HTTP, which can be easily accessed through curl and web browsers. Servers respond plain text or html according to
User-Agent in the request header, or you may append
?console=1 to the uri to force the server to respond in plain text. Check the example running on our dev machine(only accessible from Baidu internal) for more details. If the port is forbidden from where you run curl or web browser (e.g. not all ports are accessible from a web browser inside Baidu), you can use rpc_view for proxying.
Following 2 screenshots show accesses to builtin services from a web browser and a terminal respectively. Note that the logo is the codename inside Baidu, and being modified to brpc in opensourced version.
From a web browser
From a terminal
To avoid potential attacks and information leaks, builtin services must be hidden on servers that may be accessed from public, including the ones proxied by nginx or other http servers. Click here for more details.
/status: displays brief status of all services.
/vars: lists user-customizable counters on miscellaneous metrics.
/connections: lists all connections and their stats.
/flags: lists all gflags, some of them are modifiable at run-time.
/rpcz: traces all RPCs.
cpu profiler: analyzes CPU hotspots.
heap profiler: shows how memory are allocated.
contention profiler: analyzes lock contentions.
/version shows version of the server. Call Server::set_version() to specify version of the server, or brpc would generate a default version like
/health shows whether this server is alive or not.
/protobufs shows scheme of all protobuf messages inside the server.
/dir: browses all files on the server, convenient but too dangerous, disabled by default.
/threads: displays information of all threads of the process, hurting performance significantly when being turned on, disabled by default.