# Magent monitoring Grafana dashboard: `grafana/magent-api-performance.json` (Prometheus UID `prometheus`). Set `MAGENT_METRICS_ENABLED=true`, `MAGENT_METRICS_BIND=0.0.0.0` and `MAGENT_METRICS_PORT=9108` inside the container. Publish port 9108 **only on a private interface**; do not proxy it through the public website. By default the listener is disabled and its bind address is loopback. Production publishes `100.114.113.88:9108:9108` on GRZ-DKR01's Tailscale interface. Prometheus on ANA-DKR01 scrapes it every 15 seconds with job name `magent`. Grafana's existing file provider loads the dashboard from its Magent folder. API labels contain method, matched route template and HTTP status, never raw paths, query values, usernames or credentials. API latency measures time to response headers, not long-lived event-stream duration. Service metrics cover the shared ApiClient, including background calls; custom client paths and CSRF subrequests are not separate calls. CPU/memory refer to the Python backend only. Metrics start at deployment, with no historical backfill. Rate/percentile panels need multiple scrapes; unused services have no series until called. Prometheus retains history across Magent restarts, while process counters reset normally.