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:
      host_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

    NewFactory creates a new Jaeger receiver factory.

    Types

    type Config

    type Config struct {
    	config.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.

      func (*Config) Validate

      func (cfg *Config) Validate() error

        Validate checks the receiver configuration is valid

        type ProtocolUDP

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

          ProtocolUDP is the configuration for a UDP protocol.

          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"`
          }

            Protocols is the configuration for the supported protocols.

            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"`
              }

                ServerConfigUDP is the server configuration for a UDP protocol.

                func DefaultServerConfigUDP

                func DefaultServerConfigUDP() ServerConfigUDP

                  DefaultServerConfigUDP creates the default ServerConfigUDP.