Skip to content

Rollout doc: recreate otelcol-contrib when a canary changes its labels - #303

Open
pranavraja99 wants to merge 1 commit into
mainfrom
pranavraja99/glm53-canary-telemetry-note
Open

pranavraja99 wants to merge 1 commit into
mainfrom
pranavraja99/glm53-canary-telemetry-note

Conversation

@pranavraja99

Copy link
Copy Markdown
Contributor

Docs only. No prod file, script or image changes.

The problem

The canary procedure says to compose/down then compose/up scoped to ["model-sg-glm53-w4afp8-tp4-r2"]. That is right for the engines — but config_variant and engine_image live in the otelcol_app_config block, which only otelcol-contrib reads. A replica-scoped deploy leaves the collector on the previous tag.

The result is silent: the engine runs the new config while reporting itself as the old one. Both replicas then carry identical config_variant, and the A/B compares a replica against itself while the dashboard looks entirely normal.

This happened on the 2026-09-25 gpu02 canary. r2 ran c16384/pdi2 for ~15 minutes while reporting c8192/pdi1/fde25985aea3. It was caught by checking the labels rather than trusting that they were wired, and fixed by recreating the collector alone (telemetry-only; no engine touched).

What this adds

  • The otelcol-contrib recreate step, scoped to canaries that change either label, with why it is needed.
  • A PromQL check to run before trusting any readout, since the failure is silent:
    count by (container_name, config_variant, engine_image) (sglang_num_running_reqs{host_machine="gpu02"})
    
  • A note that the stale pre-reload series lingers ~5 min (one staleness window) after the collector restarts.
  • The gpu02 startup record: weights 167–171 s on 4 ranks at quant=w4afp8, KV pool 3,525,632 tokens, DeepGEMM warmup 32,768 shapes in 3 s from the retained kernel-cache volume, old r2 draining its 2 in-flight requests before exit, and Allocated 57.07 GiB CUDA-owned pinned host memory … SGLANG_HICACHE_CUDA_HOST_MEMORY=1 — the first confirmation that the HCC-safe allocator works inside a CVM, which gpu31 could not test with CC off.

Validation

prepare_glm53_w4afp8_long_context.py --check and validate_glm53_prod_config.rb both pass; neither is affected by a docs change.

🤖 Generated with Claude Code

A replica-scoped compose/up leaves otelcol-contrib on the previous tag, and
config_variant and engine_image live in the otelcol_app_config block that only
the collector reads. The engine then runs the new config while reporting itself
as the old one, both replicas carry identical labels, and the A/B silently
compares a replica against itself.

Hit exactly this on the 2026-09-25 gpu02 canary: r2 ran c16384/pdi2 for about 15
minutes while reporting c8192/pdi1/fde25985aea3. The dashboard looked fine, which
is what makes it worth writing down. Fixed by recreating the collector alone.

Adds the step, a PromQL check that the two arms report different labels, a note
that the stale series lingers for one staleness window, and the gpu02 startup
record including the first in-CVM confirmation of the HCC-safe allocator.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

✅ OpenCodeReview: Review skipped: no items were selected.

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