Add Zipkin Virtual GenAI e2e test with zipkin_json exporter#13784
Merged
Add Zipkin Virtual GenAI e2e test with zipkin_json exporter#13784
Conversation
Use zipkin_json exporter instead of zipkin (proto-http) to avoid irreconcilable protobuf dependency conflict: - opentelemetry-exporter-zipkin-proto-http requires protobuf~=3.12 (<4.0) - opentelemetry-proto requires protobuf>=5.0 Remove opentelemetry-exporter-zipkin and opentelemetry-exporter-zipkin-proto-http from Dockerfile, keep opentelemetry-exporter-zipkin-json for clean single pip install with no dependency conflicts.
Member
Author
|
@peachisai This should work, let's see. |
kezhenxu94
approved these changes
Apr 2, 2026
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
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.
Add Zipkin Virtual GenAI e2e test
This is an alternative to #13781 (cc @peachisai). It adds the same Zipkin Virtual GenAI e2e test but fixes the pip dependency conflict properly.
Root cause: why single vs multiple
pip installmattersThe original PR #13781 used separate
pip installcommands (one per package) to work around a build failure. Here's why:Single
pip install(all packages in one command) — pip resolves all dependency constraints simultaneously and fails withResolutionImpossiblebecause:opentelemetry-exporter-zipkin-proto-httprequiresprotobuf ~= 3.12(i.e.,>=3.12, <4.0)opentelemetry-proto(pulled byopentelemetry-exporter-otlp-proto-grpc) requiresprotobuf >= 5.0These two constraints are mathematically irreconcilable — no protobuf version can satisfy both.
Multiple
pip install(separate commands) — pip resolves each package independently, and later installs silently overwrite transitive dependencies from earlier installs. This "succeeds" but creates a broken environment wherepip checkreports violations:opentelemetry-protorequiresprotobuf>=5.0, butprotobuf==3.20.3is installedgoogleapis-common-protosrequiresprotobuf>=4.25.8, butprotobuf==3.20.3is installedThe split install only works at runtime by accident — the zipkin code path doesn't import from
opentelemetry-proto.Fix
Use
OTEL_TRACES_EXPORTER=zipkin_jsoninstead ofzipkin. Thezipkinentry point maps toopentelemetry-exporter-zipkin-proto-http(protobuf format), whilezipkin_jsonmaps toopentelemetry-exporter-zipkin-json(JSON format) which has no protobuf dependency.opentelemetry-exporter-zipkin(meta-package) andopentelemetry-exporter-zipkin-proto-httpfrom Dockerfileopentelemetry-exporter-zipkin-json— singlepip install, clean dependencies,pip checkpasses/api/v2/spansendpointLocally verified end-to-end: OAP with BanyanDB receives spans via
zipkin_json, createsVIRTUAL_GENAIservice (openai), registers model instance (gpt-4.1-mini-2025-04-14), and populates all GenAI metrics (CPM, SLA, response time, token counts, estimated cost).CHANGESlog.