Files
boc/intelligence/2026-06-15-infra-nedtaktning-rapport.md
T

287 lines
10 KiB
Markdown
Raw Normal View History

# Infrastruktur-rapport — Nedtaktning 2026-06-14/15
**Utförd av:** Bernt (AI-agent)
**Datum:** 2026-06-14 00:00 2026-06-15 03:50 UTC
**Beslut av:** Erik Svensson
**Syfte:** Maximera ekonomisk återhållsamhet. Behåll endast quiXzoom-kritisk infrastruktur.
---
## FÖRE — Maj 2026
### Månadskostnad (maj, faktisk)
| Post | USD/mån |
|---|---|
| Savings Plans (Compute, 1år No Upfront) | 2 461 |
| EC2 Compute (utöver SP) | 922 |
| EC2 Other | 502 |
| ECS | 305 |
| MSK Kafka (3 brokers) | 340 |
| VPC/NAT Gateway | 228 |
| RDS (2 instanser) | 156 |
| CloudWatch | 138 |
| ELB (4 st) | 39 |
| ElastiCache | 63 |
| EKS | 74 |
| Bedrock | 63 |
| Kinesis | 23 |
| GuardDuty | 105 |
| Övrigt (Route53/S3/KMS/ECR/etc) | 60 |
| **TOTALT (exkl. skatt)** | **~5 420 USD/mån** |
### EC2-instanser (maj)
| Instans | Typ | Status | Funktion |
|---|---|---|---|
| server-2 (i-09b2204a52c2f33c9) | r8g.4xlarge | running | quiXzoom + AAMOS — ALLT |
| server-1 (i-0f5b6425bc415ce20) | r8g.4xlarge | stopped | Dubblett, amos + nginx + ollama |
| server-3-redundancy (i-0fc20ddba6bb17ead) | r6g.xlarge | running→stopped | Standby utan syfte |
| graviton-worker ×2 | r6g.2xlarge | running | ECS/K8s workers |
| karpenter-graviton ×2 | r7g.4xlarge | running | EKS Spot nodes |
| ci-runner (i-0638c0beae4ce4a1c) | t3.medium | stopped | CI |
| gpu-training ×2 | g5.2xlarge | stopped | ML-träning |
### Databaser (maj)
| DB | Klass | Multi-AZ | Kostnad |
|---|---|---|---|
| platform-identity-core | db.r6g.large | JA | ~83 USD/mån |
| platform-plane | db.t4g.micro | nej | ~12 USD/mån |
### Övrig infrastruktur (maj)
- **EKS cluster "wavult"** — Kong gateway, buildkit, k8s platform
- **MSK Kafka** — 3 brokers, ej använd av quiXzoom
- **ElastiCache** — Redis, okänt syfte
- **NAT Gateway** — privata subnets
- **4× Load Balancers** — 3 k8s-relaterade, 1 quiXzoom (aamos-prod-alb)
- **7× Elastic IPs** — 4 orphaned
- **Kinesis** — vyra-shot-events, 0 aktivitet
- **Tor-proxy** (tor-argus.service) — installerad 2026-06-08 som root, Kina-kringgång
- **GuardDuty** — alla features aktiverade inkl. Malware/EKS/RDS
---
## ÅTGÄRDER UTFÖRDA 2026-06-14/15
### Säkerhet
| Åtgärd | Detalj |
|---|---|
| **Tor raderat** | tor-argus.service stoppad/disabled, /usr/local/bin/tor, /etc/tor, /var/lib/tor borttagna |
| **GuardDuty bantad** | Disabled: EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, EKS_AUDIT_LOGS, EKS_RUNTIME_MONITORING, LAMBDA_NETWORK_LOGS, RUNTIME_MONITORING. Kvar: CLOUD_TRAIL, DNS_LOGS, FLOW_LOGS, S3_DATA_EVENTS |
### AWS-resurser borttagna
| Resurs | Besparing |
|---|---|
| ALB aamos-prod-alb (+ listeners + target group) | 21 USD/mån |
| RDS platform-identity-core | 12 USD/mån |
| RDS platform-plane | 12 USD/mån |
| Kinesis vyra-shot-events | 23 USD/mån |
| server-1 terminerad (EIP releasad) | 4 USD/mån |
| 3× orphaned EIPs (försvann med ALB) | 11 USD/mån |
| GuardDuty features bantade | 90 USD/mån |
*Tidigare nedtaktat (före denna session): EKS, MSK, ECS, ElastiCache, NAT Gateway, graviton-workers, server-3*
### Databasmigrering RDS → Lokal Postgres
| Steg | Detalj |
|---|---|
| Postgres 16 installerad | `dnf install postgresql16-server`, initierad, systemd-enable |
| Databaser skapade | `amos` (714 tabeller), `wavult_identity` (734 tabeller) |
| Dump från RDS | pg_dump med SSL: amos 258 MB, wavult_identity 598 MB |
| Restore lokalt | pg_restore -j 4, warnings normala (extensions/sequences) |
| pg_hba konfigurerad | scram-sha-256 på localhost |
| pgbouncer switchad | Pekar nu mot 127.0.0.1:5432 istället för RDS |
| .env uppdaterad | DATABASE_URL, AMOS_DB_URL, SUPABASE_DB_URL → 127.0.0.1 |
| .env backup | /opt/amos/.env.bak-rds-20260614-* |
| RDS deletion protection av | `modify-db-instance --no-deletion-protection` |
| RDS raderade | `delete-db-instance --skip-final-snapshot` |
---
## EFTER — Juni 2026
### Kvarvarande infrastruktur
| Resurs | Detalj |
|---|---|
| **server-2** (i-09b2204a52c2f33c9) | r8g.4xlarge, running, 16.170.83.169 |
| **Postgres 16 (lokal)** | /var/lib/pgsql/data, databaser: amos + wavult_identity |
| **pgbouncer** | 127.0.0.1:6432 → lokal Postgres |
| **NATS JetStream** | Lokal message bus |
| **nginx** | Reverse proxy, Let's Encrypt SSL |
| **aamos-prod-tg / ALB** | BORTTAGEN — DNS pekar direkt på 16.170.83.169 |
| **GuardDuty** | Aktiv, bantad kärna (CloudTrail + DNS + FlowLogs) |
| **Route53** | aamos.systems zon, alla A-records → 16.170.83.169 |
| **S3** | quiXzoom-buckets + platform-backups |
| **ECR** | Container images |
| **Savings Plans** | 3.418 USD/tim, löper t.o.m. 2027-04-30 |
### Stoppade instanser (kostar ingenting)
| Instans | Typ | Syfte |
|---|---|---|
| server-3-redundancy | r6g.xlarge | Standby (definieras senare) |
| ci-runner | t3.medium | CI/CD |
| gpu-training | g5.2xlarge | ML-träning (ALETHEIA/HEPHAISTOS) |
| ouroboros-gpu-training | g5.2xlarge | ML-träning backup |
### Tjänster på server-2 (aktiva)
```
amos-core.service active (port 3100)
quixzoom-api.service active (port 3209)
aamos-quixzoom-engine.service active (Rust)
aamos-ledger.service active
aamos-billing-engine.service active
aamos-api-gateway.service active
postgresql.service active (port 5432, lokal)
pgbouncer.service active (port 6432)
nats-server.service active
nginx.service active
openclaw-gateway.service active
clickhouse.service active (Docker)
```
### Ny månadskostnad (estimerad)
| Post | USD/mån |
|---|---|
| Savings Plans (fast, ej påverkbar) | 2 461 |
| GuardDuty (kärna) | ~10 |
| Route53 | ~5 |
| S3 | ~5 |
| CloudWatch | ~5 |
| ECR | ~2 |
| Secrets Manager | ~2 |
| KMS | ~2 |
| **TOTALT** | **~2 492 USD/mån** |
**Besparing vs maj: 2 928 USD/mån (54%)**
---
## ÅTERSKAPNINGSGUIDE — Framtida behov
### När quiXzoom växer och behöver mer compute
**SP täcker 3.418 USD/tim.** r8g.4xlarge = ~1.00 USD/tim.
Du har headroom för **ytterligare ~2.4 USD/tim** compute täckt av SP utan extra kostnad.
Det motsvarar: 2× r8g.2xlarge (0.50/tim styck) ELLER 1× r8g.8xlarge (2.01/tim).
```bash
# Starta server-3 (r6g.xlarge, stopped, redo direkt)
aws ec2 start-instances --instance-ids i-0fc20ddba6bb17ead
# Starta ci-runner (t3.medium, för CI/CD-behov)
aws ec2 start-instances --instance-ids i-0638c0beae4ce4a1c
```
### När ML-träning behövs (ALETHEIA/HEPHAISTOS)
```bash
# Starta gpu-training (g5.2xlarge, stopped — startar på sekunder)
aws ec2 start-instances --instance-ids i-04239ef03d26b218b
# eller ouroboros-gpu-training
aws ec2 start-instances --instance-ids i-0b96090f76c603b23
# VIKTIGT: Stoppa igen efter körning — g5.2xlarge kostar ~1.21 USD/tim
aws ec2 stop-instances --instance-ids i-04239ef03d26b218b
```
### När RDS-liknande managed DB behövs igen
```bash
# Skapa ny RDS t4g.micro (billigaste, ~12 USD/mån)
aws rds create-db-instance \
--db-instance-identifier <namn> \
--db-instance-class db.t4g.micro \
--engine postgres \
--engine-version 16 \
--master-username wavult_admin \
--master-user-password <lösen> \
--allocated-storage 20 \
--no-multi-az \
--no-publicly-accessible \
--region eu-north-1
# Dump från lokal Postgres till ny RDS:
pg_dump -h 127.0.0.1 -U wavult_admin -d amos -Fc -f /tmp/amos.pgc
pg_restore -h <rds-endpoint> -U wavult_admin -d amos /tmp/amos.pgc
```
### När Load Balancer behövs igen (multi-server setup)
```bash
# Skapa ny ALB
aws elbv2 create-load-balancer \
--name aamos-prod-alb \
--subnets subnet-XXXX subnet-YYYY \
--security-groups sg-XXXX \
--scheme internet-facing \
--type application
# Skapa target group mot server-2
aws elbv2 create-target-group \
--name aamos-prod-tg \
--protocol HTTPS \
--port 443 \
--vpc-id vpc-XXXX \
--target-type instance \
--health-check-path /health
# OBS: Utan ALB går trafik direkt via nginx på server-2.
# ALB behövs bara vid horisontell skalning (flera instanser).
```
### När MSK Kafka behövs (event streaming i skala)
```bash
# NATS JetStream räcker för quiXzoom-volymer.
# MSK motiveras när: >100k events/sek ELLER multi-region ELLER extern integration.
# Kostnad: ~340 USD/mån (3 brokers). Starta först när det är motiverat.
aws kafka create-cluster-v2 \
--cluster-name aamos-events \
--provisioned BrokerNodeGroupInfo={InstanceType=kafka.t3.small,...},NumberOfBrokerNodes=3
```
### Savings Plan — vad händer april 2027
SP löper ut **2027-04-30**. Från maj 2027:
- Kostnad för server-2 tillkommer: ~722 USD/mån
- Total kostnad utan SP: ~750800 USD/mån (server-2 + övrigt)
- **Beslut att ta mars 2027:** Köp ny SP (om compute-footprint motiverar) eller kör on-demand
```
Påminnelse att sätta: mars 2027 — utvärdera ny Savings Plan
Nuvarande SP-id: 77610c74-2f99-4ae5-a3c3-4019c08302b4
```
---
## SÄKERHETSNOTERINGAR
### GuardDuty findings kvar (ej åtgärdade)
- **S3 public anonymous access** på quiXzoom-buckets (quixzoom.de, .fr, .eu, etc) — HIGH 8.0
- Dessa är troligen avsiktliga static-site buckets. Verifiera att de inte exponerar känslig data.
- **CompromisedInstanceGroup** (9.0) — härstammar från Tor-trafiken som nu är borttagen.
- Archivera dessa findings i GuardDuty efter att du bekräftat att Tor är borttaget.
### Kvarstående secrets i .env
- .env på server-2 innehåller klartext-credentials för många tjänster
- Rekommendation: migrera till AWS Secrets Manager successivt
- Backup av .env finns i /opt/amos/.env.bak-rds-*
---
## TIDSLINJE
| Tid (UTC) | Åtgärd |
|---|---|
| 2026-06-14 00:52 | Erik beslutar om absolut ekonomisk återhållsamhet |
| 2026-06-14 05:30 | Tor-analys, GuardDuty CRITICAL 9.0 identifierat |
| 2026-06-14 05:45 | Tor raderat från server-2 |
| 2026-06-14 05:47 | GuardDuty bantad (90 USD/mån) |
| 2026-06-14 05:48 | Kinesis borttagen (23 USD/mån) |
| 2026-06-14 05:50 | ALB borttagen (21 USD/mån) |
| 2026-06-14 05:52 | server-1 terminerad, EIP releasad (4 USD/mån) |
| 2026-06-14 05:54 | Postgres 16 installerad på server-2 |
| 2026-06-14 05:59 | RDS-dump klar (amos 258 MB, identity 598 MB) |
| 2026-06-14 06:03 | Restore till lokal Postgres (714+734 tabeller) |
| 2026-06-14 06:05 | .env + pgbouncer switchad till localhost |
| 2026-06-14 06:06 | RDS deletion protection av, båda RDS raderade |
| 2026-06-15 03:50 | Verifiering — allt rent, rapport klar |