Skip to main content

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
Pod count

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 messageCauseFix
authentication failedWrong ingestion keyCheck kubectl get secret saviour-secret -n saviour -o jsonpath='{.data.api-key}' | base64 -d
connection refused / dial timeoutBackend unreachableCheck global.server.url, egress firewall rules
failed to list pods: forbiddenRBAC not appliedCheck kubectl get clusterrole saviour-centurion, re-install with centurion.rbac.create=true
TLS handshake errorCustom CA or wrong TLS configSee 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:

  1. Go to InfrastructureClusters
  2. Your cluster should appear within 30 seconds of the agents starting
  3. 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