These docs are for Cribl Stream 4.0 and are no longer actively maintained.
See the latest version (4.13).
OpenTelemetry (OTel)
Cribl Stream supports receiving trace and metric events from OTLP-compliant senders. (Cribl plans to add support for log events as more components of the OpenTelemetry protocol’s logs support graduate to stable status.)
Type: Push | TLS Support: YES | Event Breaker Support: No
In versions 4.0.3 and later, Cribl Stream supports receiving compressed inbound data (with DEFLATE or gzip compression), as well as the uncompressed data that this Source has always supported.
Supported and Unsupported Input Data
This Source currently supports receiving data over the gRPC protocol.
The OpenTelemetry Project’s Data Sources documentation provides these hierarchical definitions of Cribl Stream’s supported trace and metric event types:
- A trace tracks the progression of a single request.
- Each trace is a tree of spans.
- A span object represents the work being done by the individual services, or components, involved in a request as that request flows through a system.
- A metric provides aggreggated statistical information.
- A metric contains individual measurements called data points.
Configuring an OTel Source
From the top nav, click Manage, then select a Worker Group to configure. Next, you have two options:
To configure via the graphical QuickConnect UI, click Routing > QuickConnect (Stream) or Collect (Edge). Next, click + Add Source at left. From the resulting drawer’s tiles, select [Push > ] OpenTelemetry. Next, click either + Add Destination or (if displayed) Select Existing. The resulting drawer will provide the options below.
Or, to configure via the Routing UI, click Data > Sources (Stream) or More > Sources (Edge). From the resulting page’s tiles or left nav, select [Push > ] OpenTelemetry. Next, click New Source to open a New Source modal that provides the options below.
The sections described below are spread across several tabs. Click the tab links at left, or the Next and Prev buttons, to navigate among tabs. Click Save when you’ve configured your Source.
General Settings
Input ID: Unique ID for this Source. E.g., OTel042
.
Address: Enter the hostname/IP to listen on. Defaults to 0.0.0.0
(all addresses, IPv4 format). IPv6 addresses must be enclosed in square brackets.
Port: By default, OTel applications send output to port 4317
. Do not change this setting unless you want Cribl Stream to collect data from an OTel application that is using a different port.
Optional Settings
Tags: Optionally, add tags that you can use for filtering and grouping in Cribl Stream. Use a tab or hard return between (arbitrary) tag names.
Authentication
Select one of the following options for authentication:
None: Don’t use authentication.
Auth token: Enter the bearer token that must be included in the authorization header.
Auth token (text secret): Provide an HTTP token referenced by a secret. Select a stored text secret in the resulting drop-down, or click Create to configure a new secret.
Basic: Displays Username and Password fields for you to enter HTTP Basic authentication credentials.
Basic (credentials secret): Provide username and password credentials referenced by a secret. Select a stored text secret in the resulting Credentials secret drop-down, or click Create to configure a new secret.
TLS Settings (Server Side)
In OTel terminology, your Cribl Stream OTel Source will receive OTel data from a Collector running on a local agent. In Cribl Stream’s terminology, the Collector is the client and the OTel Source is the server. This is why this Source’s UI identifies the Source’s TLS Settings as “server-side.”
For more about this client-server relationship, see the TLS Configuration Example below.
Enabled defaults to No
. When toggled to Yes
:
Certificate name: Name of the predefined certificate.
Private key path: Server path containing the private key (in PEM format) to use. Path can reference $ENV_VARS
.
Certificate path: Server path containing certificates (in PEM format) to use. Path can reference $ENV_VARS
.
CA certificate path: Server path containing CA certificates (in PEM format) to use. Path can reference $ENV_VARS
.
Authenticate client (mutual auth): Require clients to present their certificates. Used to perform mutual authentication using SSL certs. Defaults to No
. When toggled to Yes
:
- Validate client certs: Reject certificates that are not authorized by a CA in the CA certificate path, or by another trusted CA (e.g., the system’s CA). Defaults to
No
.
Persistent Queue Settings
In this section, you can optionally specify persistent queue storage, using the following controls. This will buffer and preserve incoming events when a downstream Destination is down, or exhibiting backpressure.
On Cribl-managed Cribl.Cloud Workers (with an Enterprise plan), this tab exposes only the Enable Persistent Queue toggle. If enabled, PQ is automatically configured in
Always On
mode, with a maximum queue size of 1 GB disk space allocated per Worker Process.
Enable Persistent Queue: Defaults to No
. When toggled to Yes
:
Mode: Select a condition for engaging persistent queues.
Smart
: This default option will engage PQ only when the Source detects backpressure from the Cribl Stream data processing engine.Always On
: This option will always write events into the persistent queue, before forwarding them to the Cribl Stream data processing engine.
Max buffer size: The maximum number of events to hold in memory before reporting backpressure to the Source. Defaults to 1000
.
Commit frequency: The number of events to send downstream before committing that Stream has read them. Defaults to 42
.
Max file size: The maximum data volume to store in each queue file before closing it and (optionally) applying the configured Compression. Enter a numeral with units of KB, MB, etc. If not specified, Cribl Stream applies the default 1 MB
.
Max queue size: The maximum amount of disk space that the queue is allowed to consume, on each Worker Process. Once this limit is reached, Cribl Stream will stop queueing data, and will apply the Queue‑full behavior. Enter a numeral with units of KB, MB, etc. If not specified, the implicit 0
default will enable Cribl Stream to fill all available disk space on the volume.
Queue file path: The location for the persistent queue files. Defaults to $CRIBL_HOME/state/queues
. To this field’s specified path, Cribl Stream will append /<worker-id>/inputs/<input-id>
.
Compression: Optional codec to compress the persisted data after a file is closed. Defaults to None
; Gzip
is also available.
Setting the PQ Mode to
Always On
can degrade throughput performance. Select this mode only if you want guaranteed data durability. As a trade-off, you might need to either accept slower throughput, or provision more machines/faster disks.
Processing Settings
Fields
In this section, you can add Fields to each event, using Eval-like functionality.
Name: Field name.
Value: JavaScript expression to compute field’s value, enclosed in quotes or backticks. (Can evaluate to a constant.)
Pre-Processing
In this section’s Pipeline drop-down list, you can select a single existing Pipeline to process data from this input before the data is sent through the Routes.
Advanced Settings
Max active connections: Maximum number of active connections allowed per Worker Process. Defaults to 1000
. Set a lower value if connection storms are causing the Source to hang. Set 0
for unlimited connections.
The Extract spans and Extract metrics settings are unique to OTel. Their default No
settings allow Cribl Stream to essentially function as a bump on the wire, generating a single event for each incoming OTel event. This can be useful when, for example, you want to send whole OTel events to persistent storage.
Extract spans: Toggle to Yes
if you want Cribl Stream to generate an individual event for each span. (Recall that traces contain multiple spans.)
Extract metrics: Toggle to Yes
if you want Cribl Stream to generate an individual event for each data point. (Recall that OTel metric events contain multiple data points.)
Environment: Optionally, specify a single Git branch on which to enable this configuration. If this field is empty, the config will be enabled everywhere.
Connected Destinations
Select Send to Routes to enable conditional routing, filtering, and cloning of this Source’s data via the Routing table.
Select QuickConnect to send this Source’s data to one or more Destinations via independent, direct connections.
TLS Configuration Example
Here’s a simple example for using TLS to secure the communication between an OpenTelemetry client and your Cribl Stream OTel Source.
Choose or generate a certificate and key. If you need to generate a certificate/key pair, you can adapt the following OpenSSL command:
openssl req -nodes -new -x509 -newkey rsa:2048 -keyout myKey.pem -out myCert.pem -days 420
This example command will generate both a self-signed cert named
myCert.pem
(certified for 420 days), and an unencrypted, 2048-bit RSA private key namedmyKey.pem
.Configure the TLS Settings (Server Side). Toggle Enabled to
Yes
, then:- Enter the appropriate values in the Certificate name, Private key path, and Certificate path fields. A Create link is available if you need a new certificate, and Certificate name also works as a drop-down to allow you to choose from any existing certificates.
- Leave the CA certificate path field empty.
- Leave Authenticate client (mutual auth) toggled to
No
.
Configure the OTel client. See the OTel Collector TLS Configuration Settings README for an explanation of the relevant settings. The config file might be named
otel-config.yaml
,otel-local-config.yaml
, or justconfig.yaml
, depending on your environment. This YAML file will have anexporters
section, which you must edit to include anotlp
sub-section, as follows:- Add an
endpoint
whose value is the IP address of either (a) the Cribl Stream Worker Node on which your OTel Source is running, or (b) the IP address of the load balancer for the relevant Worker Group. In the example snippet below, this is the<Cribl_IP_address>
. Specify the port on which Cribl Stream’s OTel Source is listening; port4317
is the default. - Set
tls
>insecure
tofalse
. This matches your setting TLS Settings (Server Side) > Enabled toYes
on the Cribl Stream OTel Source. - Set
tls
>insecure_skip_verify
totrue
. This matches your setting TLS Settings (Server Side) > Authenticate client (mutual auth) toNo
on the Cribl Stream OTel Source. Settinginsecure_skip_verify
totrue
is also required if you’re using a self-signed certificate.
Here’s how the section you edited should look:
exporters: otlp: endpoint: "https://<Cribl_IP_address>:4317" tls: insecure: false insecure_skip_verify: true
- Add an