chore(autocon5): pin sonda 1.22.2 and migrate aggregate scrape to /scenarios/metrics - #112
Open
davidban77 wants to merge 5 commits into
Open
chore(autocon5): pin sonda 1.22.2 and migrate aggregate scrape to /scenarios/metrics#112davidban77 wants to merge 5 commits into
davidban77 wants to merge 5 commits into
Conversation
…cenarios/metrics
sonda 1.16.0 (released 2026-06-15) renamed the aggregate scenario-metrics
route from `/metrics` to `/scenarios/metrics` and reclaimed `/metrics`
for the server-self endpoint (Prometheus convention). The workshop's
Telegraf scrape configs, both hands-on guides, the docker-compose comment
block, the data-pipelines doc, and the srl1 catalog comment all needed
the URL flip. Also bumps the pinned `SONDA_IMAGE` from 1.14.0 to 1.16.0
in docker-compose.yml and refreshes the .env.example commented example.
End-to-end verified: a fresh `nobs autocon5 up` against this branch
produces 6 hits for `interface_oper_state{intf_role="peer"}` in
Prometheus (3 per device, 2 devices) — same shape Part 1 promises.
…ites Follow-up to the previous commit. Missed two surfaces: - `docs/workshop/tour.md`: the rendered docs-site Tour page (separate from the autocon5 in-repo guides) had its API table row, the pre-curl prose, and three curl examples still pointing at the legacy aggregate `/metrics` URL. Updated all five sites. - `workshops/autocon5/sonda/scripts/sonda-setup.sh`: header comment describing what Telegraf scrapes still said `/metrics`. The `/metrics` mention in tour.md's "what is Prometheus" paragraph stays — that's a generic reference to the Prometheus exposition format, not the sonda endpoint.
Bumps SONDA_IMAGE from 1.16.0 to 1.22.2, the newest published image. 1.22.3 is tagged upstream but its release workflow was cancelled before the container build, so no image exists for it. Scrape output is unchanged: both devices still expose the same 38 series, and the `while:` cascade inversion pauses baselines on the same schedule. - docker-compose.yml, workshops/autocon5/.env.example — SONDA_IMAGE default - .env.example — shared pin was three versions stale at v1.0.1 - docs/data-pipelines.md — version label in the pipeline diagram Refs: #112 Claude-Session: https://claude.ai/code/session_01VkjrQfom1CVg1NUnwj6Cux
`jitter` sat inside the ping pack's `generator:` block, where sonda never read it — jitter is an entry-level schedule field, and a composable pack's metrics cannot carry one. The emitted series was always the bare sine. Removing it keeps the pack parsing under sonda 1.22.3, which rejects unknown keys in nested scenario blocks. Moving the key up to entry level is not an option: it would fan out across the whole pack and jitter `ping_result_code`, whose 0/1/2 values drive the exact value mappings on the device-health State panel. Refs: #112 Claude-Session: https://claude.ai/code/session_01VkjrQfom1CVg1NUnwj6Cux
The interface cascade stopped emitting octet counters when octet freezing moved to `delay.close.snap_to` on the baseline pack overrides, but the tests still built the cascade with `in_octet_start`/`out_octet_start` and asserted `cascade_in_octets`/`cascade_out_octets` entries, so every interface-cascade test raised TypeError. Tests now assert the current contract on both halves: the cascade emits only the signal, the oper_state override and the UPDOWN log, and every baseline interface a cascade can target carries snap_to on both of its octet metrics. Without the second half, deleting an override left the suite green while octet series silently dropped for the duration of a flap. The module docstring carried the same stale claim as the tests. Refs: #112 Claude-Session: https://claude.ai/code/session_01VkjrQfom1CVg1NUnwj6Cux
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.
sonda 1.16.0 renamed the aggregate scenario-metrics route from
/metricsto/scenarios/metricsand reclaimed/metricsfor server-self telemetry. Without the URL flip a student runningnobs autocon5 upgetssonda_server_*series at the address Part 1 tells them to open, Telegraf ingests server telemetry instead of device shapes, and every Part 1 and Part 2 query comes back empty. This flips the scrape URLs and pins sonda 1.22.2, the newest published image./scenarios/metrics, filtered per device and scoped withinclude_state=running,unresolved,heldso paused baselines drop out during a cascade. Both hands-on guides, the tour, the compose comments, the data-pipelines doc and the srl1 catalog header follow.SONDA_IMAGEpinned to 1.22.2 across compose and both.env.examplefiles; the shared root pin was three versions stale. Scrape output is unchanged from 1.16.0 — same 38 series per device, same cascade timing. (1.22.3 is tagged upstream but its release workflow was cancelled before the container build, so no image exists for it.)jitterkey sonda never read: it sat insidegenerator:, where a composable pack's metrics cannot carry one, so the series was always the bare sine. It also blocks parsing under sonda 1.22.3, which rejects unknown keys in nested blocks.in_octet_start/out_octet_startand asserted octet entries the cascade stopped emitting once freezing moved todelay.close.snap_toon the baselines.