Documentation ¶
Overview ¶
Package importsrv receives metrics over gRPC and sends them to workers.
The Server wraps a grpc.Server, and implements the forwardrpc.Forward service. It receives batches of metrics, then hashes them to a specific "MetricIngester" and forwards them on.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type MetricIngester ¶
MetricIngester reads metrics from protobufs
type Option ¶
type Option func(*options)
Option is returned by functions that serve as options to New, like "With..."
func WithTraceClient ¶
WithTraceClient sets the trace client for the server. Otherwise it uses trace.DefaultClient.
type Server ¶
Server wraps a gRPC server and implements the forwardrpc.Forward service. It reads a list of metrics, and based on the provided key chooses a MetricIngester to send it to. A unique metric (name, tags, and type) should always be routed to the same MetricIngester.
func (*Server) SendMetrics ¶
func (s *Server) SendMetrics(ctx context.Context, mlist *forwardrpc.MetricList) (*empty.Empty, error)
SendMetrics takes a list of metrics and hashes each one (based on the metric key) to a specific metric ingester.
func (*Server) SendMetricsV2 ¶
func (s *Server) SendMetricsV2( server forwardrpc.Forward_SendMetricsV2Server, ) error
func (*Server) Start ¶
Start starts a gRPC listener on the specified address and blocks while listening for requests. If listening is interrupted by some means other than Stop or GracefulStop being called, it returns a non-nil error.
TODO this doesn't handle SIGUSR2 and SIGHUP on it's own, unlike HTTPServe As long as both are running this is actually fine, as Start will stop the gRPC server when the HTTP one exits. When running just gRPC however, the signal handling won't work.