Skip to content

feat: emit argus-unique diagnostics over OTLP for Prometheus parity#263

Merged
rlaope merged 1 commit into
masterfrom
feat/otlp-argus-unique-parity
May 29, 2026
Merged

feat: emit argus-unique diagnostics over OTLP for Prometheus parity#263
rlaope merged 1 commit into
masterfrom
feat/otlp-argus-unique-parity

Conversation

@rlaope
Copy link
Copy Markdown
Owner

@rlaope rlaope commented May 29, 2026

What

Follow-up to the #262 code review. Several argus-unique series (no OTel semconv equivalent) shipped on the Prometheus scrape but were missing from the OTLP export — so an operator moving from Prometheus scrape to OTLP push silently lost leak detection and GC-rate diagnostics.

This adds the scalar argus-unique series to OtlpJsonBuilder, in parity with PrometheusMetricsCollector and with matching values/units:

  • argus_gc_pause_time_seconds_avg, argus_gc_overhead_warning
  • argus_gc_allocation_rate_kbps, argus_gc_promotion_rate_kbps
  • argus_gc_leak_suspected, argus_gc_leak_confidence
  • argus_heap_usage_ratio
  • argus_metaspace_reserved_bytes
  • argus_carrier_threads_virtual_handled_total

These have no semconv equivalent, so they are always emitted (not gated by argus.metrics.legacyNames). New test otlp_emits_argus_unique_diagnostics_regardless_of_legacy_flag asserts they ship even when legacyNames=false.

Intentionally still Prometheus-only (documented, not a regression)

  • Legacy argus_gc_pause_seconds_* histogram — the OTLP path already carries the semconv jvm.gc.duration histogram as the equivalent; duplicating the legacy histogram over OTLP would contradict the legacyNames design.
  • Label-dimensioned breakdown seriesargus_gc_pause_breakdown_seconds_total, argus_gc_events_breakdown_total, argus_allocation_class_bytes, argus_profiling_method_samples, argus_contention_hotspot_events. These need per-series OTLP attribute encoding (the current OTLP helpers are scalar gauges/sums); a separate, larger change.

After this PR the only Prometheus↔OTLP series gap is exactly those two intentional categories.

Verification

./gradlew :argus-server:testBUILD SUCCESSFUL (OtlpJsonBuilderMetricsTest 8/8). Commit -s, no Co-Authored-By.

🤖 Generated with Claude Code

…metheus parity

The code review on #262 surfaced that several argus-unique series (no OTel
semconv equivalent) shipped on the Prometheus scrape but were absent from the
OTLP export — an operator switching from scrape to OTLP silently lost leak
detection and GC-rate diagnostics.

Add the scalar argus-unique series to OtlpJsonBuilder, in parity with
PrometheusMetricsCollector and with matching values:
- argus_gc_pause_time_seconds_avg, argus_gc_overhead_warning
- argus_gc_allocation_rate_kbps, argus_gc_promotion_rate_kbps
- argus_gc_leak_suspected, argus_gc_leak_confidence
- argus_heap_usage_ratio
- argus_metaspace_reserved_bytes
- argus_carrier_threads_virtual_handled_total

These have no semconv equivalent, so they are always emitted (not gated by
argus.metrics.legacyNames). A test asserts they ship even when legacyNames=false.

Intentionally still Prometheus-only (documented, not a regression): the legacy
argus_gc_pause_seconds_* histogram (the OTLP path uses the semconv
jvm.gc.duration histogram instead), and the label-dimensioned breakdown series
(argus_gc_{pause,events}_breakdown_*, argus_allocation_class_bytes,
argus_profiling_method_samples, argus_contention_hotspot_events) which need
per-series OTLP attribute support — a separate, larger change.

Signed-off-by: rlaope <piyrw9754@gmail.com>
@rlaope rlaope merged commit 553ed70 into master May 29, 2026
6 of 7 checks passed
@rlaope rlaope deleted the feat/otlp-argus-unique-parity branch May 29, 2026 05:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant