Monitoring Stack
The production monitoring stack runs on homelab_vm as a single Portainer GitOps stack.
Deployment
| Property |
Value |
| Stack name |
monitoring-stack |
| Portainer stack ID |
687 (endpoint 443399) |
| Compose file |
hosts/vms/homelab-vm/monitoring.yaml |
| Deployment method |
GitOps (Portainer pulls from main branch) |
Services
| Service |
Image |
Port |
Purpose |
grafana |
grafana/grafana-oss:12.4.0 |
3300 |
Dashboards & visualization |
prometheus |
prom/prometheus:latest |
9090 |
Metrics collection & storage |
node_exporter |
prom/node-exporter:latest |
9100 (host) |
homelab-vm host metrics |
snmp_exporter |
prom/snmp-exporter:latest |
9116 |
Synology NAS SNMP metrics |
Access
| Service |
URL |
| Grafana (external) |
https://gf.vish.gg |
| Grafana (internal) |
http://192.168.0.210:3300 |
| Prometheus |
http://192.168.0.210:9090 |
| SNMP Exporter |
http://192.168.0.210:9116 |
Grafana Dashboards
All configs are embedded as Docker configs in monitoring.yaml — no bind mounts or separate config files needed.
| Dashboard |
UID |
Source |
| Node Details - Full Metrics (default home) |
node-details-v2 |
DB (imported) |
| Infrastructure Overview - All Devices |
infrastructure-overview-v2 |
Provisioned in monitoring.yaml |
| Synology NAS Monitoring |
synology-dashboard-v2 |
Provisioned in monitoring.yaml |
| Node Exporter Full |
rYdddlPWk |
DB (imported from grafana.com) |
The home dashboard is set via the Grafana org preferences API (persists in grafana-data volume).
Prometheus Scrape Targets
| Job |
Target |
Instance label |
node_exporter |
host.docker.internal:9100 |
homelab-vm |
homelab-node |
100.67.40.126:9100 |
homelab-vm |
raspberry-pis |
100.77.151.40:9100 |
pi-5 |
setillo-node |
100.125.0.20:9100 |
setillo |
calypso-node |
100.103.48.78:9100 |
calypso |
atlantis-node |
100.83.230.112:9100 |
atlantis |
concord-nuc-node |
100.72.55.21:9100 |
concord-nuc |
truenas-node |
100.75.252.64:9100 |
guava |
seattle-node |
100.82.197.124:9100 |
seattle |
proxmox-node |
100.87.12.28:9100 |
proxmox |
setillo-snmp |
100.125.0.20:9116 |
setillo (SNMP) |
calypso-snmp |
100.103.48.78:9116 |
calypso (SNMP) |
atlantis-snmp |
100.83.230.112:9116 |
atlantis (SNMP) |
Notes
- Grafana 12
kubernetesDashboards: This feature toggle is ON by default in Grafana 12 and causes noisy log spam. It is disabled via GF_FEATURE_TOGGLES_DISABLE=kubernetesDashboards in the compose file.
- Image pinning: Grafana is pinned to
12.4.0 to prevent unexpected breaking changes from :latest pulls.
- Admin password:
GF_SECURITY_ADMIN_PASSWORD only applies on first run (empty DB). After that, use grafana cli admin reset-admin-password to change it.
- DB-only dashboards:
node-details-v2 and Node Exporter Full are not in monitoring.yaml — they live only in the grafana-data volume. They would need to be re-imported if the volume is deleted.
Related Documentation
docs/services/individual/grafana.md — full Grafana service reference
docs/admin/monitoring-setup.md — monitoring stack quick reference
docs/admin/monitoring.md — full monitoring & observability guide
hosts/vms/homelab-vm/monitoring.yaml — compose file (source of truth)
Last Updated: 2026-03-08