auzui — A Usable Zabbix UI. Modern monitoring SPA + gateway for Zabbix.
5.2K
auzui is a modern, self-hosted monitoring single-page application that runs next to your existing Zabbix web UI — not instead of it. Configuration and administration stay in the classic Zabbix UI for now; auzui focuses entirely on the monitoring workflows that benefit most from a rebuilt, fast, dense, dark-mode-first interface: Problems triage, Host deep-dives, Latest Data, auto-generated dashboards, and infrastructure exploration — all driven by Zabbix's existing JSON-RPC API.
The guiding principle is Zero-Config Deep Observability: auzui derives as much as it can automatically from what Zabbix already knows (item tags, units, templates, trigger expressions, LLD, inventory) instead of asking operators to configure dashboards, panels, or thresholds by hand.
Live, click-through demo (mocked data, no backend required): cygnusnetworks.github.io/auzui/demo.
Problems — live triage board | Host detail — auto-generated dashboard |
Latest Data | Explorer — heatmap drill-down |
Topology — dependency graph | Metrics — faceted metric browser |
Logs — Graylog-backed log panel (optional) | Web Scenarios — HTTP-check status, per-step timing, availability |
⌘K — command palette |
The stock Zabbix web UI (ui/ in the Zabbix source tree) is a large,
~1,700-file PHP monolith — its own MVC, hundreds of controllers, jQuery and
hand-rolled ES6, no build system, server-rendered PNG graphs. It is
functionally complete but shows its age in day-to-day monitoring use.
auzui is a greenfield rebuild of the monitoring surface — Problems,
Hosts, Latest Data, dashboards, topology — with modern navigation, native
charts, a command palette, and a UI built for high information density and
fast triage.
effluence
export) — see Time-series sources below.ssh://),
live stats, start/stop/restart/pull-recreate, registry update checks, and
compose stack actions on SSH-connected hosts. Entirely feature-gated
behind DOCKER_HOSTS; see docs/configuration.md.┌──────────────────────────────────────────────────────────────┐
│ auzui SPA (React + TS, Vite) │
│ TanStack Router/Query · shadcn/ui · uPlot │
└──────────┬────────────────────┬──────────────────┬───────────┘
│ JSON-RPC (Bearer) │ /api/ts │ /api/logs (opt.)
▼ ▼ ▼
api_jsonrpc.php auzui-gateway (optional, small)
(existing PHP UI, – Flux aggregateWindow ("N points over range")
run headless) – hides the Influx token
– optional: Graylog proxy (token, streams, search)
│ │ │
▼ ▼ ▼
PostgreSQL/Timescale InfluxDB 2 Graylog REST API
(effluence) (streams + search)
The existing Zabbix web UI is kept running as a headless API backend
(its JSON-RPC layer lives in the PHP frontend, not the C server — auzui
does not reimplement it). auzui-gateway is needed for the optional
integrations — InfluxDB time-series, Graylog logs, and Kerberos/SPNEGO
SSO; without it, the SPA talks straight to api_jsonrpc.php with
password login and everything else still works. Full breakdown:
docs/architecture.md.
auzui reads time-series through a TimeseriesSource abstraction with two
implementations:
ZabbixApiSource (default, always available) — history.get for
short/recent ranges, trend.get for longer windows. Serves Latest
Data, sparklines, and chart ranges directly from the Zabbix API.InfluxSource (optional, primary when configured) — routes through
auzui-gateway to a Flux aggregateWindow query, downsampled
server-side. Recommended for long ranges and dense multi-item
dashboards.auzui is fully usable without InfluxDB; with an effluence export
configured, charts cover arbitrary ranges with server-side downsampling.
Details, the effluence schema, and the Flux query reference:
docs/timeseries-sources.md.
frontend/ Vite + React 19 + TypeScript SPA
packages/
zabbix-client/ typed JSON-RPC client
timeseries/ TimeseriesSource abstraction (Zabbix + Influx) + LTTB
logs/ LogSource abstraction (Graylog), optional
services/
gateway/ auzui-gateway (FastAPI) — optional Influx/Graylog proxy
docs/ architecture, deployment, time-series notes
site/ static product page (GitHub Pages)
One image contains the gateway and the built SPA (served by the
gateway, single origin). Only ZABBIX_API_URL is required:
docker run -d --name auzui \
-p 127.0.0.1:8080:8000 \
-e ZABBIX_API_URL=https://zabbix.example.com/api_jsonrpc.php \
ghcr.io/cygnusnetworks/auzui:latest
# alternatively, the same image from Docker Hub:
# cygnusnetworks/auzui:latest
The same image is published to both
ghcr.io/cygnusnetworks/auzui
and Docker Hub (cygnusnetworks/auzui)
(linux/amd64 + linux/arm64); tags: latest (main), stable +
X.Y.Z + X.Y (release tags).
For docker compose, copy
docker-compose.example.yml to
docker-compose.yml and adjust:
services:
auzui:
image: ghcr.io/cygnusnetworks/auzui:latest
# alternatively: cygnusnetworks/auzui:latest (Docker Hub)
restart: unless-stopped
ports:
# Bind to localhost; put a reverse proxy (nginx/traefik) in front
# for TLS and external access.
- "127.0.0.1:8080:8000"
environment:
ZABBIX_API_URL: "https://zabbix.example.com/api_jsonrpc.php"
# Optional integrations (all feature-gated, see docs/configuration.md):
# INFLUX_URL / INFLUX_TOKEN / INFLUX_ORG — InfluxDB time-series
# GRAYLOG_URL / GRAYLOG_TOKEN — Graylog log panels
# DOCKER_HOSTS / DOCKER_REGISTRIES — Docker container management
# SPNEGO_ENABLED / KRB5_KTNAME — Kerberos SSO
InfluxDB, Graylog, and Docker stay disabled until their variables are set;
the corresponding UI surfaces hide themselves. Every setting above can also
be provided via a mounted TOML/YAML config file instead of environment
variables (AUZUI_CONFIG_FILE) — see
docs/configuration.md
and examples/. Reverse-proxy pattern with the recommended
security headers: docs/deployment.md.
Prerequisites: Node ≥ 22, pnpm (version pinned via
packageManager in package.json), and uv
for the optional gateway.
# Frontend + workspace packages
pnpm install
pnpm dev # runs the frontend/ dev server
# Optional: auzui-gateway (only needed for InfluxDB/Graylog)
uv sync --package auzui-gateway --extra dev
uv run uvicorn auzui_gateway.main:app --reload --host 0.0.0.0 --port 8080
Or with just:
just install
just dev # frontend
just gateway-dev # gateway
just lint
just test
just build
Configuration reference (Zabbix/Influx/Graylog env vars, nginx pattern, security notes): docs/deployment.md and docs/configuration.md. Full documentation index: docs/README.md.
auzui is an independent, clean-room implementation built purely against Zabbix's documented JSON-RPC API contract. It contains no Zabbix source code. The existing Zabbix web UI is treated as an opaque, already-installed backend service that auzui talks to over HTTP — it is never read, copied, or forked. See NOTICE.md for the full licensing and trademark statement.
just lint and just test before opening a PR.auzui is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only) — see LICENSE. See NOTICE.md for the clean-room statement and trademark notes.
Copyright © 2026 Cygnus Networks GmbH.
"Zabbix" is a trademark of Zabbix LLC / SIA Zabbix. auzui is not affiliated with, endorsed by, or sponsored by Zabbix LLC/SIA; the name is used solely to describe factual interoperability with the Zabbix JSON-RPC API. "Graylog" and "InfluxDB" are trademarks of their respective owners and are used solely to describe optional, factual interoperability.
Content type
Image
Digest
sha256:1262275c7…
Size
71.8 MB
Last updated
11 days ago
docker pull cygnusnetworks/auzui