opentelemetry-collector/exporter/debugexporter
Pablo Baeyens 183d7edf9f
[extension] Error out if passed extension.Settings has incorrect type (#12305)
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue.
Ex. Adding a feature - Explain what this achieves.-->
#### Description

Explicitly error out if the passed `component.ID` does not have a
matching `component.Type`

<!-- Issue number if applicable -->
#### Link to tracking issue
Updates #12221
2025-02-07 20:15:42 +00:00
..
internal [DebugExporter] Add EventName from LogRecord to output (#11967) 2025-01-09 21:13:13 +00:00
testdata [exporter/debug] add option `use_internal_logger` (#10227) 2024-06-27 18:39:09 +02:00
Makefile add debug exporter, move code from logging exporter into internal (#8378) 2023-09-15 13:49:24 -07:00
README.md [chore] add githubgen to enhance codeowners and issue templates (#11756) 2025-02-06 10:31:36 +00:00
config.go [chore]: enable gofumpt linter in connector, consumer, exporter, extension and featuregate (#11854) 2024-12-12 19:25:06 +00:00
config_test.go [chore]: enable whitespace linter (#11579) 2024-10-31 12:15:54 -07:00
doc.go [chore] update debug exporter to use mdatagen (#9178) 2023-12-22 11:13:00 -08:00
exporter.go [debugexporter] Add support for profiles signal (#11494) 2024-10-23 08:22:46 -07:00
exporter_test.go [debugexporter] Add support for profiles signal (#11494) 2024-10-23 08:22:46 -07:00
factory.go Deprecate exporterhelperprofiles module in favor of xexporterhelper (#11890) 2024-12-14 04:39:20 +00:00
factory_test.go Deprecate exporterprofiles module in favor of xexporter (#11885) 2024-12-13 21:56:43 +00:00
generated_component_test.go [extension] Error out if passed extension.Settings has incorrect type (#12305) 2025-02-07 20:15:42 +00:00
generated_package_test.go [mdatagen] generate goleak package test (#9959) 2024-04-17 13:10:34 -07:00
go.mod Update module google.golang.org/protobuf to v1.36.5 (#12314) 2025-02-06 19:25:08 +00:00
go.sum Update module google.golang.org/protobuf to v1.36.5 (#12314) 2025-02-06 19:25:08 +00:00
metadata.yaml [chore] add githubgen to enhance codeowners and issue templates (#11756) 2025-02-06 10:31:36 +00:00

README.md

Debug Exporter

Status
Stability development: traces, metrics, logs, profiles
Distributions core, contrib, k8s
Warnings Unstable Output Format
Issues Open issues Closed issues
Code Owners @andrzej-stencel

Outputs telemetry data to the console for debugging purposes.

See also the Troubleshooting document for examples on using this exporter.

Getting Started

The following settings are optional:

  • verbosity (default = basic): the verbosity of the debug exporter (detailed|normal|basic). When set to detailed, pipeline data is verbosely logged.
  • sampling_initial (default = 2): number of messages initially logged each second.
  • sampling_thereafter (default = 1): sampling rate after the initial messages are logged (every Mth message is logged). The default value of 1 means that sampling is disabled. To enable sampling, change sampling_thereafter to a value higher than 1. Refer to Zap docs for more details on how sampling parameters impact number of messages.
  • use_internal_logger (default = true): uses the collector's internal logger for output. See below for description.

Example configuration:

exporters:
  debug:
    verbosity: detailed
    sampling_initial: 5
    sampling_thereafter: 200

Verbosity levels

The following subsections describe the output from the exporter depending on the configured verbosity level - basic, normal and detailed. The default verbosity level is basic.

Basic verbosity

With verbosity: basic, the exporter outputs a single-line summary of received data with a total count of telemetry records for every batch of received logs, metrics or traces.

Here's an example output:

2023-11-10T22:49:03.510-0600    info    TracesExporter  {"kind": "exporter", "data_type": "traces", "name": "debug", "resource spans": 1, "spans": 2}

Normal verbosity

With verbosity: normal, the exporter outputs about one line for each telemetry record. The "one line per telemetry record" is not a strict rule. For example, logs with multiline body will be output as multiple lines.

Here's an example output:

2024-06-24T15:18:58.559+0200    info    TracesExporter  {"kind": "exporter", "data_type": "traces", "name": "debug", "resource spans": 1, "spans": 2}
2024-06-24T15:18:58.559+0200    info    okey-dokey-0 4bdc558f0f0650e3ccaac8f3ae133954 8b69459f015c164b net.peer.ip=1.2.3.4 peer.service=telemetrygen-client
lets-go 4bdc558f0f0650e3ccaac8f3ae133954 8820ee5366817639 net.peer.ip=1.2.3.4 peer.service=telemetrygen-server
        {"kind": "exporter", "data_type": "traces", "name": "debug"}

Detailed verbosity

With verbosity: detailed, the exporter outputs all details of every telemetry record, typically writing multiple lines for every telemetry record.

Here's an example output:

2023-11-10T22:49:03.510-0600    info    TracesExporter  {"kind": "exporter", "data_type": "traces", "name": "debug", "resource spans": 1, "spans": 2}
2023-11-10T22:49:03.510-0600    info    ResourceSpans #0
Resource SchemaURL: https://opentelemetry.io/schemas/1.4.0
Resource attributes:
     -> service.name: Str(telemetrygen)
ScopeSpans #0
ScopeSpans SchemaURL:
InstrumentationScope telemetrygen
Span #0
    Trace ID       : 3bde5d3ee82303571bba6e1136781fe4
    Parent ID      : 5e9dcf9bac4acc1f
    ID             : 2cf3ef2899aba35c
    Name           : okey-dokey
    Kind           : Server
    Start time     : 2023-11-11 04:49:03.509369393 +0000 UTC
    End time       : 2023-11-11 04:49:03.50949377 +0000 UTC
    Status code    : Unset
    Status message :
Attributes:
     -> net.peer.ip: Str(1.2.3.4)
     -> peer.service: Str(telemetrygen-client)
Span #1
    Trace ID       : 3bde5d3ee82303571bba6e1136781fe4
    Parent ID      :
    ID             : 5e9dcf9bac4acc1f
    Name           : lets-go
    Kind           : Client
    Start time     : 2023-11-11 04:49:03.50935117 +0000 UTC
    End time       : 2023-11-11 04:49:03.50949377 +0000 UTC
    Status code    : Unset
    Status message :
Attributes:
     -> net.peer.ip: Str(1.2.3.4)
     -> peer.service: Str(telemetrygen-server)
        {"kind": "exporter", "data_type": "traces", "name": "debug"}

Using the collector's internal logger

When use_internal_logger is set to true (the default), the exporter uses the collector's internal logger for output. This comes with the following consequences:

  • The output from the exporter may be annotated by additional output from the collector's logger.
  • The output from the exporter is affected by the collector's logging configuration specified in service::telemetry::logs.

When use_internal_logger is set to false, the exporter does not use the collector's internal logger. Changing the values in service::telemetry::logs has no effect on the exporter's output. The exporter's output is sent to stdout.

Warnings

  • Unstable Output Format: The output formats for all verbosity levels is not guaranteed and may be changed at any time without a breaking change.