Self-Monitoring (Zabbix)
Every Phase-1 service exposes GET /health and GET /metrics — both JSON. /metrics is a flat libs/obsmetrics snapshot (requests_total, errors_total, uptime_seconds, plus optional service extras) built for Zabbix HTTP polling + JSONPath preprocessing.
Monitoring is agentless: zabbix-integration-service serves GET /webhook/zabbix/monitor (through edge-proxy, authenticated by the X-Monitor-Token header carrying ZABBIX_WEBHOOK_HMAC_SECRET), which concurrently aggregates every service's health + metrics into one JSON payload. The template polls it with a single HTTP-agent master item; all discovery and per-service items are dependent JSONPath slices of that payload — one HTTP request per interval, regardless of service count. No sidecar container, no Docker-socket exposure.
Import steps
- In Zabbix, import the template matching your server version:
- Zabbix 7.0:
monitoring/zabbix-templates/7.0/seyalrun-platform.yaml - Zabbix 8.0:
monitoring/zabbix-templates/8.0/seyalrun-platform.yaml
- Zabbix 7.0:
- Create (or pick) a host for the SeyalRun stack and link the imported SeyalRun Platform template (no agent interface needed).
- Set the template macros on that host:
{$SEYALRUN.MONITOR.URL}=https://<edge-host>:<EDGE_HTTPS_PORT>/webhook/zabbix/monitor{$SEYALRUN.MONITOR.TOKEN}= the stack'sZABBIX_WEBHOOK_HMAC_SECRET(secret-text macro)
- Within a minute the master item polls the endpoint; discovery then populates health, request-rate, error-rate, and uptime items for every service.
What's intentionally not monitored
Error-log tailing (an agent-only capability) was retired along with the sidecar container — 5xx rates surfaced from /metrics cover the alerting need without requiring a log-shipping agent per host.
This is a separate feature from the Zabbix frontend module, which embeds SeyalRun's UI inside Zabbix — self-monitoring only reports platform health as Zabbix items/triggers and requires no module install.