1. Dependency-aware readiness (built in)
The server exposes two probe endpoints with deliberately different jobs:| Endpoint | Probe | Checks | Auth |
|---|---|---|---|
GET /health | liveness | process is alive (always {"status":"ok"}) | none |
GET /ready | readiness | can actually serve: Postgres + ClickHouse reachable | none |
/ready returns 200 with "status":"ready" and every check "ok" when both
hard dependencies are reachable, and 503 with "status":"not_ready" when
either is unreachable. Both responses carry a small body:
"ok" when a cache is
configured and "not_configured" otherwise; it is never "down".
On the bundled Kubernetes manifests the readiness probe points at /ready
and liveness stays on /health. The effect: a server that is running but
cannot reach its database is taken out of the Service and shows as NotReady,
a state your cluster monitoring (below) can alert on, while liveness stays cheap
so a brief dependency blip never triggers a pod restart. The probe uses a
generous failure threshold so a momentary blip does not flap replicas out of
rotation.
2. Pod-failure alerting with Robusta (opt-in)
Robusta is a Kubernetes-native monitor that watches the API server and posts pod failures (CrashLoopBackOff,
OOMKilled, ImagePullBackOff, Pending/NotReady, Failed, evictions) to
Slack. Because it observes the control plane rather than asking AgentEye, it
alerts even when AgentEye cannot serve at all.
Robusta ships as an opt-in add-on in the release bundle. Enable it with the
standard Robusta Helm chart and the small values file shown below:
-
Add the chart repo and get a Slack bot token (
xoxb-…) for the channel:Because the configuration below keeps everything in-cluster (disableCloudRouting: true), the token comes from a self-hosted Slack app: create an app athttps://api.slack.com/apps, add thechat:writebot scope, install it to your workspace, copy the Bot User OAuth Token (xoxb-…), and invite the bot to the channel (/invite @your-app). -
Create a
values.yamlwith a per-deployment label (clusterName) and your Slack channel, scoped to theagenteyenamespace: -
Install, pinning
--versionto a known-good Robusta chart release (releases) so you never install an untested chart:
What it reports
- Kubernetes pod state (which AgentEye pod is failing and why) and each pod’s image tag, i.e. the running component version.
- No AgentEye event data and no customer data ever leaves the cluster.
- The bundled values restrict alerts to the
agenteyenamespace, so unrelated workloads in the same cluster are not reported.
One place for every deployment
Point every deployment’s Robusta at one shared Slack channel, each with its ownclusterName. Every alert is tagged with that label, so a single channel
shows the health of your whole fleet, and you can tell which deployment is
affected at a glance.
Total-cluster outages
A purely in-cluster watcher cannot report a whole-cluster or network outage (it goes down with the cluster). If you need that, enable the optional Robusta UI sink: setdisableCloudRouting: false and add a robusta_sink (with a
token from robusta gen-config) to sinksConfig. It adds an aggregated
multi-cluster dashboard and flags any cluster that stops checking in.
Troubleshooting
See the Health Monitoring section of enterprise-docs/troubleshooting.md for “no alerts arriving” and “server keeps flappingNotReady”.
