otlpreceiver

package
v0.10.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 14, 2020 License: Apache-2.0 Imports: 29 Imported by: 60

README

OpenTelemetry Receiver

Receives traces and/or metrics via gRPC using OpenTelemetry format.

To get started, all that is required to enable the OpenTelemetry receiver is to include it in the receiver definitions.

The following settings are required:

  • endpoint (default = 0.0.0.0:55680): host:port to which the exporter is going to receive traces or metrics, using the gRPC protocol. The valid syntax is described at https://github.com/grpc/grpc/blob/master/doc/naming.md.
  • transport (default = tcp): which transport to use between tcp and unix.

The following settings are optional:

  • cors_allowed_origins (default = unset): allowed CORS origins for HTTP/JSON requests. See the HTTP/JSON section below.
  • keepalive: see https://godoc.org/google.golang.org/grpc/keepalive#ServerParameters for more information
    • MaxConnectionIdle (default = infinity)
    • MaxConnectionAge (default = infinity)
    • MaxConnectionAgeGrace (default = infinity)
    • Time (default = 2h)
    • Timeout (default = 20s)
  • max_recv_msg_size_mib (default = 4MB): sets the maximum size of messages accepted
  • max_concurrent_streams: sets the limit on the number of concurrent streams
  • tls_credentials (default = unset): configures the receiver to use TLS. See TLS section below.

Examples:

receivers:
  otlp:
    protocols:
        grpc:
  otlp/withendpoint:
    protocols:
        grpc:
            endpoint: 127.0.0.1:55680

The full list of settings exposed for this receiver are documented here with detailed sample configurations here.

A protocol can be disabled by simply not specifying it in the list of protocols:

receivers:
  otlp/only_grpc:
    protocols:
      grpc:

Communicating over TLS

This receiver supports communication using Transport Layer Security (TLS). TLS can be configured by specifying a tls_settings object in the receiver configuration for receivers that support it.

receivers:
  otlp:
    protocols:
      grpc:
        tls_settings:
          key_file: /key.pem # path to private key
          cert_file: /cert.pem # path to certificate

Writing with HTTP/JSON

The OpenTelemetry receiver can receive trace export calls via HTTP/JSON in addition to gRPC. The HTTP/JSON address is the same as gRPC as the protocol is recognized and processed accordingly. Note the format needs to be protobuf JSON serialization.

IMPORTANT: bytes fields are encoded as base64 strings.

To write traces with HTTP/JSON, POST to [address]/v1/trace.

The HTTP/JSON endpoint can also optionally configure CORS, which is enabled by specifying a list of allowed CORS origins in the cors_allowed_origins field:

receivers:
  otlp:
    protocols:
      http:
        endpoint: "localhost:55681"
        cors_allowed_origins:
        - http://test.com
        # Origins can have wildcards with *, use * by itself to match any origin.
        - https://*.example.com

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DisallowUnknownFields added in v0.10.0

func DisallowUnknownFields()

DisallowUnknownFields enables option in decoder (unmarshaller) to return an error when it finds an unknown field. This function must be called before using the JSON marshaller.

func NewFactory added in v0.6.0

func NewFactory() component.ReceiverFactory

Types

type Config

type Config struct {
	configmodels.ReceiverSettings `mapstructure:",squash"` // squash ensures fields are correctly decoded in embedded struct

	// Protocols is the configuration for the supported protocols, currently gRPC and HTTP (Proto and JSON).
	Protocols `mapstructure:"protocols"`
}

Config defines configuration for OTLP receiver.

type DecoderWrapper added in v0.10.0

type DecoderWrapper struct {
	*json.Decoder
}

DecoderWrapper is a wrapper around a *json.Decoder that adds support for protos to the Decode method.

func (DecoderWrapper) Decode added in v0.10.0

func (d DecoderWrapper) Decode(v interface{}) error

Decode wraps the embedded decoder's Decode method to support protos using a jsonpb.Unmarshaler.

type JSONPb added in v0.10.0

type JSONPb jsonpb.Marshaler

JSONPb is a Marshaler which marshals/unmarshals into/from JSON with the "github.com/golang/protobuf/jsonpb". It supports fully functionality of protobuf unlike JSONBuiltin.

The NewDecoder method returns a DecoderWrapper, so the underlying *json.Decoder methods can be used.

func (*JSONPb) ContentType added in v0.10.0

func (*JSONPb) ContentType() string

ContentType always returns "application/json".

func (*JSONPb) Delimiter added in v0.10.0

func (j *JSONPb) Delimiter() []byte

Delimiter for newline encoded JSON streams.

func (*JSONPb) Marshal added in v0.10.0

func (j *JSONPb) Marshal(v interface{}) ([]byte, error)

Marshal marshals "v" into JSON.

func (*JSONPb) NewDecoder added in v0.10.0

func (j *JSONPb) NewDecoder(r io.Reader) runtime.Decoder

NewDecoder returns a Decoder which reads JSON stream from "r".

func (*JSONPb) NewEncoder added in v0.10.0

func (j *JSONPb) NewEncoder(w io.Writer) runtime.Encoder

NewEncoder returns an Encoder which writes JSON stream into "w".

func (*JSONPb) Unmarshal added in v0.10.0

func (j *JSONPb) Unmarshal(data []byte, v interface{}) error

Unmarshal unmarshals JSON "data" into "v"

type Protocols added in v0.5.0

type Protocols struct {
	GRPC *configgrpc.GRPCServerSettings `mapstructure:"grpc"`
	HTTP *confighttp.HTTPServerSettings `mapstructure:"http"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL