Skip to content
back to projects
Observability

Observability stack

InfluxDB + Grafana split out of Home Assistant into their own containers, with bootstrap dashboards for cluster, battery and HA state.

InfluxDB 1.8Grafana 13Telegraf-freePVE metrics
InfluxDB
1.8.10
Grafana
OSS 13
Datasources
2
Dashboards
4

At a glance

cpu34%
net124 mbps
ram58%
io22 mb/s

Out of HAOS

InfluxDB used to live as a Home Assistant add-on, which meant every HA restart took down metric collection for the whole cluster. It now runs as a standalone LXC on the EliteDesk mini, pinned to 1.8.10 via apt-mark hold so a stray upgrade can’t lose data, with its own users for the PVE metric server, HA, and a read-only Grafana account.

text
         ┌──────────────┐
         │ pvestatd × 4 │  push interval: 30s
         └──────┬───────┘
                ▼
        ┌───────────────┐
        │  InfluxDB     │  CT 113 · 192.168.1.118:8086
        │  1.8.10 (held)│  dbs: proxmox · homeassistant
        └───┬───────┬───┘
            │       │  read-only grafana_reader
            ▼       ▼
        ┌───────────────┐
        │   Grafana 13  │  CT 117 · 192.168.1.139:3000
        └───────────────┘  4 dashboards, AU date formats

The dashboards

  • Proxmox cluster. Telmate 10048 with all four nodes wired in, the obvious choice for at-a-glance health.
  • Battery health. Nine custom panels tracking the laptop node’s battery wear over time. Health % is the long-term degradation metric; alerts fire well before it matters.
  • HA state changes. The Grafana 12705 community dashboard with template-variable dropdowns for domain, measurement and entity_id.
  • HA overview. A custom 23-panel home dashboard with collapsible rows for climate, energy and the AGL tariff, smart-device batteries, air quality, Withings and BLE presence.

Provisioning

Datasources are set up via Grafana’s file provisioning so a rebuild brings them back identically, and the UI lock keeps them tamper-proof. The Grafana CT itself reads its InfluxDB password from pmxcfs via a tiny one-shot at start.

yaml
# /etc/grafana/provisioning/datasources/influxdb.yaml
apiVersion: 1
datasources:
  - name: InfluxDB-Proxmox
    type: influxdb
    access: proxy
    url: http://192.168.1.118:8086
    database: proxmox
    user: grafana_reader
    secureJsonData:
      password: ${GRAFANA_READER_PASSWORD}
    editable: false
    isDefault: true
  - name: InfluxDB-HomeAssistant
    type: influxdb
    access: proxy
    url: http://192.168.1.118:8086
    database: homeassistant
    user: grafana_reader
    secureJsonData:
      password: ${GRAFANA_READER_PASSWORD}
    editable: false