Monitoring Stack¶
Eight.ly includes an optional monitoring stack that gives you dashboards, alerting, and searchable logs for this machine and every container you run. Enable it from Settings > Monitoring in the web dashboard.
When to Deploy¶
The monitoring stack is optional and not enabled by default. Consider enabling it when:
- You're running 5 or more containers and want visibility into resource usage
- You want log search to troubleshoot container, Traefik, or Authelia issues without opening the web terminal
- You want alerting for disk space, high CPU, or container crashes
- You're running VMs or LXC containers and want unified metrics
For a server with 1-2 containers, the Eight.ly dashboard's built-in metrics are usually sufficient. The monitoring stack shines when you have enough services that you can't keep track of them by eye.
What Gets Deployed¶
One switch deploys all seven containers together — there's no separate step for logs:
| Service | Purpose |
|---|---|
| Grafana | Dashboards, alerting, and log search |
| Prometheus | Metrics collection and storage — scrapes targets every 15s, capped retention so it can't fill the disk |
| Node Exporter | Host system metrics (CPU, RAM, disk, network) |
| cAdvisor | Per-container metrics (CPU, memory, network, block I/O) |
| AlertManager | Routes and deduplicates alerts fired by Prometheus rules |
| Loki | Stores logs |
| Promtail | Ships logs into Loki — container logs (via the Docker socket), the system journal, and Traefik/Authelia's own log files |
How the pieces fit together
Prometheus scrapes Node Exporter (host metrics) and cAdvisor (container metrics) on a 15-second interval and evaluates alert rules; firing alerts are handed to AlertManager for routing. Promtail tails container logs, the journal, and Traefik/Authelia's logs, and ships them to Loki. Grafana queries both Prometheus and Loki — metrics and logs, from one place.
Opening Grafana¶
Where to find it: click Open Grafana on the Monitoring settings page, which takes you to /grafana/ on your Eight.ly dashboard — Grafana is not published on its own port to your network. It runs behind Eight.ly's own login, and reaching it requires the Operator role or above.
Grafana does still have its own separate credentials underneath (an admin account, generated at install with a random password), because Eight.ly proxies into a real Grafana instance rather than replacing its UI. You won't normally need that admin login unless you're changing Grafana's own settings — signing in to Eight.ly with an Operator or Admin account is what gets you into /grafana/ day to day.
Grafana anonymous viewing exists but isn't reachable from your network
The Grafana container itself is configured with an anonymous Viewer role, which is meaningless on its own because the container only listens on the box's loopback interface — nothing on your LAN can reach port 3000 directly. The only route in is the /grafana/ proxy, which is gated by your Eight.ly login. Don't rely on this as a security boundary if that ever changes; treat the dashboard as the real gate.
Pre-loaded Dashboards¶
Seven dashboards are provisioned automatically:
| Dashboard | What it shows |
|---|---|
| Eight.ly System Overview | CPU, memory, disk, container count, running containers, network traffic |
| Node Exporter | Detailed host metrics — CPU cores, memory breakdown, disk I/O, network per interface |
| Container Metrics | Per-container resource usage (via cAdvisor) — CPU, memory, network, filesystem |
| Network Traffic | Throughput, packets, and errors per interface |
| Traefik Dashboard | Reverse-proxy CPU/memory/network for the Traefik container |
| Servarr Suite | CPU/memory/disk/network for your *arr containers |
| Plex Performance | CPU/memory/disk/network for Plex |
Find your dashboards from the Grafana home page or the dashboards icon in the left sidebar. There's no dedicated Logs dashboard — search logs from Grafana's Explore view instead (see below).
What each dashboard tells you¶
Eight.ly System Overview is your starting point. It shows aggregate CPU and memory usage, container count, running containers, and network throughput. If something looks off, drill into a specific dashboard.
Node Exporter shows host-level detail: per-core CPU usage, memory breakdown, disk I/O per device, and network traffic per interface. Use this to identify hardware bottlenecks.
Container Metrics breaks down resource usage per container. Sort by CPU or memory to find resource hogs.
The Traefik, Servarr, and Plex dashboards are useful only if you're running those services — they scrape metrics those apps expose.
Enabling Monitoring¶
- Sign in to Eight.ly
- Click your username > Settings
- Go to the Monitoring tab
- Toggle Enable Monitoring Stack
- Wait about a minute for containers to start
- Click Open Grafana
Disabling Monitoring¶
Same path: Settings > Monitoring > toggle off. All monitoring containers are stopped and removed. Your metrics and log data volumes are preserved — re-enabling restores your history.
Creating Custom Dashboards¶
The pre-loaded dashboards cover the common cases, but you can build your own:
- In Grafana, click + > Dashboard > Add visualization
- Select Prometheus as the data source for metrics or Loki for logs
- Use the query builder or type PromQL/LogQL directly
- Useful Prometheus metrics to start with:
container_cpu_usage_seconds_total— container CPUcontainer_memory_usage_bytes— container memorynode_filesystem_avail_bytes— free disk spacenode_cpu_seconds_total— host CPU by core
Save as JSON
Export your custom dashboards as JSON (Dashboard settings > JSON Model > Copy) and back them up. If you ever disable and re-enable the monitoring stack, your custom dashboards will survive because data volumes are preserved, but it's good practice to keep a copy.
Setting Up Alerts¶
Grafana can notify you when metrics cross thresholds:
- Open any dashboard panel, click the panel title > Edit
- Go to the Alert tab
- Define a condition (e.g.,
avg(node_filesystem_avail_bytes) < 10737418240for <10GB free) - Set the notification channel — Grafana supports email, Slack, Discord, webhooks, and more
- Configure notification channels from Alerting > Contact points in the sidebar
Common alerts worth setting up:
- Disk space below 10% on any filesystem
- Container restart count increasing (crash loop detection)
- Host memory usage above 90% for 5+ minutes
- Container stopped unexpectedly
For alerting on Eight.ly's own events (a VM stopping, a backup failing, a drive that may be failing) rather than raw metrics, see Notifications — that's a separate, simpler path that doesn't require Grafana at all.
Searching Logs¶
With the monitoring stack enabled, container logs, the system journal, and Traefik/Authelia's own logs are all searchable from Grafana's Explore view (compass icon in the sidebar). Select Loki as the data source, then use LogQL. Exact label names depend on the source (container logs are labelled by container name; Traefik and Authelia logs come from their log files), so start by browsing labels in Explore rather than guessing them:
# All logs from a specific container
{container="plex"}
# Errors across all containers
{job="containers"} |= "error"
# The system journal
{job="system"}
# Traefik or Authelia's own log files
{job="traefik"}
{job="authelia"}
Cross-reference with security logs
If you're monitoring for suspicious activity, combine Loki log queries with the audit trail described in the Security Model guide.