Jaeger
v2.21.0Observability2026년 9월 14일
호환성을 깨뜨리는 API 및 설정 변경과 실험적 검색 및 스토리지 기능 확장을 담은 릴리스입니다. 정확성 수정과 의존성 업데이트도 포함됩니다.
조치 필요 (1)
breaking
searchdepth값 범위 제한searchdepth를 최대 10000으로 제한하고 음수 값을 거부합니다.
영향 확인 (4)
breaking
v1 http endpoints제거v1 http endpoints를 사용하는 경우에 적용됩니다.UI가 더 이상 호출하지 않는
v1 http endpoints를 제거했습니다.breaking
ai.를 선택적enable_mcp ai.설정 블록으로 변경mcp ai.를 설정하는 경우에 적용됩니다.enable_mcp ai.를 선택적enable_mcp ai.설정 블록으로 교체했습니다.mcp breaking지원하지 않는 Elasticsearch 설정 키 거부
적용 대상이 릴리스 노트에 명시되지 않았습니다.
지원하지 않는
elasticsearch config keys5개를 시작 시 거부합니다.breaking스토리지 백엔드가 처리할 수 없는 검색 거부
적용 대상이 릴리스 노트에 명시되지 않았습니다.
스토리지 백엔드가 처리할 수 없는 검색 요청을 거부합니다.
그 외 기록된 변경 64건 전체fixes 29 · additions 18 · value changes 10 · constraints 3 · renames 2 · defaults 1 · removals 1
fixes (29)
- * Fix(memory): match unset-status spans in error=false trace search ([@hharshhsaini](https://github.com/hharshhsaini) in [#9096](https://github.com/jaegertracing/jaeger/pull/9096))
- * Fix(anonymizer): register the gogo codec ([@DsThakurRawat](https://github.com/DsThakurRawat) in [#9540](https://github.com/jaegertracing/jaeger/pull/9540))
- * Fix(es): surface failed _msearch items instead of dropping traces silently ([@hharshhsaini](https://github.com/hharshhsaini) in [#9008](https://github.com/jaegertracing/jaeger/pull/9008))
- * Fix(mcp): use inclusive bound for critical path child search ([@Harizz076](https://github.com/Harizz076) in [#9174](https://github.com/jaegertracing/jaeger/pull/9174))
- * Fix(anonymizer): read the writer's zero-span capture without panicking ([@DsThakurRawat](https://github.com/DsThakurRawat) in [#9528](https://github.com/jaegertracing/jaeger/pull/9528))
- * Validate targetsamplespersecond is positive ([@Atul-Koundal](https://github.com/Atul-Koundal) in [#9379](https://github.com/jaegertracing/jaeger/pull/9379))
- * Fix(es-index-cleaner): quote index prefix in index name pattern ([@DsThakurRawat](https://github.com/DsThakurRawat) in [#9525](https://github.com/jaegertracing/jaeger/pull/9525))
- * Fix(mcp): respect search_depth when maxresults is unlimited (0) ([@shashankvarma499](https://github.com/shashankvarma499) in [#9517](https://github.com/jaegertracing/jaeger/pull/9517))
- * Es tracestore: set flags("none") on tag regexpquery (#9387) ([@SHIVANSH-ux-ys](https://github.com/SHIVANSH-ux-ys) in [#9454](https://github.com/jaegertracing/jaeger/pull/9454))
- * Fix(otel-demo): upgrade opensearch to 3.7.0 ([@jkowall](https://github.com/jkowall) in [#9397](https://github.com/jaegertracing/jaeger/pull/9397))
- * Fix(es): clear the span writer's service cache in purge ([@ysh-bot](https://github.com/ysh-bot) in [#9416](https://github.com/jaegertracing/jaeger/pull/9416))
- * Fix(telemetry): trace the jaeger_storage extension ([@ysh-bot](https://github.com/ysh-bot) in [#9414](https://github.com/jaegertracing/jaeger/pull/9414))
- * Fix(otel-demo): harden dashboards rollout diagnostics ([@jkowall](https://github.com/jkowall) in [#9393](https://github.com/jaegertracing/jaeger/pull/9393))
- * Fix(query): name server spans after the route when middleware copies the request ([@ysh-bot](https://github.com/ysh-bot) in [#9406](https://github.com/jaegertracing/jaeger/pull/9406))
- * Fix(es): bound service and operation query lookback ([@ekagra1602](https://github.com/ekagra1602) in [#9400](https://github.com/jaegertracing/jaeger/pull/9400))
- * Fix(mcp): cap read_skill output at max_read_file_size ([@CedricConday](https://github.com/CedricConday) in [#8993](https://github.com/jaegertracing/jaeger/pull/8993))
- * Fix(clickhouse): apply config defaults at unmarshal so explicit zeros survive ([@ysh-bot](https://github.com/ysh-bot) in [#9345](https://github.com/jaegertracing/jaeger/pull/9345))
- * Fix(otel-demo): expand opensearch volume online ([@jkowall](https://github.com/jkowall) in [#9315](https://github.com/jaegertracing/jaeger/pull/9315))
- * Fix(ai-gateway): preserve message boundaries when reading acp over websocket ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#9296](https://github.com/jaegertracing/jaeger/pull/9296))
- * Fix(memory): return copies of stored traces, not references ([@ysh-bot](https://github.com/ysh-bot) in [#9261](https://github.com/jaegertracing/jaeger/pull/9261))
- * Fix(es): return non-error traces for error=false search ([@hharshhsaini](https://github.com/hharshhsaini) in [#9210](https://github.com/jaegertracing/jaeger/pull/9210))
- * Fix(apiv3): return notfound for missing trace ([@ADITYA-CODE-SOURCE](https://github.com/ADITYA-CODE-SOURCE) in [#9151](https://github.com/jaegertracing/jaeger/pull/9151))
- * Fix(es): add spanid tie-breaker to trace-read search_after pagination ([@hharshhsaini](https://github.com/hharshhsaini) in [#9063](https://github.com/jaegertracing/jaeger/pull/9063))
- * Fix(elasticsearch): use post instead of get for _msearch requests ([@magic-peach](https://github.com/magic-peach) in [#9027](https://github.com/jaegertracing/jaeger/pull/9027))
- * Fix(es): restore gzip compression of elasticsearch request bodies ([@iammdzaidalam](https://github.com/iammdzaidalam) in [#9072](https://github.com/jaegertracing/jaeger/pull/9072))
- * Fix(query): let membership against an attribute reach the backend untyped ([@ysh-bot](https://github.com/ysh-bot) in [#9459](https://github.com/jaegertracing/jaeger/pull/9459))
- * Fix(es): pin the flags on the regexp query ([@DsThakurRawat](https://github.com/DsThakurRawat) in [#9383](https://github.com/jaegertracing/jaeger/pull/9383))
- * Fix(es): write the data stream @timestamp as an rfc 3339 string ([@Me-Priyank](https://github.com/Me-Priyank) in [#9363](https://github.com/jaegertracing/jaeger/pull/9363))
- * Fix(es): treat a bulk 409 as an idempotent success in the sync writer ([@Me-Priyank](https://github.com/Me-Priyank) in [#9113](https://github.com/jaegertracing/jaeger/pull/9113))
additions (18)
- * Feat(es): accept --feature-gates in esmapping-generator and es-rollover init ([@ysh-bot](https://github.com/ysh-bot) in [#9546](https://github.com/jaegertracing/jaeger/pull/9546))
- * Feat(es): add optional index.mapping.total_fields.limit to the span index template ([@zarna1parekh](https://github.com/zarna1parekh) in [#9523](https://github.com/jaegertracing/jaeger/pull/9523))
- * Feat(ai-gateway): send configurable headers on the acp agent handshake ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#9395](https://github.com/jaegertracing/jaeger/pull/9395))
- * Fix(otel-demo): allow explicit opensearch recovery waiver ([@jkowall](https://github.com/jkowall) in [#9313](https://github.com/jaegertracing/jaeger/pull/9313))
- * Fix(otel-demo): add tested opensearch recovery gate ([@jkowall](https://github.com/jkowall) in [#9306](https://github.com/jaegertracing/jaeger/pull/9306))
- * Feat(es): add optional poison-pill drop for synchronous writes ([@ysh-bot](https://github.com/ysh-bot) in [#9109](https://github.com/jaegertracing/jaeger/pull/9109))
- * Feat(es): warn on misaligned synchronous-write batch sizing ([@ysh-bot](https://github.com/ysh-bot) in [#9098](https://github.com/jaegertracing/jaeger/pull/9098))
- * Feat(es): index attribute values as numbers and order predicates on them ([@ysh-bot](https://github.com/ysh-bot) in [#9321](https://github.com/jaegertracing/jaeger/pull/9321))
- * Feat(ai-gateway): serve both mcp mounts from one server and reap its sessions ([@Nabil-Salah](https://github.com/Nabil-Salah) in [#9216](https://github.com/jaegertracing/jaeger/pull/9216))
- * Feat(es): render and create span data-stream composable templates ([@Me-Priyank](https://github.com/Me-Priyank) in [#8991](https://github.com/jaegertracing/jaeger/pull/8991))
- * Feat(es): implement the structured query filter ([@ysh-bot](https://github.com/ysh-bot) in [#9350](https://github.com/jaegertracing/jaeger/pull/9350))
- * Feat(query): convert a filter between the wire and the ast ([@ysh-bot](https://github.com/ysh-bot) in [#9355](https://github.com/jaegertracing/jaeger/pull/9355))
- * Feat(query): add a fluent builder for structured query filters ([@yurishkuro](https://github.com/yurishkuro) in [#9354](https://github.com/jaegertracing/jaeger/pull/9354))
- * Feat(jaegerquery): serve operator skills from ai.skills_dir under custom/ ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#9169](https://github.com/jaegertracing/jaeger/pull/9169))
- * Feat(ai-gateway): announce the session-scoped mcp endpoint to the sidecar over http ([@Nabil-Salah](https://github.com/Nabil-Salah) in [#9009](https://github.com/jaegertracing/jaeger/pull/9009))
- * Feat(es): add write_mode config to select synchronous elasticsearch writes ([@ysh-bot](https://github.com/ysh-bot) in [#9093](https://github.com/jaegertracing/jaeger/pull/9093))
- * Feat(query): add pluggable pre/post query interceptor extension point ([@ysh-bot](https://github.com/ysh-bot) in [#9024](https://github.com/jaegertracing/jaeger/pull/9024))
- serve a filter query in the shape the backend understands
value changes (10)
- * Feat(clickhouse): promote clickhouse storage feature gate to stable ([@ysh-bot](https://github.com/ysh-bot) in [#9058](https://github.com/jaegertracing/jaeger/pull/9058))
- * Feat(mcptools): add gen_ai.tool.call.arguments/result to the gateway's mcp tool-call span ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#9304](https://github.com/jaegertracing/jaeger/pull/9304))
- * Feat(storage): let remote storage report its search capabilities ([@ysh-bot](https://github.com/ysh-bot) in [#9269](https://github.com/jaegertracing/jaeger/pull/9269))
- * Feat(jaegerai): add gen_ai.tool.call.arguments/result to sidecar tool-call spans ([@SoumyaRaikwar](https://github.com/SoumyaRaikwar) in [#9011](https://github.com/jaegertracing/jaeger/pull/9011))
- * Feat(es): add deterministic content-hash _id for idempotent span writes ([@ysh-bot](https://github.com/ysh-bot) in [#9094](https://github.com/jaegertracing/jaeger/pull/9094))
- * Feat(query): return a context from query interceptor hooks ([@ysh-bot](https://github.com/ysh-bot) in [#9082](https://github.com/jaegertracing/jaeger/pull/9082))
- * Feat(query): show a query interceptor every predicate as a filter ([@ysh-bot](https://github.com/ysh-bot) in [#9360](https://github.com/jaegertracing/jaeger/pull/9360))
- * Feat(storage): carry the filter and its capabilities over remote storage ([@ysh-bot](https://github.com/ysh-bot) in [#9358](https://github.com/jaegertracing/jaeger/pull/9358))
- * Feat(storage): let a reader declare which filters it evaluates ([@ysh-bot](https://github.com/ysh-bot) in [#9356](https://github.com/jaegertracing/jaeger/pull/9356))
- * Chore(deps): update dependency prometheus-client to v0.26.0 ([@renovate[bot]](https://github.com/apps/renovate) in [#9501](https://github.com/jaegertracing/jaeger/pull/9501))
constraints (3)
- * Feat(mcp): let search_traces omit the service name ([@ysh-bot](https://github.com/ysh-bot) in [#9262](https://github.com/jaegertracing/jaeger/pull/9262))
- * Feat(storage): let backends declare that search can omit the service name ([@ysh-bot](https://github.com/ysh-bot) in [#9256](https://github.com/jaegertracing/jaeger/pull/9256))
- * Feat(query): accept a structured filter on api_v3 trace search ([@ysh-bot](https://github.com/ysh-bot) in [#9359](https://github.com/jaegertracing/jaeger/pull/9359))
renames (2)
- * Feat(featuregate): normalize Jaeger gate names ([@maindevhoon](https://github.com/maindevhoon) in [#9037](https://github.com/jaegertracing/jaeger/pull/9037))
- * Feat(es): rewire sniffing.enabled and log_level onto the esclient transport ([@ysh-bot](https://github.com/ysh-bot) in [#9077](https://github.com/jaegertracing/jaeger/pull/9077))
defaults (1)
- * Fix(query): default search_depth in api_v3 grpc handler ([@vyncint](https://github.com/vyncint) in [#9100](https://github.com/jaegertracing/jaeger/pull/9100))
removals (1)
- * Fix(storage): remove the duplicate otelgrpc handler on the storage client ([@ysh-bot](https://github.com/ysh-bot) in [#9417](https://github.com/jaegertracing/jaeger/pull/9417))
Jaeger 스택에 추가
조치가 필요한 릴리스가 나왔을 때 주간 메일로 알려드립니다. 이번 릴리스의 브레이킹 체인지 같은 것들입니다.