OpenTelemetry
Overview Copied
The OpenTelemetry plugin is a Collection Agent plugin that provides data collection capability for the OpenTelemetry protocol over gRPC/protobuf.
The OpenTelemetry plugin requires an instrumented system that emits signals. The signals are the following telemetry categories that are supported by the OpenTelemetry specifications:
- Traces — describes the flow of a single request made by a user or an application.
- Metrics — a numeric value that measures system resources or services over a time interval.
- Logs — records an event, including timestamps and metadata.
Prerequisites Copied
Geneos environment Copied
The latest version of the OpenTelemetry plugin requires Gateway and Netprobe version 6.0.x. The same version must be used for the GSE schema.
The OpenTelemetry plugin binaries are packaged with Netprobe 6.0.x and are stored in the collection_agent/plugins
folder.
Alternatively, you can download separate binaries for the OpenTelemetry plugin from the ITRS Downloads.
OpenTelemetry environment Copied
The OpenTelemetry plugin requires an instrumented system that emits signals. Please see the OpenTelemetry documentation for language-specific instrumentation details.
Protocol and Security Copied
Protocol Copied
The OpenTelemetry plugin supports the following requests:
- Sequential — recommended where possible.
- Concurrent — recommended over slow networks and/or high data volumes.
If the server responds with an OK
 status, then all records in the batch are ingested to persistent storage and will never require retransmission. There will be no retransmission either because they are already persisted or are considered non-critical.
The subset of gRPCÂ error codes used are described in the table below:
gRPC code | Retyrable | Description |
---|---|---|
UNAVAILABLE | Yes | An ingestion error has occurred and a retry is likely to succeed after a delay. A RetryInfo record is also sent as additional details. The retry delay should be regarded as indicative of the initial delay period and clients should respect the suggested exponential backoff mechanism as per the protocol specification.
|
INVALID_ARGUMENT | No | An unknown error has occurred, and a retry of the same batch is unlikely to succeed and should not be attempted. |
UNAUTHENTICATED | No | When an application authentication is enabled, and a client fails to authenticate. |
Using the above mechanisms, the plugin attempts to guarantee at least once semantics. It is possible that retrying a batch will result in 1 or more individual records being ingested multiple times. You may minimize this possibility by sending records sequentially, one per batch. However, this is likely to be far less efficient from a network bandwidth and throughput perspective.
Security Copied
This plugin supports multiple layers of security:
- Transport layer — various forms of TLS.
- Application layer — application keys in the form of username and password.
Specifically, the following transport layer security modes are supported:
- Plain text
- Untrusted TLS — server trusts any client.
- Mutual TLS — server only trusts clients which present an appropriate certificate.
By default, when TLS is enabled, TLSv1.3 and TLSv1.2 are the only protocols allowed. It is possible to explicitly enable others, but they are generally considered less secure.
In addition to TLS, this plugin supports application layer authentication against a suitable IAM provider. In this case, aside from transport layer security, you must provide appropriate keys in the gRPC metadata, which can be used for authentication purposes.
Configure Gateway to receive OpenTelemetry data Copied
The OpenTelemetry plugin supports Collection Agent publication into Geneos using dynamic managed entities. To set up the OpenTelemetry plugin in Geneos, follow these steps:
- In GSE, go to Dynamic entities >Â Collectors then create an OpenTelemetry collector with the following configuration:
collectors:
- type: plugin
name: opentelemetry-otlp
className: OpenTelemetryCollector
# Optional. Default is 4317.
port: 4317
# Optional. gRPC inbound queue capacity. Default is 64.
queueCapacity: 64
# Optional. gRPC inbound queue processing threads. Default is 4.
threadPoolSize: 4
# Optional. Inbound username/password authentication against an OpenID IAM provider.
# This mechanism is compatible with the internal IAM mechanism in the Obcerv Platform.
authentication:
# Mandatory. IAM provider credentials.
iam:
scheme: https
hostname: iam.domain.com
port: 443
clientId: ingestion
clientSecret: password
adminRealm: master
clientRealm: obcerv
# List of permitted usernames.
# The values are treated as prefixes - they match exact or any username that starts with.
# If the list is empty, all usernames are accepted.
allowedUsers:
- user1
- user2
# Optional. Use to enable TLS.
# If omitted, the server accepts any connections over plain text.
# Otherwise the server enables TLS and can either authenticate clients
# (i.e. use mTLS) or not depending on whether the trustChainFile is specified.
tls:
# Mandatory.
certFile: /path/to/cert.pem
# Mandatory.
keyFile: /path/to/key.pem
# Optional. Used only when mTLS is desired.
trustChainFile: /path/to/trust-chain.pem
# Optional. List of TLS protocols to enable. Defaults to TLSv1.3 and TLSv1.2 only.
protocols: [ TLSv1.3, TLSv1.2 ]
# Optional. Defaults to true.
# By default, metrics from each trace span are extracted and emitted.
# This flag allows toggling of that behavior.
emitTraceMetrics: true
# EXPERIMENTAL. Optional. Defaults to false.
# By default trace spans are not emitted, however, this toggles
# trace span emission. This is experimental because it only enables
# reporting to another OpenTelemetry endpoint. That is, this is
# useful only in relay mode.
emitTraces: false
# Optional. Default is 200.
# For the resource and span attributes mapped (according to the rules below) that are mapped into dimensions,
# both attribute names and values are truncated to the length specified in order to pass data point validation.
# A value of 0 switches truncation off completely.
maxAttributeKeyValueLength: 200
# Optional. Defines which resource attributes to map to dimensions or properties.
# If not specified, then the default is to map all 'semantic' attributes (see 'semantic conventions' above)
# and the remainder to properties.
resourceAttributes:
# Optional metric resource attributes to map to dimensions or properties.
metrics:
# Optional. Defaults to 'semantic', which implies default to mapping any of the
# resource attributes defined as having special semantic meaning
# (see 'semantic conventions' above).
# 'all' implies default to mapping all resource attributes to dimensions.
# 'none' implies default to mapping no resources attributes to dimensions.
base: semantic|all|none
# Additional attributes to include.
# It is not necessary to supply the full attribute name, a matching prefix is sufficient.
include:
# Matches (and therefore includes) 'process.name', 'process.id', etc.
- process
# Attributes to exclude.
exclude:
# Matches (and therefore excludes) 'host.name', 'host.arch', etc.
- host
# Optional. Defaults to 'false'.
# Determines whether resource attributes excluded from being mapped to metric dimensions are
# instead mapped to properties or just dropped.
# The default is to map all remaining resource attributes (i.e. the ones not mapped to dimensions) to
# properties.
dropExcluded: false
# Optional log resource attributes to map to dimensions or properties
logs:
base: semantic|all|none
include:
- custom.attribute
exclude:
- another.attribute
dropExcluded: true
# Optional trace resource attributes to map to dimensions or properties.
traces:
base: semantic|all|none
include:
- custom.attribute
exclude:
- another.attribute
dropExcluded: false
# Optional. Defines which scope attributes to map to properties.
# If not specified the default is to map no scope attributes.
scopeAttributes:
# Optional scope metric attributes to map to properties. Defaults to 'none'.
metrics:
# Optional. Defaults to 'none'.
# 'all' implies default to mapping all scope attributes to properties.
# 'none' implies default to mapping no scope attributes to properties.
base: all|none
# Additional attributes to include.
include:
- custom.attribute
# Attributes to exclude.
exclude:
- another.attribute
# Optional scope log attributes to map to properties. Defaults to 'none'.
logs:
base: all|none
include:
- custom.attribute
exclude:
- another.attribute
# Optional scope trace attributes to map to properties. Defaults to 'none'.
traces:
base: all|none
include:
- custom.attribute
exclude:
- another.attribute
# Optional. Custom metric unit mappings from external string to a known
# internal data model representation.
units:
# Map Otel metric unit 'By' to internal unit 'bytes'
# See below for a reference to available internal units.
By: bytes
# EXPERIMENTAL. Only suitable for relaying traces to another OpenTelemetry endpoint.
reporters:
- type: plugin
className: OpenTelemetryReporter
name: otel-out
# Optional. Reporting target hostname. Defaults to 'localhost'
hostname: localhost
# Optional. Reporting target port. Defaults to 4317.
port: 4317
# Optional. Switch compression on/off. Defaults to true (gzip).
useCompression: true
# Optional. gRPC call deadline in milliseconds. Defaults to 10000.
callDeadline: 10000
# Optional. Defaults to false.
# When true, overrides any TLS configuration and uses a plain text connection.
# When false (default), and there is no 'tls' section, default is to use
# 'insecure' TLS (i.e. we trust the server certificate presented during TLS handshake)
# over the more recent and supported TLS protocol out of TLSv1.3 and TLSv1.2.
usePlainText: false
# Optional. Used only when usePlainText is false (the default).
# When not using plain text this section is only required when mTLS is desired,
# else the client trusts whatever public key it receives from the server during the
# TLS handshake.
tls:
# Optional. Used only for mTLS.
certFile: /path/to/cert.pem
# Optional. Used only for mTLS.
keyFile: /path/to/key.pem
# Optional. Used for mTLS and trusted server TLS (i.e. contains trusted server keys).
trustChainFile: /path/to/trust-chain.pem
# Optional. List of TLS protocols to enable. Defaults to TLSv1.3 and TLSv1.2 only.
protocols: [ TLSv1.3, TLSv1.2 ]
- In Dynamic entities >Â Mapping, configure the mappings to be used. For an example mapping, see Mappings.
- If you will be monitoring logs, set up an FKM sampler. For more information, see File Keyword Monitor Configuration.
- In Dynamic entities >Â Mapping types, create a mapping type with the collector, mapping, and sampler you created in the previous steps.
Note
To check if there are any errors in the mapping, you can set up the Dynamic Entities Health or look at the Collection Agent log file in Collection Agent setup.
OpenTelemetry units may be translated to any available internal units, either by symbol or description. The following are suitable for use as mapping targets for OpenTelemetry metric units:
Symbol | Description |
---|---|
B | bytes |
kB | kilobytes |
KiB | kibibytes |
Mbit | megabits |
MB | megabytes |
MiB | mebibytes |
GB | gigabytes |
GiB | gibibytes |
TB | terabytes |
TiB | tebibytes |
PB | petabytes |
PiB | pebibytes |
EB | exabytes |
EiB | exbibytes |
bit/s | bits per second |
B/s | bytes per second |
KiB/s | kibibytes per second |
Mbit/s | megabits per second |
Gbit/s | gigabits per second |
/s | per second |
s | seconds |
ns | nanoseconds |
µs | microseconds |
ms | milliseconds |
min | minutes |
h | hours |
d | days |
°C | degrees Celsius |
Hz | hertz |
MHz | megahertz |
GHz | gigahertz |
fraction | |
% | percent |
cores | |
microcores | |
millicores | |
m | metres |
km | kilometres |
V | Volts |
kV | kilovolts |
A | amperes |
mA | milliamperes |
J | joules |
kJ | kilojoules |
kg | kilograms |
g | grams |
AUD | AUD |
CAD | CAD |
CHF | CHF |
CNY | CNY |
DKK | DKK |
EUR | EUR |
GBP | GBP |
HKD | HKD |
JPY | JPY |
NOK | NOK |
NZD | NZD |
SEK | SEK |
SGD | SGD |
USD | USD |
ZAR | ZAR |
Mappings Copied
The data mappings of the signals supported by the OpenTelemetry plugin are as follow:
- Metrics — fully supported except for the deprecated types. All others are mapped to the internal data model in some shape.
- Logs — fully supported.
- Traces — partially supported. There is no internal data model representation for span yet, so golden metrics are extracted from each span.
OpenTelemetry plugin allows you to create custom mappings, so you can modify the display of information in the Geneos dataview. The mappings can be configured differently by using available dimensions or properties.
To create custom mappings for OpenTelemetry:
- Navigate to your OpenTelemetry mapping in Dynamic entities >Â Mappings.
- In Options, select custom.
Example mappings and dataviews Copied
Traces Copied
<mapping name="opentelemetry-traces">
<custom>
<filters>
<filter>
<label>__itrs_namespace__</label>
<equals>
<value>itrsgroup.com/c2/opentelemetry-plugin/traces</value>
</equals>
</filter>
</filters>
<geneosItems>
<geneosItem>
<label>trace_id_hex</label>
<entity>
<required>true</required>
<useInDisplayName>true</useInDisplayName>
</entity>
</geneosItem>
</geneosItems>
</custom>
</mapping>
Using the custom mappings above, the following dataview is generated:
Metrics Copied
<mapping name="opentelemetry-metrics">
<custom>
<filters>
<filter>
<label>__itrs_namespace__</label>
<equals>
<value>itrsgroup.com/c2/opentelemetry-plugin/traces</value>
</equals>
</filter>
</filters>
<geneosItems>
<geneosItem>
<label>service.name</label>
<entity>
<required>true</required>
<useInDisplayName>true</useInDisplayName>
</entity>
</geneosItem>
</geneosItems>
</custom>
</mapping>
Using the custom mappings above, the following dataview is generated:
Logs Copied
<mapping name="opentelemetry-logs">
<custom>
<filters>
<filter>
<label>__itrs_namespace__</label>
<equals>
<value>itrsgroup.com/c2/opentelemetry-plugin/traces</value>
</equals>
</filter>
</filters>
<geneosItems>
<geneosItem>
<label>service.name</label>
<entity>
<required>true</required>
<useInDisplayName>true</useInDisplayName>
</entity>
</geneosItem>
</geneosItems>
</custom>
</mapping>
Using the custom mappings above, the following dataview is generated:
OpenTelemetry Forwarding Copied
Tunneling Copied
In some cases, you need to route received OpenTelemetry data to other OpenTelemetry receivers without modifying it. To do this, tunneling mode can be enabled. The tunnel sender configuration will connect to an existing OpenTelemetry receiver. This allows routing of all data types to a common set of OpenTelemetry receivers, or to any combination of receivers by data type.
Configuration Copied
Add the following configuration to the collector’s configuration:
Note
tunnelSenders
are similar to normal reporters; however, they accept native OpenTelemetry payloads only.- In the
tunnel
section, there must be at least one reference per tunneled data type (traces, logs, metrics) to a validtunnelSender
by name.
Standard Configuration Copied
Note
When tunneling is enabled for all data types, much of the configuration specified below can be omitted, as normalization and trace sampling are bypassed. A separate tunneling-only mode configuration is also provided below.
collectors:
- type: plugin
name: opentelemetry-otlp
className: OpenTelemetryCollector
# Optional. Default is 4317.
port: 4317
# Optional. gRPC inbound queue capacity. Default is 64.
queueCapacity: 64
# Optional. gRPC inbound queue processing threads. Default is 4.
threadPoolSize: 4
# Optional. Choose which data types to receive. Default is all data types.
# Disabling unused data types is a way of conserving resources.
receive:
# Optional. Receive metrics. Default is true.
metrics: true
# Optional. Receive logs. Default is true.
logs: true
# Optional. Receive traces. Default is true.
traces: true
# Optional. Inbound username/password authentication against an OpenID IAM provider.
# This mechanism is compatible with the internal IAM mechanism in the Obcerv Platform.
authentication:
# Mandatory. IAM provider credentials.
iam:
scheme: https
hostname: iam.domain.com
port: 443
clientId: ingestion
clientSecret: password
adminRealm: master
clientRealm: obcerv
# List of permitted usernames.
# The values are treated as prefixes - they match exact or any username that starts with.
# If the list is empty, all usernames are accepted.
allowedUsers:
- user1
- user2
# Optional. Use to enable TLS.
# If omitted, the server accepts any connections over plain text.
# Otherwise, the server enables TLS and can either authenticate clients
# (i.e. use mTLS) or not depending on whether the trustChainFile is specified.
tls:
# Mandatory.
certFile: /path/to/cert.pem
# Mandatory.
keyFile: /path/to/key.pem
# Optional. Used only when mTLS is desired.
trustChainFile: /path/to/trust-chain.pem
# Optional. List of TLS protocols to enable. Defaults to TLSv1.3 and TLSv1.2 only.
protocols: [ TLSv1.3, TLSv1.2 ]
# Optional. Defaults to false.
# By default, traces are not emitted by the collector.
# This flag allows toggling of that behavior.
# THIS IS AN EXPERIMENTAL FEATURE.
emitTraces: false
# Optional. Trace sampler configuration.
# Internal defaults below are chosen if not specified.
# THIS IS AN EXPERIMENTAL FEATURE.
traceSampler:
# Optional but recommended, name for the sampler.
name: sampler-name
# Optional. The maximum number of milliseconds the sampler allocates to span organisation before making
# a sampling decision pass. Defaults to 500 ms.
spanTimeout: 500
# Optional. Always sample every span. Defaults to false and not recommended for production.
alwaysOn: false
# Optional. Always sample traces for which any span as an error status code.
alwaysSampleErrors: true
# Optional. Number of seconds spans for any given trace are buffered before a sampling decision is made.
samplingDecisionWindow: 10
# Optional. Expected number of spans per second.
# This need not be specified but is a useful hint for pre-emptive internal resource allocation.
expectedSpanRate: 1000000
# Optional. A list of endpoints (corresponds to the name of the root span) to include when considering endpoint
# based sampling decisions. It is not necessary to specify the full endpoint name, just any substring it contains
# is sufficient for a match.
# If empty this has no effect.
includedEndpoints:
- MyImportantOperation
# Optional. A list of endpoints (corresponds to the name of the root span) to exclude when considering endpoint
# based sampling decisions. It is not necessary to specify the full endpoint name, just any substring it contains
# is sufficient for a match.
# If empty this has no effect.
excludedEndpoints:
- MyTrivialOperation
# Optional. Target sampling probability per endpoint (corresponds to the name of the root span).
targetEndpointSampleProbability: 0.01
# Optional. Target sampling rate / second / endpoint (corresponds to the name of the root span).
targetEndpointSampleRate: 1.0
# Optional. The number of traces received for a given endpoint before applying the traceDurationOutlierQuantile
# sampler.
traceDurationOutlierThreshold: 100
# Optional. Root span duration outlier quantile.
# The durations of all root spans are tracked and used to make guesses about abnormally long spans.
traceDurationOutlierQuantile: 0.9
# Optional. Sample based on span and/or span event attributes.
# Keys must match identically. Values can match literally (i.e. starts-with) or via regexp.
attributes:
key1: value1
key2: value2
# Optional. Defaults to true.
# By default, metrics from each span are extracted and emitted.
# This flag allows toggling of that behavior.
emitTraceMetrics: true
# Optional. Defaults to false.
# By default, metrics are only emitted for root spans (i.e. spans with no parent span ID).
# This flag allows metric emission for all spans.
emitTraceMetricsOnChildSpans: false
# Optional. Defaults to false.
# Emit cumulative histograms.
# See convertCumulativeToDeltaHistograms below.
emitCumulativeHistograms: false
# Optional. Defaults to true.
# Note that this is a best effort only and specifically requires that all cumulative histograms for any given
# cardinality is ingested via the same CA process because it is a stateful conversion. This is often the case
# (or can be) in the pure Geneos use case and therefore is enabled by default (i.e. as opposed to dropping
# those histograms).
# This option has no effect when emitCumulativeHistograms is set.
convertCumulativeToDeltaHistograms: true
# Optional. Trace metric aggregation and reporting interval in milliseconds. Defaults to 10 seconds.
# Trace metrics are aggregated and reported over windows at this interval.
traceMetricsInterval: 10000
# Optional. Trace metric expiry interval in milliseconds. Defaults to 10 minutes.
# Aggregated trace metrics that are not updated in this interval are purged.
traceMetricsExpiry: 600000
# Optional. Logs specific. Default is to use the Instrumentation Scope name as the log data point name.
# This option allows the data point name to be set according to a Resource attribute value instead.
logNameResourceAttribute: log.resource.name
# Optional. Logs specific. Default is to use the Instrumentation Scope name as the log data point name.
# This option allows the data point name to be set according to an InstrumentationScope attribute value instead.
# Note that if the 'logNameResourceAttribute' is configured and there is an associated attribute name present
# it takes precedence over this attribute.
logNameScopeAttribute: log.scope.name
# Optional. Logs specific. Default is to use the Instrumentation Scope name as the log data point name.
# This option allows the data point name to be set according to a LogRecord attribute value instead.
# Note that if the 'logNameResourceAttribute' or 'logNameScopeAttribute' is configured and there is an
# associated attribute name present it takes precedence over this attribute.
logNameRecordAttribute: log.record.name
# Optional. Defines which resource attributes to map to dimensions or properties.
# If not specified, then the default is to map all 'semantic' attributes (see 'semantic conventions' above)
# and the remainder to properties.
resourceAttributes:
# Optional metric resource attributes to map to dimensions or properties.
metrics:
# Optional. Defaults to 'semantic', which implies default to mapping any of the
# resource attributes defined as having special semantic meaning
# (see 'semantic conventions' above).
# 'all' implies default to mapping all resource attributes to dimensions.
# 'none' implies default to mapping no resources attributes to dimensions.
base: semantic|all|none
# Additional attributes to include.
# It is not necessary to supply the full attribute name, a matching prefix is sufficient.
include:
# Matches (and therefore includes) 'process.name', 'process.id', etc.
- process
# Attributes to exclude.
exclude:
# Matches (and therefore excludes) 'host.name', 'host.arch', etc.
- host
# Optional. Defaults to 'false'.
# Determines whether resource attributes excluded from being mapped to metric dimensions are
# instead mapped to properties or just dropped.
# The default is to map all remaining resource attributes (i.e. the ones not mapped to dimensions) to
# properties.
dropExcluded: false
# Optional log resource attributes to map to dimensions or properties
logs:
base: semantic|all|none
include:
- custom.attribute
exclude:
- another.attribute
dropExcluded: true
# Optional trace resource attributes to map to dimensions or properties.
traces:
base: semantic|all|none
include:
- custom.attribute
exclude:
- another.attribute
dropExcluded: false
# Optional. Defines which scope attributes to map to properties.
# If not specified the default is to map no scope attributes.
scopeAttributes:
# Optional scope metric attributes to map to properties. Defaults to 'none'.
metrics:
# Optional. Defaults to 'none'.
# 'all' implies default to mapping all scope attributes to properties.
# 'none' implies default to mapping no scope attributes to properties.
base: all|none
# Additional attributes to include.
include:
- custom.attribute
# Attributes to exclude.
exclude:
- another.attribute
# Optional scope log attributes to map to properties. Defaults to 'none'.
logs:
base: all|none
include:
- custom.attribute
exclude:
- another.attribute
# Optional scope trace attributes to map to properties. Defaults to 'none'.
traces:
base: all|none
include:
- custom.attribute
exclude:
- another.attribute
# Optional. Defines which individual (metric|log|span) attributes to map to properties.
# If not specified the default is to map all attributes to properties.
dataAttributes:
# Optional metric attributes to map to properties. Defaults to 'all'.
metrics:
# Optional. Defaults to 'all'.
# 'all' implies default to mapping all resource attributes to properties.
# 'none' implies default to mapping no resources attributes to properties.
base: all|none
# Additional attributes to include.
include:
- custom.attribute
# Attributes to exclude.
exclude:
- another.attribute
# Optional scope log attributes to map to properties. Defaults to 'all'.
logs:
base: all|none
include:
- custom.attribute
exclude:
- another.attribute
# Optional span attributes to map to properties. Defaults to 'all'.
traces:
base: all|none
include:
- custom.attribute
exclude:
- another.attribute
# Optional. Custom metric unit mappings from external string to a known
# internal data model representation.
units:
# Map Otel metric unit 'By' to internal unit 'bytes'
# See below for a reference to available internal units.
By: bytes
Tunneling only configuration Copied
Note
It is possible to mix the following configuration with the standard configuration when tunneling only a few data types and processing others normally.
collectors:
- type: plugin
name: opentelemetry-otlp
className: OpenTelemetryCollector
# Optional. Default is 4317.
port: 4317
# Optional. gRPC inbound queue capacity. Default is 64.
queueCapacity: 64
# Optional. gRPC inbound queue processing threads. Default is 4.
# It is strongly recommended to configure at least as many threads as the total number of non store and forward
# tunnel endpoints in total.
threadPoolSize: 4
# Optional. Choose which data types to receive. Default is all data types.
# Disabling unused data types is a way of conserving resources.
receive:
# Optional. Receive metrics. Default is true.
metrics: true
# Optional. Receive logs. Default is true.
logs: true
# Optional. Receive traces. Default is true.
traces: true
# Mandatory for tunneling mode.
# If tunnel senders are specified for all data types then pure tunneling mode is active.
# If tunnel senders are not specified for all data types (and they are being received) then mixed mode is enabled.
tunnel:
# Metrics tunnel senders. Must refer to one or more valid tunnel senders specified below.
metrics:
- otel-sender
# Logs tunnel senders. Must refer to one or more valid tunnel senders specified below.
logs:
- otel-sender
# Traces tunnel senders. Must refer to one or more valid tunnel senders specified below.
traces:
- otel-sender
- another-otel-sender
# Mandatory for tunneling mode. Specify the list of tunnel senders.
tunnelSenders:
- name: otel-sender
# Optional. Reporting target hostname. Defaults to 'localhost'
hostname: localhost
# Optional. Reporting target port. Defaults to 4317.
port: 4317
# Optional. Switch compression on/off. Defaults to true (gzip).
useCompression: true
# Optional. gRPC call deadline in milliseconds. Defaults to 10000.
callDeadline: 10000
# Authentication credentials.
# Optional. Only required when username/password based auth is enabled on the target.
username: user
# Optional. Only required when username/password based auth is enabled on the target.
password: pass
# TLS configuration
# Optional. Defaults to false.
# When false (default), and there is no 'tls' section, default is to use
# 'insecure' TLS (i.e. we trust the server certificate presented during TLS handshake)
# over the more recent and supported TLS protocol out of TLSv1.3 and TLSv1.2.
# When true, overrides any TLS configuration and uses a plain text connection.
usePlainText: false
# Optional. Used only when usePlainText is false (the default).
# When not using plain text this section is only required when mTLS is desired,
# else the client trusts whatever public key it receives from the server during the
# TLS handshake.
tls:
# Optional. Used only for mTLS.
certFile: /path/to/cert.pem
# Optional. Used only for mTLS.
keyFile: /path/to/key.pem
# Optional. Used for mTLS and trusted server TLS (i.e. contains trusted server keys).
trustChainFile: /path/to/trust-chain.pem
# Optional. List of TLS protocols to enable. Defaults to TLSv1.3 and TLSv1.2 only.
protocols: [ TLSv1.3, TLSv1.2 ]
# Optional. Specify store and forward based delivery for at least once delivery.
storeAndForward:
# Mandatory. Root directory for store and forward persisted messages.
directory: ./run
# Optional. Store capacity. Defaults to 8192 (8 Ki messages).
capacity: 8192
# Optional. Max store file length in bytes. Defaults to 16777216 (16 MiB).
maxFileLength: 16777216
- name: another-otel-sender
hostname: some.host.com
port: 4317
Obcerv authentication Copied
The users admin
and ingestion-api
cannot be used while using Obcerv authentication. Create a new normal client and user via Keycloak instead.