Installation Overview

kprobe runs closest to the machines that execute your workloads. The recorder must observe the host Linux kernel, so the deployment model depends on how much control you have over the compute layer.

Choose an installation path

EnvironmentRecommended pathNotes
Amazon EKS on EC2 nodesInstall on EKSBest production experience. kprobe runs as a DaemonSet.
Amazon ECS on EC2Install on ECS EC2Run one host agent per ECS container instance.
Bare Linux or VM fleetInstall on LinuxRun the recorder as a system service.
Local evaluationLocal DemoStart the backend and publish a demo incident.
Fargate-only workloadsUse trace-only integrationFull eBPF capture requires host kernel access.

What gets installed

A full kprobe deployment includes:

  • recorder agents on nodes or hosts
  • event pipeline for ingest, validation, and delivery
  • storage for timelines and causal graphs
  • API service for queries and replay
  • web console for incident investigation
  • service accounts, RBAC, secrets, and configuration
  • internal health checks and metrics

In production, many teams use managed storage instead of bundled infrastructure. For example, Kafka-compatible streaming, managed ClickHouse, and managed graph storage can be configured through Helm values.

Deployment topology

A standard production topology looks like this:

  1. The kprobe recorder runs on every Linux node that hosts selected workloads.
  2. The recorder emits raw kernel events into the event pipeline.
  3. The pipeline validates, samples, redacts, and enriches events with Kubernetes and OpenTelemetry context.
  4. The timeline store keeps the ordered event log for search and replay.
  5. The graph store keeps causal edges for root-cause traversal.
  6. The API and console expose investigation workflows to engineers.

The recorder is intentionally close to the kernel. Everything after the recorder can run inside the same cluster, in a shared observability cluster, or against managed services.

Requirements

RequirementDescription
Linux kernel5.15+ with BTF support is recommended for CO-RE eBPF programs.
Host accessThe recorder requires permissions to load eBPF programs and read perf/ring buffer data.
Kubernetes1.26+ for Kubernetes deployments.
Helm3.x for Kubernetes installation.
OpenTelemetryRecommended for trace, service, and request correlation.

Install decision matrix

QuestionRecommended choice
Do you run Kubernetes with EC2-backed Linux nodes?Install the Helm chart and run the recorder as a DaemonSet.
Do you need strict separation from application clusters?Run storage and API in an observability cluster, and run only agents in workload clusters.
Are you evaluating locally?Use the local demo path and publish synthetic incident events.
Are you Fargate-only?Use kprobe for trace correlation only, or add an EC2 node group for workloads that need kernel forensics.
Do you already run Kafka or ClickHouse?Point kprobe at your managed/existing services through Helm values.

Production install pattern

Most production users install kprobe with a values file:

helm install kprobe kprobe/kprobe \
  --namespace kprobe \
  --create-namespace \
  -f values-prod.yaml

The values file defines:

  • cluster name
  • namespaces and workloads to observe
  • storage mode
  • retention period
  • OpenTelemetry endpoint
  • authentication provider
  • resource requests and limits
  • dashboard exposure

Post-install smoke test

Run the smoke test from a namespace that kprobe is configured to observe:

kubectl run kprobe-smoke \
  --namespace payments \
  --image=curlimages/curl \
  --restart=Never \
  --command -- sh -c "curl -sS https://example.com >/dev/null"

Then open the console and search for the namespace, pod name, or generated request ID. A healthy install should show:

  • the pod mapped to a service identity
  • outbound TCP events
  • syscall events from the process
  • an ordered timeline
  • a correlation status indicating whether an OpenTelemetry trace was attached

If the smoke test produces no events, start with No Events.

Verify installation

After installation, verify these checks:

kubectl get pods -n kprobe
kubectl get daemonset -n kprobe
kubectl logs -n kprobe daemonset/kprobe-agent

The console should show:

  • connected agents
  • incoming kernel events
  • service metadata
  • trace correlation status
  • storage health

Next steps