ISTA 2026Fest Edition

Sofia Event Center

Tickets on sale

Latest InsightISTA 2026 adds Nikolay Avramov, who works on the test suites that still have to run in a year

EngineeringPattern Update

OpenTelemetry Java Hits Full Stability: Logs Join Traces and Metrics as Production-Ready

OpenTelemetry Java just declared logs stable, completing the three-pillar observability vision. Teams can finally ditch fragmented collection stacks and consolidate on a single instrumentation layer.

The OpenTelemetry Java SDK now marks all three telemetry pillars as stable. Logs, the last holdout, graduated from experimental status in the latest release cycle, completing a multi-year journey toward a unified observability API. For teams still running separate collection stacks for metrics, traces, and logs, the consolidation window just opened.

In Brief

What: OpenTelemetry Java has declared its Logs API/SDK stable, joining Traces and Metrics at production-ready status. This completes the “three pillars” vision for the most widely deployed JVM instrumentation framework.

Why it matters: Teams can now standardize on a single instrumentation layer across all telemetry types, eliminating the operational overhead of maintaining parallel collection pipelines and reducing vendor lock-in.

What it means for Bulgaria and the region: Bulgarian engineering teams, particularly those at ISTA ecosystem companies running JVM workloads, can begin consolidating observability stacks this quarter. The timing aligns with Q3 budget cycles for infrastructure modernization.

The ecosystem companies behind ISTA 2026, including Experian, Accenture, Infragistics, and Merkle, will be presenting on exactly these observability patterns this September; speaker applications remain open until May 31.

Pattern Name: Unified Telemetry Collection via OpenTelemetry
Why This Is Important: Full stability across all three pillars removes the last technical excuse for running fragmented observability stacks, making consolidation a planning decision rather than a risk assessment.
Domain: DevOps/SRE/Platform
Who Should Care: Backend / DevOps/SRE / Manager
Level: Intermediate
Evidence Type: Release

The Problem

Production incident response in JVM environments has long suffered from a fragmentation problem. Traces live in Jaeger or Zipkin. Metrics flow through Prometheus or Datadog. Logs scatter across Elasticsearch, Splunk, or CloudWatch. Each system has its own agent, its own configuration language, its own failure modes.

The operational cost compounds quickly. Three collection pipelines mean three sets of credentials to rotate, three upgrade cycles to coordinate, three potential points of failure during an outage. When the pager fires at 3 AM, engineers waste precious minutes correlating a trace ID from one system with a log entry in another and a metric spike in a third.

OpenTelemetry promised to fix this by providing a single, vendor-neutral instrumentation layer. The catch: until now, the Java implementation only offered stable APIs for traces and metrics. Logs remained experimental, which meant production teams either accepted the risk of breaking changes or continued running a separate logging pipeline. That excuse just expired.

What Changed This Week

The OpenTelemetry Java documentation now shows all three signal types at Stable status. The status table reads:

| Traces | Metrics | Logs |
| — | — | — |
| Stable | Stable | Stable |

This is not a minor version bump. Stable status in OpenTelemetry carries specific guarantees: no breaking API changes without a major version increment, backward compatibility for at least one year, and a commitment to long-term maintenance. For logs, this means the LogRecordBuilder API, the LogRecordProcessor interface, and the OTLP (OpenTelemetry Protocol) log export format are now safe for production adoption.

The release also includes updates to the instrumentation ecosystem, with the Java agent now supporting automatic log correlation out of the box. Trace context propagation into log records happens without manual code changes for applications using common logging frameworks like Log4j2, Logback, and java.util.logging.

Why Now

Three factors converged to make this the right moment for logs stability.

First, the OTLP specification for logs reached maturity. The wire format and semantic conventions stabilized across all OpenTelemetry language implementations, ensuring that a log record exported from a Java service can be processed by any OTLP-compatible backend without translation layers.

Second, the major observability vendors completed their OTLP ingestion support. Datadog, New Relic, Grafana Cloud, and the hyperscaler-native tools (AWS CloudWatch, Google Cloud Logging, Azure Monitor) all accept OTLP logs natively. The “where do I send this?” question has a consistent answer.

Third, the Kubernetes ecosystem standardized on OpenTelemetry as the default instrumentation layer. The CNCF’s recent case studies show production deployments at scale, and the operator patterns for auto-instrumentation have matured. Teams adopting OpenTelemetry for new services no longer face the “will this work?” uncertainty.

The New Practice

The shift is straightforward in principle: replace your existing logging pipeline with OpenTelemetry’s log bridge, configure a single OTLP exporter, and let the SDK handle correlation.

In practice, the migration path depends on your current logging framework. For Log4j2 users, the opentelemetry-log4j-appender-2.17 artifact provides a drop-in appender that forwards log records to the OpenTelemetry SDK. Logback users have an equivalent opentelemetry-logback-appender-1.0 artifact. Both automatically inject trace and span IDs into log records when a trace context exists.

The key architectural change is moving from “logs as files” to “logs as telemetry signals.” Instead of writing to disk and relying on a sidecar agent (Fluentd, Filebeat, Vector) to ship logs to a backend, the application exports logs directly via OTLP. This eliminates the file-based intermediary, reduces latency for log availability, and removes a common failure mode where disk pressure causes log loss.

For teams not ready for full migration, the bridge pattern allows gradual adoption. Continue writing to your existing logging framework while the OpenTelemetry appender duplicates records to the OTLP pipeline. Run both in parallel, validate correlation, then cut over.

Tooling Implications

Winners:

The OpenTelemetry Collector becomes the single aggregation point for all telemetry. Teams can run one collector deployment instead of three separate agents. The collector’s processor pipeline (filtering, sampling, enrichment) applies uniformly across signal types.

Grafana’s LGTM stack (Loki, Grafana, Tempo, Mimir) gains a cleaner integration story. All four components accept OTLP natively, and the Grafana UI’s correlation features work best when all signals share the same trace context.

Losers:

Dedicated log shippers (Fluentd, Filebeat, Logstash) lose their primary use case in greenfield deployments. They remain relevant for legacy systems and non-application logs (system logs, audit logs from infrastructure), but the application logging market shifts toward direct OTLP export.

Scale reveals itself not in volume, but in the speed of correlation.

Proprietary instrumentation SDKs from observability vendors face pressure. Why maintain a vendor-specific SDK when OpenTelemetry provides the same functionality with portability? Expect vendors to deprecate their custom SDKs in favor of OTLP ingestion.

Version Notes:

The stable logs API requires OpenTelemetry Java SDK version 1.40.0 or later. The Java agent version 2.5.0 includes the stable log bridge. Earlier versions may work but carry no stability guarantees.

Evidence

The stability declaration comes directly from the OpenTelemetry Java documentation, which serves as the authoritative source for API status. The project’s release process requires consensus from maintainers and a demonstrated track record of API stability before graduating from experimental.

Supporting evidence includes the CNCF’s published case studies showing OpenTelemetry adoption at scale. The Snow Corp case study documents a production deployment handling millions of spans per second with sub-second correlation latency. While that study focused on traces, the architectural patterns apply to the unified telemetry model.

The OTLP specification itself, maintained in the opentelemetry-proto repository, shows the logs data model has been stable since version 1.0.0 of the protocol. The Java SDK’s logs implementation conforms to this specification.

Failure Modes

Cardinality explosion in log attributes. OpenTelemetry encourages structured logging with attributes, but unbounded attribute values (user IDs, request paths, error messages) can overwhelm backends designed for low-cardinality metrics. The fix: define an attribute allowlist and use the SDK’s attribute limits configuration.

Memory pressure from buffering. The OTLP exporter batches records before transmission. Under high log volume, the in-memory buffer can grow large enough to trigger garbage collection pauses or OOM kills. Configure otel.blrp.max.queue.size and otel.blrp.max.export.batch.size based on your heap constraints.

Correlation gaps during partial rollouts. If only some services emit OpenTelemetry logs while others use legacy pipelines, trace correlation breaks at service boundaries. The logs from the legacy service won’t contain trace context. Plan for full service-mesh adoption or accept correlation gaps during migration.

Backend ingestion rate limits. Observability vendors price by data volume. Switching from sampled file-based logs to real-time OTLP export can dramatically increase ingestion rates. Run a shadow pipeline to measure actual volume before cutting over.

Metrics to Watch

Log-to-trace correlation rate: Percentage of log records that contain valid trace context. Target: 95% or higher for instrumented services. Below 80% indicates instrumentation gaps or context propagation failures.

Export latency p99: Time from log record creation to successful OTLP export acknowledgment. Target: under 500ms for real-time alerting use cases. Spikes indicate network issues or backend throttling.

Dropped records count: The SDK exposes metrics for records dropped due to buffer overflow or export failures. Any non-zero value in production warrants investigation.

Collector resource utilization: CPU and memory consumption of the OpenTelemetry Collector. A unified pipeline handles more data; size collector deployments accordingly.

Do This Next Sprint

  1. Audit your current logging stack. List every component: logging framework, appenders, shippers, backends. Identify which services still use file-based log shipping.
  2. Add the OpenTelemetry log appender to one non-critical service. For Log4j2: add opentelemetry-log4j-appender-2.17 to your dependencies and configure the appender in log4j2.xml. Verify logs appear in your OTLP backend with trace context.
  3. Configure attribute limits. In your SDK configuration, set otel.attribute.value.length.limit=256 and otel.attribute.count.limit=128 to prevent cardinality explosion.
  4. Run a shadow pipeline for one week. Export logs via OTLP while maintaining your existing pipeline. Compare volume, latency, and correlation rates.
  5. Document the migration path. Write a runbook for your team covering: dependency changes, configuration updates, rollback procedures, and success criteria.

What This Means for Bulgaria

Bulgarian engineering teams, particularly those at Sofia-based offices of multinational companies, should treat this as a Q3 infrastructure initiative. The timing aligns with budget cycles, and the stability guarantee removes the “wait for maturity” objection.

For teams interviewing at ISTA ecosystem companies (Experian, Accenture, SAP), ask about their observability stack consolidation plans. Companies still running three separate pipelines face technical debt that will land on someone’s sprint backlog. Understanding their OpenTelemetry adoption status reveals infrastructure maturity.

Local cloud providers and managed service vendors should evaluate OTLP ingestion support. Bulgarian startups building observability tooling have a window to differentiate by offering native OTLP support before the hyperscalers dominate the regional market.

Compliance teams at Bulgarian financial services firms should note that unified telemetry simplifies audit trails. A single collection pipeline with consistent retention policies is easier to document for BNB (Bulgarian National Bank) regulatory reviews than three separate systems with different data lifecycles.

Dig Deeper

  • OpenTelemetry Java Getting Started Guide - Step-by-step tutorial for instrumenting a Java application with traces, metrics, and logs in under 30 minutes. Includes working code samples.
  • OpenTelemetry Collector Configuration - Reference documentation for the collector’s receiver, processor, and exporter pipelines. Essential reading before deploying a unified telemetry aggregation layer.
  • Grafana LGTM Stack Tutorial - Hands-on guide for deploying Loki, Grafana, Tempo, and Mimir with OTLP ingestion. Useful for teams evaluating open-source backends.
  • OpenTelemetry Semantic Conventions for Logs - The specification defining standard attribute names and values for log records. Required reading for teams designing structured logging schemas.

Many of the patterns covered in the Content Hub will take center stage at ISTA Conference this September, where practitioners and tech leaders discuss them live, debate the trade-offs, and put them in the context of the latest industry shifts. Stay tuned for the program announcement.

ISTA 2026 · 15 October 2026

One day in October. A year of engineering knowledge.