mirror of https://github.com/grafana/grafana.git
|
||
---|---|---|
.. | ||
context | ||
interceptors | ||
README.md | ||
health.go | ||
reflection.go | ||
service.go |
README.md
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 theregistry.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 incontext.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.
[feature_toggles]
grpcServer = true
You can specify the gRPC server specific settings in the grpc_server
section of the configuration file.
[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 =
Optional: Connection Management and Load Balancing
These settings help with:
- Resource management: Prevent resource leaks from idle connections
- Connection health: Detect and clean up dead connections
- Load balancing: Force connection recycling for better distribution across multiple server instances
- DoS protection: Rate limit keepalive pings from clients
# Connection management options
# Maximum amount of time a connection may exist before it will be closed
max_connection_age = 300s
# Additional time to allow for pending RPCs to complete before forcibly closing connections
max_connection_age_grace = 10s
# Maximum amount of idle time before a connection is closed
max_connection_idle = 300s
# Frequency of server-to-client pings to check if a connection is still active
keepalive_time = 30s
# Amount of time the server waits for a response to keepalive pings before closing the connection
keepalive_timeout = 5s
# Minimum amount of time a client should wait before sending a keepalive ping
keepalive_min_time = 5s
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.