Skip to main content

OTel Properties Reference

This page lists the OpenTelemetry Java agent properties used to instrument an Ignition gateway. Properties appear in otel-agent.properties on bare-metal installs or as -Dotel.* JVM arguments in the Docker Compose command: block.

For wiring instructions see Gateway Telemetry.

Identity and resource attributes

PropertyExample valueDescription
otel.service.namemy-gatewayThe service name attached to every metric, trace, and log record. Appears as the service.name resource attribute. Should match the gateway name for easy correlation.
otel.resource.attributesgateway=gw1,environment=Production,ignition.version=8.3.6Comma-separated key=value pairs added to every signal as resource attributes. Useful for filtering in Grafana across multiple gateways or environments.

Exporter protocol

PropertyExample valueDescription
otel.exporter.otlp.protocolhttp/protobufWire protocol for OTLP export. http/protobuf sends to port 4318. Use grpc for port 4317. This is the default protocol for all signal types unless overridden per-signal below.

Agent logging

PropertyExample valueDescription
otel.javaagent.loggingnoneControls the agent's own log output. none silences startup messages; simple enables them for debugging. Does not affect Ignition's application log forwarding.

Metrics

PropertyExample valueDescription
otel.metrics.exporterotlpMetrics export backend. Use otlp to push over OTLP. The gateway does not expose a native Prometheus endpoint; set prometheus here only if the agent should additionally stand up its own /metrics scrape endpoint (used in the Kubernetes in-cluster pattern on port 9000).
otel.exporter.otlp.metrics.protocolhttp/protobufPer-signal protocol for metrics. Redundant with the global otel.exporter.otlp.protocol when the values match (as in the examples here); it only matters if you want a different protocol for metrics than for the other signals.
otel.exporter.otlp.metrics.endpointhttp://alloy:4318/v1/metricsOTLP endpoint for metrics.
otel.metric.export.interval5000Milliseconds between metric export cycles. 5000 ms (5 s) is a good balance between resolution and collector load.
otel.instrumentation.dropwizard-metrics.enabledtrueRequired for Ignition metrics. Ignition's internal performance counters use the Dropwizard/Codahale metrics library. Without this flag the most useful Ignition-specific gauges (tag write throughput, Perspective sessions, thread pool stats) are not captured.
otel.instrumentation.jdbc-datasource.enabledtrueEnables per-connection-pool metrics for every database connection configured in the Ignition gateway (query latency, pool utilization, connection counts).
otel.instrumentation.runtime-telemetry.enabledfalseJVM runtime telemetry (generic). Disabled when Dropwizard instrumentation is active to avoid duplicate JVM metric series.
otel.instrumentation.runtime-telemetry-java17.enabledfalseJava 17 JVM telemetry variant. Disabled for the same deduplication reason as above.

Logs

PropertyExample valueDescription
otel.logs.exporterotlpLog export backend.
otel.exporter.otlp.logs.endpointhttp://alloy:4318/v1/logsOTLP endpoint for logs.
otel.instrumentation.logback-appender.enabledtrueCaptures every log entry written through Ignition's Logback appender and forwards it as an OTLP log record. This is the primary source of gateway log data in Loki.
otel.instrumentation.logback-mdc.enabledtrueIncludes Logback MDC fields (such as trace ID and span ID) in forwarded log records, enabling trace-to-log correlation in Grafana.
otel.instrumentation.logback-appender.experimental.capture-mdc-attributes*Captures all MDC attributes as log record attributes. The * wildcard captures everything; narrow to specific keys if cardinality is a concern.

Traces

PropertyExample valueDescription
otel.traces.exporterotlpTrace export backend.
otel.exporter.otlp.traces.protocolhttp/protobufPer-signal protocol for traces. Redundant with the global otel.exporter.otlp.protocol when the values match (as in the examples here); it only matters if you want a different protocol for traces than for the other signals.
otel.exporter.otlp.traces.endpointhttp://alloy:4318/v1/tracesOTLP endpoint for traces.

Manual method instrumentation

PropertyExample valueDescription
otel.instrumentation.methods.includecom.inductiveautomation.ignition.gateway.tags.managed.ManagedTagProvider[browseTagsAsync,readAsync]Semicolon-separated list of FullyQualifiedClassName[method1,method2] entries. Adds spans for specific internal Ignition methods that are not instrumented by default. Useful for tracing tag read/write paths. See the comment block in otel-agent.properties for a full example targeting the tag provider stack.

Pyroscope profiling (optional)

The Pyroscope integration requires the pyroscope-otel.jar extension JAR alongside the main agent. These properties are set as environment variables (not in otel-agent.properties) when using the extension:

Environment variableDescription
OTEL_JAVAAGENT_EXTENSIONSPath to pyroscope-otel.jar. Activates the Pyroscope OTel bridge.
PYROSCOPE_SERVER_ADDRESSAddress of the Pyroscope server (e.g. http://pyroscope:4040).
PYROSCOPE_APPLICATION_NAMEApplication name label in Pyroscope, typically matches the gateway name.
PYROSCOPE_FORMATProfile format. jfr is recommended for the Grafana Pyroscope datasource.

Profiling is a separate concern from the core metrics/traces/logs pipeline and is covered as a future topic in this pillar.