Data Platform

Why We Chose ClickHouse.

Firewall telemetry is high-volume, write-once, and almost never updated after the fact. That profile is exactly what column-store OLAP databases like ClickHouse are built for — and exactly what row-store operational databases are not.

Columnar
Storage engine — reads only the columns a query touches
Append
-only write pattern matches firewall/DNS event streams exactly
SQL
Standard query interface — no proprietary query language to learn
What It Is

A column-store database,
built for analytics.

ClickHouse is an open-source OLAP (online analytical processing) database. Instead of storing each row contiguously like a traditional operational database, it stores each column contiguously. For workloads that scan and aggregate — "how many events per source IP in the last 30 days" — that layout means only the relevant columns are read off disk, not entire rows of unrelated fields.

Built for Append-Only Streams

Firewall verdicts, DNS queries, and traffic events are written once and essentially never updated — a natural fit for ClickHouse's MergeTree storage engine, which is optimized for high-throughput inserts.

Fast Aggregate Queries

Counting, summing, and computing distinct values over millions or billions of rows completes in milliseconds to low seconds — the exact operations behind trend dashboards and reports.

Horizontal Scalability

ClickHouse scales by adding nodes and sharding data, so growing event volume from more gateways or longer retention windows doesn't require re-architecting the pipeline.

Standard SQL Interface

Queries are written in familiar SQL, so building custom reports or feeding a BI tool doesn't require learning a proprietary query language.

Why Not the Operational Database

Right tool, right job.

CharacteristicPostgreSQL / SQLite (operational)ClickHouse (analytical)
Primary useRule state, threat indicators, config — small, frequently-updated rowsHistorical event streams — large volume, write-once
Query patternPoint lookups by ID, small transactional writesAggregations across millions/billions of rows
Contention riskAnalytical scans would compete with live rule-lookup trafficIsolated from the operational path entirely
Growth profileBounded — rules and indicators don't grow unboundedUnbounded — designed for continuously growing event history
How Neurowall Uses It

One store for every
event source.

Firewall Events (Neurowall)

L3/L4 packet verdicts — allow, block, drop — with source/destination, rule matched, and timestamp.

Application Events (Vaanvil)

L7 enforcement decisions from the application-layer engine, correlated against the same time axis as firewall events.

DNS Queries (dnstap)

Query volume by domain, client, and resolver — useful for both security investigation and DNS capacity planning.

Traffic Stats (Darkstat)

Periodic network traffic summaries pulled on a scheduled cron, giving longer-horizon bandwidth and host activity trends.

Compliance Events (Elf-Owl)

Kubernetes CIS compliance observation events, stored alongside network telemetry for unified reporting.

Durable Ingestion

All sources are routed through NATS JetStream before landing in ClickHouse, so ingestion survives restarts without dropping events.

What Other Firewalls Do Instead

"We have logs" usually means
logs nobody can query.

Most firewall products treat event history as a byproduct, not a first-class store — and the difference shows up the moment you need to ask a question spanning more than a day or two.

Common approachWhere it breaks down
Flat log files, rotated and discardedOnce a log file rotates out, that history is gone — there's no way to ask "what happened three months ago" because the data simply doesn't exist anymore
Events written into the operational databaseRow-store databases tuned for fast rule lookups slow down or contend with live traffic decisions once historical event tables grow into the tens of millions of rows
Shipping raw logs to a generic log platformGeneral-purpose log search tools are built for text search, not columnar aggregation — a "sum bytes by source IP over 90 days" query is exactly what they're worst at
No cross-source correlationFirewall logs, DNS logs, and application logs living in separate silos mean tracing a single request end-to-end requires manually stitching together three different tools
What Happens Without a Real Analytics Store

The questions you can't answer
show up at the worst time.

An auditor asks for 6 months of enforcement history
If logs were rotated out or never stored queryably, the honest answer is "we don't have that anymore" — a finding, not a data point, in most compliance frameworks.
A historical query is run against the operational database
A large aggregate scan can contend with the same database your live rule lookups depend on — the analytics question you asked for a report ends up degrading firewall responsiveness.
You need to trace one request across firewall, DNS, and app logs
Without a shared store and timestamp axis, this becomes a manual cross-reference exercise across three tools — slow during a routine investigation, far too slow during an active incident.
Leadership asks about traffic growth trends
Without a queryable history, "how has our traffic grown this year" requires re-deriving the answer from raw logs each time it's asked — not a repeatable, trustworthy reporting process.
Why CloudArmour

Event history that's actually
usable, not just retained.

Purpose-Built for This Exact Workload

ClickHouse's columnar design isn't a generic choice — it's specifically suited to the append-only, aggregate-query-heavy pattern that firewall and DNS telemetry produces.

Isolated From the Operational Path

Analytics queries run against ClickHouse, not the operational rules database — heavy historical reporting never competes with live rule-lookup performance.

One Store, Every Source

Firewall, application-layer, DNS, traffic, and compliance events all land in the same store on the same time axis — cross-source correlation is a SQL join, not a manual cross-reference project.

Durable by Design, Not by Luck

NATS JetStream-backed ingestion means a brief ClickHouse or Ramen outage doesn't silently drop events — history stays complete even through restarts and maintenance windows.

Get started

See what your event history can tell you.