Skip to main content

Verify the installation

This page lists the checks to run after an installation or an upgrade, from the health of the API to the audit chain. Run them in this order: a check depends on the ones above it.

Checks​

CheckCommandExpected result
API alivecurl -fsS <api-url>/healthz{"status": "ok", "version": "1.0.0"}
API readycurl -fsS <api-url>/readyz200, "status": "ready", checks.database and checks.migrations true; redis reports the cache state without making the API not ready
Migrationsnavin-platform status (packages) or python -m eai.migrate --statusEvery version applied, none pending, changed or unknown
Migration gatenavin-platform-db check or python -m eai.migrate --checkExit status 0
Production settingsnavin-platform check (packages)navin-platform check: ok
Services (packages)systemctl status navin-platform.targetAPI, worker and portal active (running)
Pods (Kubernetes)kubectl -n enterprise-ai get podsControl Plane, worker, portal, LiteLLM Running; migration Job Completed
Portalopen <portal-url>Sign in page; GET /api/health of the portal answers
Metricscurl -fsS -H "Authorization: Bearer <metrics-token>" <api-url>/metricsPrometheus text with eai_http_requests_total
Workercurl -fsS http://127.0.0.1:9464/metrics on the worker host or podeai_worker_last_tick_timestamp_seconds recent
Audit chaincurl -fsS -H "Authorization: Bearer <token>" <api-url>/v1/audit/verifyThe chain of the tenant is valid
Identitycurl -fsS -H "Authorization: Bearer <token>" <api-url>/v1/identity/whoamiSubject, tenant and roles
Licencecurl -fsS -H "Authorization: Bearer <token>" <api-url>/v1/licenseLicence state

<api-url>: public URL of the API (<control-plane-url>, or http://127.0.0.1:8080 on the host). <metrics-token>: EAI_METRICS_TOKEN. <token>: token of an administrator (First configuration).

Kubernetes offline checks​

Before a synchronization, check the rendered manifests without a cluster:

helm lint deploy/helm/enterprise-ai -f deploy/helm/enterprise-ai/values-prod.yaml
helm template eai deploy/helm/enterprise-ai -n enterprise-ai -f deploy/helm/enterprise-ai/values-prod.yaml > /tmp/eai.yaml
kubeconform -strict -summary /tmp/eai.yaml

The admission policies are checked with Kyverno and an empty KUBECONFIG, see the Client installation handbook.

Alerts​

After fifteen minutes, no alert of the PrometheusRule eai-slo-cost or of the chart should fire. The meaning of each alert and its runbook: Alerting and Runbooks.

Troubleshooting​

SymptomCauseFix
/readyz answers 503 with database: falseDatabase unreachableCheck EAI_DATABASE_URL (or EAI_RUNTIME_DATABASE_URL), the network and TLS
/readyz answers 503 with migrations: falseSchema emptyRun the migrations (navin-platform-db migrate, migration Job)
/metrics answers 401Token missing or wrongUse EAI_METRICS_TOKEN
Worker metric absentWorker stopped, or EAI_WORKER_METRICS_PORT=0Runbook worker-down