From 80f10e2a09b2d4c33b99aa981efe135e8244490c Mon Sep 17 00:00:00 2001 From: Todd Treece <360020+toddtreece@users.noreply.github.com> Date: Wed, 8 May 2024 15:29:43 -0400 Subject: [PATCH] GRPC Server: Add README (#87442) --- pkg/services/grpcserver/README.md | 41 +++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 pkg/services/grpcserver/README.md diff --git a/pkg/services/grpcserver/README.md b/pkg/services/grpcserver/README.md new file mode 100644 index 00000000000..f96f64072aa --- /dev/null +++ b/pkg/services/grpcserver/README.md @@ -0,0 +1,41 @@ +# grpcserver + +The `grpcserver` package provides the implementation of the gRPC server for handling remote procedure calls in Grafana. It enables communication between clients and the Grafana server using the gRPC protocol. + +## Structure + +- `service.go`: This file contains the main configuration of the gRPC service, which implements the `registry.BackgroundService` interface. +- `interceptors`: This folder contains the middleware functions used for intercepting and modifying gRPC requests and responses. +- `context`: This folder contains helpers related to getting and setting values in `context.Context`. +- `health.go`: This provides the implementation of the gRPC health check service, which is automatically registered with the gRPC server. +- `reflection.go`: This provides the implementation of the gRPC reflection service, which is automatically registered with the gRPC server. + +## Usage + +Enable the gRPC server in Grafana by setting the `grpcServer` feature toggle to `true` in your `custom.ini` configuration file. + +``` ini +[feature_toggles] +grpcServer = true +``` + +You can specify the gRPC server specific settings in the `grpc_server` section of the configuration file. + +``` ini +[grpc_server] +network = "tcp" +address = "127.0.0.1:10000" +use_tls = false +cert_file = +key_file = +# this will log the request and response for each unary gRPC call +enable_logging = false +# Maximum size of a message that can be received in bytes. If not set, uses the gRPC default (4MiB). +max_recv_msg_size = +# Maximum size of a message that can be sent in bytes. If not set, uses the gRPC default (unlimited). +max_send_msg_size = +``` + +## Example Services + +View [health.go] and [reflection.go] for examples of how to implement gRPC services in Grafana. These services are currently initialized by the [background service registry](../../registry/backgroundsvcs/background_services.go). \ No newline at end of file