README

Jaeger Receiver

Receives trace data in Jaeger format.

Supported pipeline types: traces

Getting Started

By default, the Jaeger receiver will not serve any protocol. A protocol must be named under the protocols object for the jaeger receiver to start. The below protocols are supported, each supports an optional endpoint object configuration parameter.

  • grpc (default endpoint = 0.0.0.0:14250)
  • thrift_binary (default endpoint = 0.0.0.0:6832)
  • thrift_compact (default endpoint = 0.0.0.0:6831)
  • thrift_http (default endpoint = 0.0.0.0:14268)

Examples:

receivers:
  jaeger:
    protocols:
      grpc:
  jaeger/withendpoint:
    protocols:
      grpc:
        endpoint: 0.0.0.0:14260

Advanced Configuration

UDP protocols (currently thrift_binary and thrift_compact) allow setting additional server options:

  • queue_size (default 1000) sets max not yet handled requests to server
  • max_packet_size (default 65_000) sets max UDP packet size
  • workers (default 10) sets number of workers consuming the server queue
  • socket_buffer_size (default 0 - no buffer) sets buffer size of connection socket in bytes

Examples:

protocols:
  thrift_binary:
    endpoint: 0.0.0.0:6832
    queue_size: 5_000
    max_packet_size: 131_072
    workers: 50
    socket_buffer_size: 8_388_608

Several helper files are leveraged to provide additional capabilities automatically:

Remote Sampling

The Jaeger receiver also supports fetching sampling configuration from a remote collector. It works by proxying client requests for remote sampling configuration to the configured collector.

    +------------+                   +-----------+              +---------------+
    |            |       get         |           |    proxy     |               |
    |   client   +---  sampling ---->+   agent   +------------->+   collector   |
    |            |     strategy      |           |              |               |
    +------------+                   +-----------+              +---------------+

Remote sample proxying can be enabled by specifying the following lines in the jaeger receiver config:

receivers:
  jaeger:
    protocols:
      grpc:
    remote_sampling:
      fetch_endpoint: "jaeger-collector:1234"

Remote sampling can also be directly served by the collector by providing a sampling json file:

receivers:
  jaeger:
    protocols:
      grpc:
    remote_sampling:
      strategy_file: "/etc/strategy.json"

Note: the grpc protocol must be enabled for this to work as Jaeger serves its remote sampling strategies over gRPC.

Expand ▾ Collapse ▴

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewFactory

func NewFactory() component.ReceiverFactory

Types

type Config

type Config struct {
	configmodels.ReceiverSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct
	Protocols                     `mapstructure:"protocols"`
	RemoteSampling                *RemoteSamplingConfig `mapstructure:"remote_sampling"`
}

    Config defines configuration for Jaeger receiver.

    type ProtocolUDP

    type ProtocolUDP struct {
    	Endpoint        string `mapstructure:"endpoint"`
    	ServerConfigUDP `mapstructure:",squash"`
    }

    type Protocols

    type Protocols struct {
    	GRPC          *configgrpc.GRPCServerSettings `mapstructure:"grpc"`
    	ThriftHTTP    *confighttp.HTTPServerSettings `mapstructure:"thrift_http"`
    	ThriftBinary  *ProtocolUDP                   `mapstructure:"thrift_binary"`
    	ThriftCompact *ProtocolUDP                   `mapstructure:"thrift_compact"`
    }

    type RemoteSamplingConfig

    type RemoteSamplingConfig struct {
    	HostEndpoint                  string `mapstructure:"host_endpoint"`
    	StrategyFile                  string `mapstructure:"strategy_file"`
    	configgrpc.GRPCClientSettings `mapstructure:",squash"`
    }

      RemoteSamplingConfig defines config key for remote sampling fetch endpoint

      type ServerConfigUDP

      type ServerConfigUDP struct {
      	QueueSize        int `mapstructure:"queue_size"`
      	MaxPacketSize    int `mapstructure:"max_packet_size"`
      	Workers          int `mapstructure:"workers"`
      	SocketBufferSize int `mapstructure:"socket_buffer_size"`
      }

      func DefaultServerConfigUDP

      func DefaultServerConfigUDP() ServerConfigUDP