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:

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:

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.

Warning

In some circumstances, gRPC emits UNAVAILABLE due to transport-related issues, such as bad TLS/SSL handshake. This is a non-retryable error but is outside the control of this plugin.
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:

Specifically, the following transport layer security modes are supported:

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:

  1. 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 ]
  1. In Dynamic entities > Mapping, configure the mappings to be used. For an example mapping, see Mappings.
  2. If you will be monitoring logs, set up an FKM sampler. For more information, see File Keyword Monitor Configuration.
  3. 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:

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:

  1. Navigate to your OpenTelemetry mapping in Dynamic entities > Mappings.
  2. 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:

open-telemetry-traces-dataview

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:

open-telemetry-metrics-dataview

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:

open-telemetry-logs-dataview

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 valid tunnelSender 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.

["Geneos"] ["Geneos > Netprobe"] ["User Guide"]

Was this topic helpful?