# ClickHouse + Analytics Engine — Verifieringsrapport **Datum:** 2026-06-05 **Utförd av:** subagent clickhouse-analytics --- ## ✅ Statusöversikt | Komponent | Status | |---|---| | ClickHouse (Docker :8123) | ✅ Online, auth OK | | aamos-analytics-engine (:3211) | ✅ Active, systemd | | analytics-rust (:3281) | ✅ Active (stub) | | Schema `aamos` | ✅ Komplett, 12 tabeller | | Seed-data (MRR + Cohort) | ✅ Fyllt | | Test-event (events-table) | ✅ Verifierat | | Nginx upstream analytics | ⚠️ Felaktig port (se nedan) | --- ## ClickHouse: Databaser ``` INFORMATION_SCHEMA, aamos, default, information_schema, system ``` **Credentials:** user=`aamos` password=`aamos_wh_2026` *(Default-user kräver lösenord — använd alltid aamos-user)* --- ## Schema: Tabeller i `aamos` | Tabell | Rader | Kommentar | |---|---|---| | `events` | 1 (testad) | DAU-events, UUID-baserad | | `analytics_mrr` | 36 | 3 produkter × 12 månader, seedad | | `analytics_cohort` | 126 | 3 produkter × 6 cohorts × 7 perioder, seedad | | `campaign_events` | 0 | Tom — redo för data | | `entity_scores` | 0 | ML-scores, tom | | `intent_signals` | 0 | Tom | | `kong_api_key_usage` | 0 | Tom | | `kong_consumer_rate_audit` | 0 | Tom | | `kong_request_log` | 0 | Tom | | `kong_request_log_per_minute` | - | Materialized view | | `system_state_history` | 0 | Tom | | `.inner_id.*` (×3) | - | Interna MV-tabeller | ### Events-table schema ``` id UUID (DEFAULT generateUUIDv4()) event_type LowCardinality(String) entity_id UUID entity_type LowCardinality(String) properties String source LowCardinality(String) ts DateTime64(3, 'UTC') ``` --- ## Analytics Engine Services ### Service 1: `aamos-analytics-engine` (:3211) **Binary:** `/opt/amos/rust/analytics-engine/target/release/amos-analytics` **Systemd:** `/etc/systemd/system/aamos-analytics-engine.service` **Endpoints:** | Endpoint | Status | Beskrivning | |---|---|---| | `GET /health` | ✅ 200 | `{"status":"ok","service":"amos-analytics","port":3211,"clickhouse":"ok"}` | | `GET /api/analytics/dau?days=N` | ✅ 200 | Daily Active Users från events-tabell | | `GET /api/analytics/mrr?months=N&product=X` | ✅ 200 | MRR från analytics_mrr | | `GET /api/analytics/cohort?product=X&periods=N` | ✅ 200 | Cohort retention | | `POST /api/analytics/events` | ❌ 404 | Finns ej — inget event-ingest endpoint | **Notering:** Service initierar DDL-schema (CREATE TABLE IF NOT EXISTS) vid start, och seedar om analytics_mrr är tom. ### Service 2: `amos-analytics-rust` (:3281) — STUB **Binary:** `/opt/amos/rust/analytics-rust/target/release/amos-analytics-rust` Denna är en **stub/placeholder** utan ClickHouse-integration. Endpoints: `/health`, `/status`, `/list`, `/create` — returnerar tomma svar. --- ## Test-event Skickades direkt till ClickHouse (analytics-engine har inget POST-endpoint): ```bash curl -X POST "http://localhost:8123/?user=aamos&password=aamos_wh_2026&database=aamos" \ --data-binary "INSERT INTO events (event_type, entity_id, entity_type, properties, source, ts) VALUES ('test', generateUUIDv4(), 'test', '{\"source\":\"e1-008-test\",\"tenant_id\":\"wavult-group\"}', 'e1-008-test', now())" ``` **Resultat:** ✅ Insertat — DAU-endpoint returnerade `{"days":1,"series":[{"date":"2026-06-05","dau":1}],"avg_dau":1.0,"peak_dau":1}` --- ## MRR-data (aktuell) Från `/api/analytics/mrr?months=3`: | Produkt | MRR (Juni 2026) | Kunder | MoM-tillväxt | |---|---|---|---| | aamos | 2 914 549 SEK | 727 | ~8% | | quixzoom | 3 195 032 SEK | 3 592 | ~14% | | ouroboros | 2 551 313 SEK | 79 | ~6% | | **TOTALT** | **8 660 894 SEK** | - | **9.52%** | --- ## ⚠️ Nginx-upstream — Portmismatch **Problem:** Nginx-upstream pekar på fel port! ```nginx # /etc/nginx/conf.d/aamos-upstreams.conf upstream rust_analytics { server 127.0.0.1:3281; keepalive 16; } # /etc/nginx/snippets/rust-services.conf location /api/svc/analytics/ { proxy_pass http://rust_analytics/; # → :3281 (STUB!) } ``` - `rust_analytics` upstream → `:3281` = **stub-service** (ingen ClickHouse-integration) - Faktiska analytics-engine med data → `:3211` = **ej proxad** **Rekommendation:** Uppdatera upstream till `127.0.0.1:3211` (kräver root/SSM). Eller registrera `:3211` som ny upstream `rust_analytics_engine` och uppdatera location-blocket. --- ## Sammanfattning - **Schema:** Komplett. 12 tabeller i `aamos`-databasen. - **Data:** analytics_mrr (36 rader) och analytics_cohort (126 rader) är seedade med realistisk data. - **Analytics-engine (:3211):** Fullt fungerande. DAU, MRR, Cohort-endpoints svarar korrekt. - **Test-event:** Verifierat via direkt ClickHouse-insert. DAU-endpoint plockar upp det. - **Saknar:** POST-endpoint för event-ingest i analytics-engine (events måste skrivas direkt till ClickHouse eller via separat ingest-service). - **Nginx:** Upstream pekar på stub (:3281) istället för analytics-engine (:3211) — åtgärdas separat med root-access.