Upgrade to Pro — share decks privately, control downloads, hide ads and more …

go-grpc-channelz: a Go based UI for gRPC's chan...

Ran Tavory
November 17, 2019

go-grpc-channelz: a Go based UI for gRPC's channelz

Project here: https://github.com/rantav/go-grpc-channelz

go-grpc-channelz is an open source project in Go providing observability into gRPC’s current state of connections (channels).

gRPC is a robust and highly scalable RPC system. It abstracts actual socket connections through the channel abstraction. Channels represent load-balanced, possibly auto-discovered remote servers. Gaining visibility into the current state of gRPC channels is priceless. Think netstat for your gRPC server/clien. Channelz is a gRPC spec exposing the inner state of gRPC channels. go-grpc-channelz, written in go, is a pluggable UI which uses the channelz gRPC API to query and display the current state of gRPC connections.

Ran Tavory

November 17, 2019
Tweet

More Decks by Ran Tavory

Other Decks in Programming

Transcript

  1. Channelz service // Channelz is a service exposed by gRPC

    servers that provides detailed debug // information. service Channelz { // Gets all root channels (i.e. channels the application has directly // created). This does not include subchannels nor non-top level channels. rpc GetTopChannels(GetTopChannelsRequest) returns (GetTopChannelsResponse); // Gets all servers that exist in the process. rpc GetServers(GetServersRequest) returns (GetServersResponse); // Returns a single Server, or else a NOT_FOUND code. rpc GetServer(GetServerRequest) returns (GetServerResponse); // Gets all server sockets that exist in the process. rpc GetServerSockets(GetServerSocketsRequest) returns (GetServerSocketsResponse); // Returns a single Channel, or else a NOT_FOUND code. rpc GetChannel(GetChannelRequest) returns (GetChannelResponse); // Returns a single Subchannel, or else a NOT_FOUND code. rpc GetSubchannel(GetSubchannelRequest) returns (GetSubchannelResponse); // Returns a single Socket or else a NOT_FOUND code. rpc GetSocket(GetSocketRequest) returns (GetSocketResponse); }