Architectuur & transparantie

Hoe LogPulse is gebouwd

Vertrouwen begint met weten wat eronder zit. Hier is de stack die je logs draait, de keuzes die we maakten, en waar we naartoe gaan. Liever te veel delen dan te veel beloven.

De stack in één oogopslag

Saaie, goed-begrepen componenten. Geen magie.

Ingest

Fastify op Node 22

GCP · Amsterdam (NL)

OTLP HTTP plus een generiek JSON-endpoint. Bearer-auth met bcrypt-hashed API-keys. Rate-limited per key.

Queue

BullMQ op Redis

GCP · Amsterdam (NL)

Batched 100–1000 records vóór elke insert. Retried bij tijdelijke ClickHouse-fouten.

Log-opslag

ClickHouse Cloud

GCP · Amsterdam (NL)

Columnar, gepartitioneerd op tenant_id en datum. Order key (tenant_id, namespace, timestamp, log_id) zorgt dat tenant-scoped queries de juiste partities eerst raken. Doorgaans 8–12× compressie op tekst-logs.

Metadata

PostgreSQL via Drizzle ORM

GCP · Amsterdam (NL)

Gebruikers, organisaties, API-keys, dashboards, alerts, pipelines. Geen log-inhoud hier opgeslagen.

Frontend

React 19 + Vite

Cloudflare Pages

TanStack Query voor server-state, Zustand voor UI-state, Tailwind + shadcn/ui. Strict TypeScript overal.

AI

Anthropic Claude

US-based subprocessor

Drijft natuurlijke-taal → LPQL-vertaling en de AI Investigator aan. Vermeld in onze subprocessors. Logs gaan alleen naar de LLM als jij een AI-query triggert.

Hoe data beweegt

Van je apps naar ClickHouse en weer terug naar jou.

  Your apps  ──OTLP HTTP──▶  Fastify ingest  ──▶  BullMQ (Redis)
                                  │                       │
                              auth + quota              batch
                                  │                       ▼
                                  │             ClickHouse (GCP · Amsterdam)
                                  │                       │
                                  ▼                       │
                              PostgreSQL                  │
                              (metadata)                  │
                                                          ▼
  Web UI  ◀── LPQL / AI ──  Fastify query  ──▶  ClickHouse (tenant-scoped)

Push-based ingest: agents en SDKs sturen logs over OTLP HTTP. De API authenticeert en queued; een worker batched en schrijft naar ClickHouse. Queries gaan de andere kant op: de UI raakt de API, de API draait LPQL op ClickHouse met tenant-scoping afgedwongen aan de boundary.

Multi-tenancy & isolatie

Scheiding afgedwongen in de database, niet alleen in de app.

  • Free-, Pro- en Business-tenants delen één ClickHouse-tabel gepartitioneerd op tenant_id + datum. Enterprise-klanten krijgen een volledig dedicated stack: geïsoleerde ingest, compute en opslag.
  • Elke query draagt WHERE tenant_id = '…', afgedwongen aan de API-boundary, geparametriseerd, nooit string-geconcateneerd. Partition pruning betekent dat cross-tenant data niet wordt gescand.
  • API-keys zijn bcrypt-hashed in PostgreSQL; raw keys worden eenmalig getoond bij creatie en nooit gelogd.
  • Namespace RBAC scopt log-toegang per team: Platform Engineering-teams kunnen developers self-service geven zonder andere namespaces te tonen.

Retentie & kosten

Vaste prijs betekent dat je niet extra betaalt als je meer logt dan voorspeld.

  • Plan-gebaseerde retentie: Free 7d, Starter 14d, Pro 30d. Team- en Platform-plannen hebben configureerbare retentie met automated lifecycle management.
  • Vaste prijs: dagelijkse ingest is inbegrepen tot je quota. Geen per-GB kosten, geen verrassings-overage.
  • ClickHouse columnar compressie haalt doorgaans 8–12× op tekst-logs, dáárom kunnen we vaste prijzen bieden zonder marge te bloeden.
  • Bij quota-overschrijding krijg je een 429 en een mail bij 80%. Liever bewust upgraden dan stilletjes overage afrekenen.

AI: een snelkoppeling, geen black box

Elke query die de AI draait, wordt getoond. Je kunt verifiëren, aanpassen en opslaan.

  • Natuurlijke-taal-vragen worden door een LLM (Anthropic Claude) vertaald naar LPQL. De LLM staat in onze subprocessors en ziet alleen data als jij een AI-query triggert.
  • De AI Investigator ketent queries: zoeken, correleren met deploys, vergelijken met baseline. Elke stap wordt in de chat getoond met de LPQL die hij draaide en de logregels die hij terugkreeg.
  • Hypothesen worden geframed als 'waarschijnlijke oorzaak' met bewijs, niet als declaraties. Jij verifieert vóór actie.
  • EU-gehoste LLM-opties staan op de roadmap voor klanten met strikte residency-eisen. Tot die tijd zijn AI-features per query opt-in.
Eerlijk, niet hijgerig

Waar we staan vs waar we naartoe gaan

Liever eerlijk over wat er staat en wat nog in ontwikkeling is.

GDPR

Compliant by default

DPA + SCCs beschikbaar op betaalde plannen. EU-only datapad. Encryptie at rest en in transit.

SOC 2 Type II

In progress · Q3 2026

Trust Services Criteria-controls staan. Audit loopt.

ISO 27001

In voorbereiding

Aligned controls; nog niet gecertificeerd.

Publieke uptime-pagina

Gepland

Status-pagina met historische uptime per service.

Publieke benchmarks

Gepland

Reproduceerbare ingest-throughput- en query-latency-posts.

Ergens een gat gezien of een diepere duik gewenst?

Liever te veel delen dan te veel beloven. Mail [email protected] met vragen over de stack, isolatie, of iets wat we hier niet hebben behandeld.

Wij gebruiken cookies om het siteverkeer te analyseren en je ervaring te verbeteren. Er worden geen cookies geplaatst zonder jouw toestemming. Privacybeleid