Skip to content

๐Ÿ“Š Prometheus Monitoring Stack

Host: Homelab ยท Compose: Homelab/Docker/prometheus/compose.yaml
Stack name: prometheus

[!NOTE] Update Available: Updates for this stack are pending in: renovate/docker-dependencies, renovate/major-docker-dependencies.

1. Overview

A comprehensive Prometheus-based monitoring stack with exporters for nearly every service in the homelab. Metrics are collected from AdGuard, UniFi, all *arr applications, qBittorrent, MQTT, PostgreSQL, UPS (NUT), and Immich, then visualised in Grafana.


2. Architecture & Services

Service Image Port Role
adguard_exporter_1 ebrianne/adguard-exporter:v1.14 โ€” โ€”
adguard_exporter_2 ebrianne/adguard-exporter:v1.14 โ€” โ€”
adguard_exporter_3 ebrianne/adguard-exporter:v1.14 โ€” โ€”
adguard_exporter_4 ebrianne/adguard-exporter:v1.14 โ€” โ€”
adguard_exporter_5 ebrianne/adguard-exporter:v1.14 โ€” โ€”
lidarr-exporter ghcr.io/onedr0p/exportarr:v2.3 9709 Lidarr metrics
mqtt-exporter jryberg/mosquitto-exporter:v0.7.8 โ€” MQTT broker metrics
nut-exporter hon95/prometheus-nut-exporter:1.2.1 9995 UPS (NUT) metrics
postgres-exporter prometheuscommunity/postgres-exporter:v0.20.1 โ€” PostgreSQL metrics
prometheus prom/prometheus:v3.14.0 9090 Core metrics storage and query engine
prowlarr-exporter ghcr.io/onedr0p/exportarr:v2.3 9710 Prowlarr metrics
qbittorrent-exporter caseyscarborough/qbittorrent-exporter:v1.3.5 โ€” qBittorrent metrics
radarr-exporter ghcr.io/onedr0p/exportarr:v2.3 9708 Radarr metrics
readarr-exporter ghcr.io/onedr0p/exportarr:v2.3 9713 Readarr metrics
sonarr-exporter ghcr.io/onedr0p/exportarr:v2.3 9707 Sonarr metrics
unpoller ghcr.io/unpoller/unpoller:v3.5.0 โ€” UniFi controller metrics

3. Networking

  • apps โ€” โ€”
  • backend โ€” โ€”
  • database โ€” โ€”

4. Persistent Storage

| Container | Host Path / Volume | Description | |---|---|---|| | prometheus | /docker/data/prometheus/prometheus | prometheus.yml config and TSDB data |


5. Environment Variables

Variable Service Description
adguard_hostname adguard_exporter_1 โ€”
adguard_password adguard_exporter_1 โ€”
adguard_protocol adguard_exporter_1 โ€”
adguard_username adguard_exporter_1 โ€”
interval adguard_exporter_1 โ€”
log_limit adguard_exporter_1 โ€”
adguard_hostname adguard_exporter_2 โ€”
adguard_password adguard_exporter_2 โ€”
adguard_protocol adguard_exporter_2 โ€”
adguard_username adguard_exporter_2 โ€”
interval adguard_exporter_2 โ€”
log_limit adguard_exporter_2 โ€”
adguard_hostname adguard_exporter_3 โ€”
adguard_password adguard_exporter_3 โ€”
adguard_protocol adguard_exporter_3 โ€”
adguard_username adguard_exporter_3 โ€”
interval adguard_exporter_3 โ€”
log_limit adguard_exporter_3 โ€”
adguard_hostname adguard_exporter_4 โ€”
adguard_password adguard_exporter_4 โ€”
adguard_protocol adguard_exporter_4 โ€”
adguard_username adguard_exporter_4 โ€”
interval adguard_exporter_4 โ€”
log_limit adguard_exporter_4 โ€”
adguard_hostname adguard_exporter_5 โ€”
adguard_password adguard_exporter_5 โ€”
adguard_protocol adguard_exporter_5 โ€”
adguard_username adguard_exporter_5 โ€”
interval adguard_exporter_5 โ€”
log_limit adguard_exporter_5 โ€”
APIKEY lidarr-exporter โ€”
PORT lidarr-exporter โ€”
URL lidarr-exporter โ€”
HTTP_PATH nut-exporter โ€”
HTTP_PORT nut-exporter โ€”
LOG_REQUESTS_CONSOLE nut-exporter โ€”
PRINT_METRICS_AND_EXIT nut-exporter โ€”
RUST_LOG nut-exporter โ€”
TZ nut-exporter โ€”
DATA_SOURCE_PASS postgres-exporter โ€”
DATA_SOURCE_URI postgres-exporter โ€”
DATA_SOURCE_USER postgres-exporter โ€”
APIKEY prowlarr-exporter โ€”
PORT prowlarr-exporter โ€”
URL prowlarr-exporter โ€”
QBITTORRENT_BASE_URL qbittorrent-exporter โ€”
QBITTORRENT_PASSWORD qbittorrent-exporter โ€”
QBITTORRENT_USERNAME qbittorrent-exporter โ€”
APIKEY radarr-exporter โ€”
PORT radarr-exporter โ€”
URL radarr-exporter โ€”
APIKEY readarr-exporter โ€”
PORT readarr-exporter โ€”
URL readarr-exporter โ€”
APIKEY sonarr-exporter โ€”
PORT sonarr-exporter โ€”
URL sonarr-exporter โ€”
UP_INFLUXDB_DISABLE unpoller โ€”
UP_POLLER_DEBUG unpoller โ€”
UP_PROMETHEUS_HTTP_LISTEN unpoller โ€”
UP_PROMETHEUS_NAMESPACE unpoller โ€”
UP_UNIFI_CONTROLLER_0_PASS unpoller โ€”
UP_UNIFI_CONTROLLER_0_SAVE_ALARMS unpoller โ€”
UP_UNIFI_CONTROLLER_0_SAVE_ANOMALIES unpoller โ€”
UP_UNIFI_CONTROLLER_0_SAVE_DPI unpoller โ€”
UP_UNIFI_CONTROLLER_0_SAVE_EVENTS unpoller โ€”
UP_UNIFI_CONTROLLER_0_SAVE_IDS unpoller โ€”
UP_UNIFI_CONTROLLER_0_SAVE_SITES unpoller โ€”
UP_UNIFI_CONTROLLER_0_URL unpoller โ€”
UP_UNIFI_CONTROLLER_0_USER unpoller โ€”
UP_UNIFI_DYNAMIC unpoller โ€”

6. Access & Usage

URL Description
http://localhost:9090 Prometheus UI
https://grafana.m1ckyb.com Grafana dashboards (OAuth via Authentik)
# Start
docker compose -f Homelab/Docker/prometheus/compose.yaml up -d

# Reload config without restart
curl -X POST http://localhost:9090/-/reload

# Check all targets
curl http://localhost:9090/api/v1/targets | jq '.data.activeTargets[] | {job:.labels.job, health:.health}'

7. Maintenance & Backup

# Update
docker compose -f Homelab/Docker/prometheus/compose.yaml pull
docker compose -f Homelab/Docker/prometheus/compose.yaml up -d

# Backup Prometheus config (TSDB data is large โ€” consider remote_write instead)
rsync -av /docker/data/prometheus/ /backup/prometheus/