Skip to content

feat(sensing-server): secure opt-in OpenTelemetry log export - #1465

Merged
ruvnet merged 1 commit into
mainfrom
fix/otel-logging-secure
Jul 29, 2026
Merged

feat(sensing-server): secure opt-in OpenTelemetry log export#1465
ruvnet merged 1 commit into
mainfrom
fix/otel-logging-secure

Conversation

@ruvnet

@ruvnet ruvnet commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Summary

This imports and hardens the OpenTelemetry logging work from #1382 while preserving credit to @jensholdgaard.

  • adds opt-in OTLP/gRPC log export behind the otel feature and OTEL_EXPORTER_OTLP_ENDPOINT
  • preserves the server's existing stderr behavior when no exporter is active
  • adds registry-backed ruview.* events and attributes, exact Weaver validation/codegen, and a published OpenTelemetry schema document
  • attaches the schema URL to exported resource logs and enables TLS/native trust roots
  • fixes node-online reporting when a sync packet arrives before the first CSI frame
  • pins observability demo container images by digest and documents trusted-network/TLS operation

Security review

  • exporter initialization is explicit and opt-in; no new network listener is introduced
  • OTLP exporter internal logs are filtered to prevent telemetry recursion
  • TLS support and native certificate roots are compiled into the optional exporter
  • demo image tags are digest-pinned
  • changed-content credential scan is clean
  • the enabled otel,mqtt sensing-server dependency graph contains none of the workspace's known RustSec-vulnerable quick-xml/rsa packages; the pre-existing yanked-only spin 0.9.8 remains transitively under rumqttc -> flume

Validation

  • cargo check -p wifi-densepose-sensing-server --all-targets
  • cargo check -p wifi-densepose-sensing-server --all-targets --features otel,mqtt
  • cargo test -p wifi-densepose-sensing-server --features otel,mqtt (778 passed, 0 failed, 1 ignored doc example)
  • cargo build -p wifi-densepose-sensing-server --release --features otel,mqtt
  • release binary --benchmark smoke test (1,000 frames)
  • Weaver v0.23.0 checksum verification, registry check, generation, and no-diff verification
  • docker compose -f docker/otel-compose.yml config --quiet
  • cargo metadata --locked
  • git diff --check

The repository's existing all-target Clippy debt is unchanged; no finding points to the files added or modified for this feature.

Closes #1460
Supersedes #1382

Import and harden the OpenTelemetry logging work from #1382. Preserve default stderr behavior, register and validate RuView semantic conventions, attach a published schema, enable TLS roots, pin demo images, and fix first-CSI node lifecycle reporting.

Supersedes #1382
Closes #1460

Co-authored-by: Jens Holdgaard Pedersen <jens@holdgaard.org>
Comment thread docker/otel-compose.yml
# template-mining log backend that is OTLP-native on ingest. Query the
# logs at http://localhost:4319/v1/query — see docs/observability.md.
services:
sensing-server:
Comment thread docker/otel-compose.yml
# template-mining log backend that is OTLP-native on ingest. Query the
# logs at http://localhost:4319/v1/query — see docs/observability.md.
services:
sensing-server:
Comment thread docker/otel-compose.yml
# template-mining log backend that is OTLP-native on ingest. Query the
# logs at http://localhost:4319/v1/query — see docs/observability.md.
services:
sensing-server:
Comment thread docker/otel-compose.yml
# only activates when OTEL_EXPORTER_OTLP_ENDPOINT is set.
SENSING_FEATURES: mqtt,otel
image: ruvnet/wifi-densepose:otel
ports:
Comment thread docker/otel-compose.yml
depends_on:
- otel-collector

otel-collector:
Comment thread docker/otel-compose.yml
# mining + DataFusion). Local-disk storage; the tenant derives from the
# exported resource's service.name, so RuView's logs land in tenant
# "ruview".
ourios:
Comment thread docker/otel-compose.yml
- OURIOS_RECEIVER_HTTP_ADDR=0.0.0.0:4318
- OURIOS_QUERIER_ENABLED=1
- OURIOS_QUERIER_HTTP_ADDR=0.0.0.0:4319
ports:
uses: actions/checkout@v4
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@stable
Comment thread docker/otel-compose.yml
ports:
- "4319:4319" # query endpoint (http://localhost:4319/v1/query)
volumes:
- ourios-data:/data
Comment thread docker/otel-compose.yml
- "4319:4319" # query endpoint (http://localhost:4319/v1/query)
volumes:
- ourios-data:/data
- ourios-wal:/wal
@ruvnet
ruvnet merged commit e78252a into main Jul 29, 2026
25 checks passed
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.

Opt-in OpenTelemetry log export for the sensing server — PR #1382 ready for review

2 participants