Move from cluster pressure to the workload causing it
Filter by cluster, namespace, workload, pod and container using the resource identity already carried by OpenTelemetry
Bring cluster metrics, container logs and application traces together through OpenTelemetry. Keep Kubernetes telemetry queryable with PromQL, LogQL and TraceQL as clusters and retention grow
PulsusDB keeps the collection and query surfaces open. The ClickHouse database handles high-volume storage and analytical execution while the signal-specific query language preserves the workflow your team already knows
Filter by cluster, namespace, workload, pod and container using the resource identity already carried by OpenTelemetry
Use indexed words and LogQL pipelines to narrow large container log volumes before inspecting the lines that matter
Use shared Kubernetes resource attributes across metrics, logs and traces to follow a slow request back to its namespace and pod
Deploy an OpenTelemetry Collector as a DaemonSet and gateway, or use your existing collector topology. Kubernetes receivers and processors attach cluster, namespace, workload, pod, container and node identity before every signal is sent to PulsusDB over OTLP
SCRAPE → OTEL COLLECTOR → OTLP Scrape kube-state-metrics, kubelet stats, node exporters, the API server and application metric endpoints
NODE + API → OTEL COLLECTOR → OTLP Tail container output from each node and convert Kubernetes events into structured OTLP log records
POD → OTEL GATEWAY → OTLP Auto-instrument or manually instrument applications, then route traces through a cluster gateway
CPU, memory, disk, filesystem and network metrics
API server, scheduler and controller-manager metrics
Deployment, StatefulSet, DaemonSet, Job and pod state
Stdout, stderr, restarts, resource use and limits
Scheduling, eviction, image and readiness events
Request metrics, structured logs and distributed traces
Request rates, status codes, latency and access logs
Volume capacity, latency, errors and mount events
PulsusDB receives standard OTLP. Cloud-native export, subscription and receiver configuration lives in the collection tier, so it remains replaceable and vendor-neutral
PulsusDB compiles familiar observability queries into efficient database work, pushes filters and aggregation toward the ClickHouse database tier and returns only the result needed by the client
sum by (cluster, namespace) (
rate(container_cpu_usage_seconds_total{container!=""}[5m])
) Compare namespace pressure across clusters without changing the metric query language your dashboards use
{k8s_cluster_name="prod-eu",
k8s_namespace_name="payments"}
|= "CrashLoopBackOff" Resolve the stream labels first, then use the word index to prune container log data
{ resource.k8s.cluster.name = "prod-eu"
&& resource.k8s.namespace.name = "payments"
&& duration > 1s } Search spans using the same cluster and namespace identity carried by the workload
Metrics, logs, traces and profiles do not have the same read path. PulsusDB gives each one a purpose-built physical model, then exposes a consistent OpenTelemetry ingest layer and familiar query APIs above it
Explore the architecture →Ordering keys, indexes, codecs and projections follow the dominant query shape for each signal
Scale ingest and query processes independently while durable state remains in the database tier
Compression, materialised rollups and object storage tiering reduce the cost of detailed operational history
Use OpenTelemetry for ingest and PromQL, LogQL or TraceQL for investigation
Start with the workload in front of you, then add the rest of the estate without adding another observability backend