Verify Your Installation
After installing the Saviour Agent Suite, follow these steps to confirm both agents are running and streaming data to the Saviour platform.
Step 1 — Check pod status
All pods should be Running with READY 1/1:
kubectl get pods -n saviour
Expected output:
NAME READY STATUS RESTARTS AGE
saviour-centurion-5d8b9c6f4-x7k2p 1/1 Running 0 2m
saviour-sentinel-abcd1 1/1 Running 0 2m
saviour-sentinel-abcd2 1/1 Running 0 2m
saviour-sentinel-abcd3 1/1 Running 0 2m
You should see:
- 1 Centurion pod (
saviour-centurion-*) — one per cluster - N Sentinel pods (
saviour-sentinel-*) — one per schedulable node
Sentinel runs on every node. The number of Sentinel pods equals your schedulable node count. Control-plane nodes are included by default (via tolerations).
If pods are not Running, check:
# Describe the pod for events
kubectl describe pod -n saviour -l app.kubernetes.io/name=centurion
# Check for image pull errors, secret issues, or RBAC problems
kubectl get events -n saviour --sort-by='.lastTimestamp'
Step 2 — Check Centurion logs
Centurion should connect to the Saviour backend and start watching the cluster:
kubectl logs -n saviour deploy/saviour-centurion --tail=30
Look for lines like:
connected to backend api.saviourops.com
informer cache synced: pods, deployments, services, events...
started event watcher
topology collector running
If you see errors, the most common causes:
| Error message | Cause | Fix |
|---|---|---|
authentication failed | Wrong ingestion key | Check kubectl get secret saviour-secret -n saviour -o jsonpath='{.data.api-key}' | base64 -d |
connection refused / dial timeout | Backend unreachable | Check global.server.url, egress firewall rules |
failed to list pods: forbidden | RBAC not applied | Check kubectl get clusterrole saviour-centurion, re-install with centurion.rbac.create=true |
TLS handshake error | Custom CA or wrong TLS config | See global.server.tls values |
Step 3 — Check Sentinel logs
Pick any Sentinel pod and check it's collecting host metrics:
# Get any Sentinel pod name
SENTINEL_POD=$(kubectl get pods -n saviour -l app.kubernetes.io/name=sentinel -o name | head -1)
kubectl logs -n saviour $SENTINEL_POD --tail=30
Look for lines like:
baseline metrics collector started
process sampler running
journald log collector started
connected to backend
Step 4 — Confirm in the Saviour UI
Open app.saviourops.com:
- Go to Infrastructure → Clusters
- Your cluster should appear within 30 seconds of the agents starting
- The cluster name shown in the UI matches what you set in
global.cluster.name
If your cluster doesn't appear after 2 minutes, proceed to Step 5.
Step 5 — Verify connectivity (advanced)
Run a one-off connectivity test from inside the cluster to confirm the agents can reach the Saviour backend:
kubectl run connectivity-test \
--image=curlimages/curl:latest \
--restart=Never \
--rm -it \
--namespace saviour \
-- curl -sv https://api.saviourops.com/healthz 2>&1 | grep -E "Connected|HTTP|SSL"
Expected: HTTP/2 200 or HTTP/1.1 200 OK
If this fails, the issue is network egress — check your firewall rules, proxy settings, or NetworkPolicy.
Step 6 — Check agent versions
Confirm which versions are running:
kubectl get deploy,ds -n saviour \
-o custom-columns='NAME:.metadata.name,IMAGE:.spec.template.spec.containers[0].image'
Expected output:
NAME IMAGE
deploy/saviour-centurion ghcr.io/saviourops-labs/centurion:v0.1.0
ds/saviour-sentinel ghcr.io/saviourops-labs/sentinel:v0.1.0
Compare these against the latest release notes to see if an upgrade is available.
Quick health check script
Save this as a convenience script for checking cluster health at any time:
#!/usr/bin/env bash
# saviour-health-check.sh
NS="${1:-saviour}"
echo "=== Saviour Agent Health Check ==="
echo ""
echo "--- Pods ---"
kubectl get pods -n "$NS" -l app.kubernetes.io/part-of=saviour
echo ""
echo "--- Agent versions ---"
kubectl get deploy,ds -n "$NS" \
-o custom-columns='NAME:.metadata.name,IMAGE:.spec.template.spec.containers[0].image' \
2>/dev/null
echo ""
echo "--- Recent Centurion logs ---"
kubectl logs -n "$NS" deploy/saviour-centurion --tail=5 2>/dev/null
echo ""
echo "--- Recent events ---"
kubectl get events -n "$NS" --sort-by='.lastTimestamp' | tail -5
Still not working?
Check the Troubleshooting guide for common issues, or contact support at support@saviourops.com with the output of:
kubectl get pods -n saviour
kubectl describe pods -n saviour
kubectl logs -n saviour deploy/saviour-centurion --tail=50