-
Notifications
You must be signed in to change notification settings - Fork 308
Implement otel support #7031
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Implement otel support #7031
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19534a3 to
df90419
Compare
df90419 to
12b9230
Compare
3c65237 to
63cf86b
Compare
- Skip redundant build in local tests job by reusing build artifacts - Reduce Awaitility timeouts (LONG: 300s→180s, MEDIUM: 75s→60s, POLL: 5s→2s) - Add ensureStrimziInstalled() with double-checked locking to avoid reinstalling - Add JUnit @tag annotations for test categorization: - SMOKE: basic smoke tests - KAFKA: Strimzi/Kafka tests - AUTH: Keycloak authentication tests - DATABASE: PostgreSQL/MySQL tests - FEATURE: general feature tests - SLOW: long-running tests This enables selective test execution via Maven (e.g., -Dgroups=smoke) and reduces overall CI execution time by an estimated 10-20 minutes.
63cf86b to
22571aa
Compare
EricWittmann
previously approved these changes
Jan 7, 2026
Member
EricWittmann
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very thorough! Docs are updated, docker compose example, even Operator enhancement. 👍
4ee6c93 to
0a44017
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Add comprehensive OpenTelemetry (OTel) support to Apicurio Registry for unified observability including distributed tracing, metrics export via OTLP, and log correlation with trace context.
Fixes #6939
Root Cause
Apicurio Registry lacked native OpenTelemetry support for distributed tracing and observability. While Prometheus metrics were available via Micrometer, there was no built-in support for:
This made it difficult to debug performance issues and trace requests across microservice deployments.
Changes
Core Application (
app/)pom.xml: Addedquarkus-opentelemetrydependencyapplication.properties: Added OpenTelemetry configuration (disabled by default)application-prod.properties: Added production profile with 10% trace sampling and JSON loggingCustom Instrumentation
StorageTracingInterceptor.java: New interceptor that creates OpenTelemetry spans for storage layer operations using@StorageMetricsApplybindingTracingFilter.java: New JAX-RS filter that enriches REST API spans with Apicurio-specific attributes (groupId, artifactId, version)OTelMetricsProvider.java: New provider for custom OpenTelemetry metrics (artifacts created/deleted, versions, schema validations, rule evaluations, search requests)Operator (
operator/)OTelSpec.java: New CRD spec class with fields:enabled,endpoint,protocol,traceSamplingRatioAppSpec.java: Addedotelfield to expose OpenTelemetry configuration in CRDEnvironmentVariables.java: Added OpenTelemetry environment variable constantsOTel.java: New feature class to configure environment variables based on CR specAppDeploymentResource.java: Wired up OTel feature during reconciliationDocumentation
assembly-configuring-the-registry.adoc: Added new section "Configuring observability with OpenTelemetry"ref-registry-all-configs.adoc: Added 11 OpenTelemetry configuration options to observability sectionproc-registry-observability-otel.adoc: New operator documentation for OTel configurationapicurioregistry3_otel_cr.yaml: Example CR with OpenTelemetry configurationDocker Compose Example
distro/docker-compose/in-memory-with-observability/: New example with complete observability stackdocker-compose.yml: Apicurio Registry + Jaeger + Prometheus + Grafanaprometheus.yml: Prometheus scrape configurationgrafana/provisioning/datasources/datasources.yml: Pre-configured datasourcesREADME.md: Usage documentationTest plan
./mvnw clean install -pl app -am -DskipTestscd operator && ../mvnw clean compile -DskipTestsjar tf app/target/apicurio-registry-app-*.jar | grep -E "(StorageTracingInterceptor|TracingFilter|OTelMetricsProvider)"unzip -p app/target/apicurio-registry-app-*.jar application.properties | grep otelcd distro/docker-compose/in-memory-with-observability && docker-compose up -dstorage_method_call_secondsQUARKUS_OTEL_ENABLED=falseQUARKUS_OTEL_ENABLED=true/q/metricsstill worksspec.app.otel.enabled: trueand verify environment variables are set