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.

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) Unmarshal

      func (cfg *Config) Unmarshal(componentParser *config.Parser) error

        Unmarshal a config.Parser into the config struct.

        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.