]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
feat(dnsdist): Change OT Trace YAML config to a struct 16973/head
authorPieter Lexis <pieter.lexis@powerdns.com>
Thu, 12 Mar 2026 19:34:09 +0000 (20:34 +0100)
committerPieter Lexis <pieter.lexis@powerdns.com>
Thu, 12 Mar 2026 19:34:09 +0000 (20:34 +0100)
This'll allow us to add more trace feature configuration in the future
and it mirrors the `structured_logging` config.

pdns/dnsdistdist/dnsdist-settings-definitions.yml
pdns/dnsdistdist/docs/reference/ottrace.rst
pdns/dnsdistdist/docs/upgrade_guide.rst
regression-tests.dnsdist/test_OpenTelemetryTracing.py
regression-tests.dnsdist/test_OutgoingTLS.py

index 171f7f22d61ae59d0ae03e4648b4a0a0d0abfa5c..8ac8fc42b8ea8d766d8eed949ca54dece511f9c3 100644 (file)
@@ -1850,6 +1850,18 @@ structured_logging:
         Add a field "instance" to each log line with the value of ``general.server_id``.
       version_added: 2.1.0
 
+open_telemetry_tracing:
+  category: "logging.open_telemetry_tracing"
+  description: "OpenTelemetry Trace settings"
+  parameters:
+    - name: "enabled"
+      type: "bool"
+      default: "false"
+      runtime-configurable: true
+      lua-name: "setOpenTelemetryTracing"
+      internal-field-name: "d_openTelemetryTracing"
+      description: "Set to true to enable OpenTelemetry tracing. When true, the :func:`DNSQuestion:setTrace` makes the query store tracing information (see :doc:`OpenTelemetry tracing <ottrace>`). When this setting is false, no tracing information is gathered at all."
+
 logging:
   description: "Logging settings"
   parameters:
@@ -1924,12 +1936,8 @@ logging:
       type: "StructuredLoggingConfiguration"
       default: true
     - name: "open_telemetry_tracing"
-      type: "bool"
-      default: "false"
-      lua-name: "setOpenTelemetryTracing"
-      internal-field-name: "d_openTelemetryTracing"
-      runtime-configurable: true
-      description: "Set to true to enable OpenTelemetry tracing. When true, the :func:`DNSQuestion:setTrace` makes the query store tracing information (see :doc:`OpenTelemetry tracing <ottrace>`). When this setting is false, no tracing information is gathered at all."
+      type: "OpenTelemetryTracingConfiguration"
+      default: true
 
 general:
   description: "General settings"
index cb3b7e6926aaa919d214a8f72d029e158a1e62f8..a906f366f0ddde147a91e129e4e0bd2c19cc640c 100644 (file)
@@ -7,7 +7,7 @@ OpenTelemetry Tracing
 
 Since version 2.1.0, when :program:`dnsdist` is built with ProtoBuf support, sent messages (using e.g. :func:`RemoteLogResponseAction`) can contain `OpenTelemetry traces <https://opentelemetry.io/docs/concepts/signals/traces>`__ data.
 
-To enable tracing, use :func:`setOpenTelemetryTracing(true) <setOpenTelemetryTracing>` in your configuration, or ``logging.open_telemetry_tracing`` to ``true`` in your:ref:`YAML Logging Configuration <yaml-settings-LoggingConfiguration>`.
+To enable tracing, use :func:`setOpenTelemetryTracing(true) <setOpenTelemetryTracing>` in your configuration, or ``logging.open_telemetry_tracing.enabled`` to ``true`` in your :ref:`YAML Logging Configuration <yaml-settings-LoggingConfiguration>`.
 It is also possible to call :func:`setOpenTelemetryTracing` at runtime.
 Once enabled, Rules can be used to turn on tracing on a per-query basis.
 
@@ -27,7 +27,8 @@ When sending the trace in this way, the Protobuf message is essentially empty ap
 .. code-block:: yaml
 
    logging:
-     open_telemetry_tracing: true
+     open_telemetry_tracing:
+       enabled: true
    remote_logging:
      protobuf_loggers:
        - name: pblog
@@ -48,7 +49,8 @@ Should you only want to receive the trace, including a fully filled Protobuf mes
 .. code-block:: yaml
 
    logging:
-     open_telemetry_tracing: true
+     open_telemetry_tracing:
+       enabled: true
    remote_logging:
      protobuf_loggers:
        - name: pblog
index 473269ba10894f23c35271151fcb4afdd04372a1..3eb57d8c02c93639ac2468e88957baceb407756c 100644 (file)
@@ -1,6 +1,27 @@
 Upgrade Guide
 =============
 
+2.1.0-beta2 to 2.1.0
+--------------------
+
+The :doc:`reference/ottrace` YAML configuration has changed.
+It is now a structure with a single ``enabled`` field.
+
+Old:
+
+.. code-block:: yaml
+
+  logging:
+    open_telemetry_tracing: true
+
+New:
+
+.. code-block:: yaml
+
+  logging:
+    open_telemetry_tracing:
+      enabled: true
+
 2.0.x to 2.1.0
 --------------
 
index f3a24da22d60f286b7b86c1544c04ca544905687..1b5c6c22c76027970a028934d4234fafc4b7dc13 100644 (file)
@@ -220,7 +220,8 @@ class TestOpenTelemetryTracingBaseYAML(DNSDistOpenTelemetryProtobufBaseTest):
     ]
     _yaml_config_template = """---
 logging:
-  open_telemetry_tracing: true
+  open_telemetry_tracing:
+    enabled: true
 
 backends:
   - address: 127.0.0.1:%d
@@ -306,7 +307,8 @@ class TestOpenTelemetryTracingBaseDelayYAML(DNSDistOpenTelemetryProtobufBaseTest
     ]
     _yaml_config_template = """---
 logging:
-  open_telemetry_tracing: true
+  open_telemetry_tracing:
+    enabled: true
 
 backends:
   - address: 127.0.0.1:%d
@@ -397,7 +399,8 @@ class TestOpenTelemetryTracingUseIncomingYAML(DNSDistOpenTelemetryProtobufBaseTe
     ]
     _yaml_config_template = """---
 logging:
-  open_telemetry_tracing: true
+  open_telemetry_tracing:
+    enabled: true
 
 backends:
   - address: 127.0.0.1:%d
@@ -475,7 +478,8 @@ class DNSDistOpenTelemetryProtobufEnabledButUnsetYAML(
     _yaml_config_template = """---
 
 logging:
-  open_telemetry_tracing: true
+  open_telemetry_tracing:
+    enabled: true
 
 backends:
   - address: 127.0.0.1:%d
@@ -524,7 +528,8 @@ class DNSDistOpenTelemetryProtobufEnabledSetButTurnedOffYAML(
 
     _yaml_config_template = """---
 logging:
-  open_telemetry_tracing: true
+  open_telemetry_tracing:
+    enabled: true
 
 backends:
   - address: 127.0.0.1:%d
@@ -589,7 +594,8 @@ class TestOpenTelemetryTracingBaseYAMLIncludedRemoteLoggerDropped(
     ]
     _yaml_config_template = """---
 logging:
-  open_telemetry_tracing: true
+  open_telemetry_tracing:
+    enabled: true
 
 backends:
   - address: 127.0.0.1:%d
@@ -687,7 +693,8 @@ class TestOpenTelemetryTracingBaseYAMLIncludedRemoteLoggerSpoofed(
     ]
     _yaml_config_template = """---
 logging:
-  open_telemetry_tracing: true
+  open_telemetry_tracing:
+    enabled: true
 
 backends:
   - address: 127.0.0.1:%d
@@ -759,7 +766,8 @@ class TestOpenTelemetryTracingStripIncomingTraceParent(
     ]
     _yaml_config_template = """---
 logging:
-  open_telemetry_tracing: true
+  open_telemetry_tracing:
+    enabled: true
 
 backends:
   - address: 127.0.0.1:%d
@@ -866,7 +874,8 @@ class TestOpenTelemetryTracingSendTraceparentDownstream(
     ]
     _yaml_config_template = """---
 logging:
-  open_telemetry_tracing: true
+  open_telemetry_tracing:
+    enabled: true
 
 backends:
   - address: 127.0.0.1:%d
index 24f6ed4227eeaa8e6ae771e5546987afa71b2644..e5109b2624c056dc4baf27373019a1e0e50cab7b 100644 (file)
@@ -318,7 +318,8 @@ class TestOutgoingTLSGnuTLSWrongCertNameButNoCheck(DNSDistTest, OutgoingTLSTests
 class TestOutgoingTLSOpenSSLYamlTraceparent(TestOutgoingTLSOpenSSLYaml):
     _yaml_config_template = """---
 logging:
-  open_telemetry_tracing: true
+  open_telemetry_tracing:
+    enabled: true
 
 backends:
   - address: "127.0.0.1:%d"