Skip to main content

Validate your installation

Use these checks to follow one recording from workload enrollment to central analysis.

1. Control plane

kubectl get certificate -n jafra-system
kubectl get deployment jafra-controller -n jafra-system
kubectl get mutatingwebhookconfiguration jafra-controller
kubectl logs -n jafra-system deployment/jafra-controller

The certificate and Deployment must be ready before the webhook is useful.

2. Pod mutation

kubectl apply -f deploy/examples/checkpoint-1-pods.yaml
kubectl get pod plain-pod -o jsonpath='{.metadata.annotations.jafra\.io/injected}{"\n"}'
kubectl get pod profiled-pod -o jsonpath='{.metadata.annotations.jafra\.io/injected-version}{"\n"}'

The plain Pod should print no injection value. The profiled Pod should print 0.0.1. This checkpoint tests mutation, not JFR generation.

3. Java recording

kubectl apply -f deploy/examples/auth-cache.yaml
kubectl rollout status deployment/auth-cache --timeout=120s
kubectl exec deployment/auth-cache -c auth-cache -- ls -lah /jfr-data

After a rotation interval, expect at least one closed profile-N.jfr and one newer recording.

Optionally validate a closed file with a local JDK:

pod="$(kubectl get pod -l app.kubernetes.io/name=auth-cache \
-o jsonpath='{.items[0].metadata.name}')"
kubectl cp "${pod}:/jfr-data/profile-0.jfr" ./profile-0.jfr -c auth-cache
jfr summary ./profile-0.jfr

4. Agent upload

kubectl get daemonset jafra-agent -n jafra-system \
-o jsonpath='{.spec.template.spec.containers[0].env[?(@.name=="JAFRA_MODE")].value}{"\n"}'
kubectl logs -n jafra-system daemonset/jafra-agent

Mode should be grpc. Agent logs should show discovery and successful acknowledgement rather than repeated retries or permanent rejection.

5. Analyzer durability and APIs

kubectl logs -n jafra-system deployment/jafra-analyzer
kubectl exec -n jafra-system deploy/jafra-analyzer -- \
ls -la /var/lib/jafra/analyzer/chunks
kubectl -n jafra-system port-forward svc/jafra-analyzer 8080:8080

Then:

curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/api/v1/status
curl http://127.0.0.1:8080/api/v1/recordings

A healthy end-to-end run has durable chunks, a named workload in the recording catalog, and report or summary output for that workload.