feat: Phase 4 — Observability Pipeline + Inbound Routing #34

Merged
hsiegeln merged 8 commits from feat/phase-4-observability-pipeline into main 2026-04-04 21:20:47 +02:00
Owner

Summary

Phase 4 completes the deploy-hit-observe loop. Wiring phase — cameleer3-server already has full observability.

  • Observability dashboard served via Traefik at /dashboard (cameleer3-server React SPA, forward-auth protected)
  • CAMELEER_TENANT_ID configured on cameleer3-server from CAMELEER_TENANT_SLUG env var — tags all ClickHouse data with real tenant identity from day one
  • Inbound HTTP routing for customer apps — optional exposedPort on apps, Traefik Host-rule labels on customer containers ({app}.{env}.{tenant}.{domain})
  • Agent status endpointGET /api/apps/{aid}/agent-status queries cameleer3-server agent registry
  • Observability status endpointGET /api/apps/{aid}/observability-status queries ClickHouse for trace data health
  • Startup connectivity check — verifies cameleer3-server is reachable on app boot (best-effort, logged)
  • HOWTO.md updated with routing, dashboard, and agent status sections

New/changed API endpoints

Method Path Purpose
PATCH /api/environments/{eid}/apps/{aid}/routing Set/clear exposed port
GET /api/apps/{aid}/agent-status Agent registration status
GET /api/apps/{aid}/observability-status Trace/metrics data health

Stats

  • 22 files changed, +498/-22 lines
  • 42 unit tests (3 new), 0 failures
  • 1 new Flyway migration (V010)
  • No changes to cameleer3-server or cameleer3 agent

Test plan

  • 42 unit tests pass
  • All 10 Flyway migrations apply cleanly
  • Integration tests pass locally (Docker Desktop)
  • Deploy sample Camel REST app with exposedPort, verify Traefik routing
  • Verify agent registers with cameleer3-server (agent-status endpoint)
  • Verify traces appear in ClickHouse (observability-status endpoint)
  • Verify dashboard loads at /dashboard
  • CI pipeline passes

Closes #28

🤖 Generated with Claude Code

## Summary Phase 4 completes the deploy-hit-observe loop. Wiring phase — cameleer3-server already has full observability. - **Observability dashboard** served via Traefik at `/dashboard` (cameleer3-server React SPA, forward-auth protected) - **`CAMELEER_TENANT_ID`** configured on cameleer3-server from `CAMELEER_TENANT_SLUG` env var — tags all ClickHouse data with real tenant identity from day one - **Inbound HTTP routing** for customer apps — optional `exposedPort` on apps, Traefik Host-rule labels on customer containers (`{app}.{env}.{tenant}.{domain}`) - **Agent status endpoint** — `GET /api/apps/{aid}/agent-status` queries cameleer3-server agent registry - **Observability status endpoint** — `GET /api/apps/{aid}/observability-status` queries ClickHouse for trace data health - **Startup connectivity check** — verifies cameleer3-server is reachable on app boot (best-effort, logged) - **HOWTO.md updated** with routing, dashboard, and agent status sections ### New/changed API endpoints | Method | Path | Purpose | |--------|------|---------| | PATCH | `/api/environments/{eid}/apps/{aid}/routing` | Set/clear exposed port | | GET | `/api/apps/{aid}/agent-status` | Agent registration status | | GET | `/api/apps/{aid}/observability-status` | Trace/metrics data health | ### Stats - 22 files changed, +498/-22 lines - 42 unit tests (3 new), 0 failures - 1 new Flyway migration (V010) - No changes to cameleer3-server or cameleer3 agent ## Test plan - [x] 42 unit tests pass - [x] All 10 Flyway migrations apply cleanly - [ ] Integration tests pass locally (Docker Desktop) - [ ] Deploy sample Camel REST app with exposedPort, verify Traefik routing - [ ] Verify agent registers with cameleer3-server (agent-status endpoint) - [ ] Verify traces appear in ClickHouse (observability-status endpoint) - [ ] Verify dashboard loads at /dashboard - [ ] CI pipeline passes Closes #28 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude added 8 commits 2026-04-04 21:07:14 +02:00
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds domain config to RuntimeConfig/application.yml, expands AppResponse
with exposedPort and computed routeUrl, adds updateRouting to AppService,
and adds PATCH /{appId}/routing endpoint to AppController.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements AgentStatusService (TDD) that proxies cameleer3-server agent
registry API and queries ClickHouse for trace counts. Gracefully degrades
to UNKNOWN state when server is unreachable or DataSource is absent.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
docs: update HOWTO with observability dashboard, routing, and agent status
All checks were successful
CI / build (push) Successful in 29s
CI / build (pull_request) Successful in 48s
CI / docker (push) Successful in 47s
CI / docker (pull_request) Has been skipped
9b1643c1ee
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
hsiegeln merged commit 7aa331d73c into main 2026-04-04 21:20:47 +02:00
Sign in to join this conversation.