docs(agents): field lessons — 2026-09-02 HA deep session

This commit is contained in:
2026-09-02 17:33:21 -05:00
parent 4f9e7d521e
commit da3f365faa
+23
View File
@@ -702,3 +702,26 @@ Production lives on a Cloudron VPS in Reston VA. See the
index and infrastructure summary. index and infrastructure summary.
All work is tracked in [Redmine](https://projects.knownelement.com) All work is tracked in [Redmine](https://projects.knownelement.com)
(version: Potential to Kinetic Ready, due 2026-09-30). (version: Potential to Kinetic Ready, due 2026-09-30).
- **HA 2026.8 snmp platform traps:** temperature/current-classed sensors with
`state_class: measurement` + non-numeric render ('unknown') are dropped AT
ADD-TIME (ValueError) when a host is asleep — entity vanishes entirely. Fix:
no state_class (stats live in VM) + templates render EMPTY on no-match.
- **Legacy snmp extend OID encoding:** suffix = strlen + ASCII decimal per
char ("garagepdu" = 9.103.97.114.97.103.101.112.100.117 — count carefully).
- **Old APC PDUs (AOS ~2.7):** SNMPv1 only; subtree WALKS die silently, small
single-table walks + GETs work. Garage AP7830 current OID:
.1.3.6.1.4.1.318.1.1.12.2.3.1.1.2.1 (tenths of amps). Relay pattern via
tsys-librenms (the allowed poller vantage) for v1-only/ACL-locked gear.
- **Debian snmpd on monitoring VMs:** snmpd may fail to bind 127.0.0.1:161
(exit 1, "Error opening specified endpoint") when something squats
localhost — bind only the LAN/TS addresses in agentaddress.
- **iDRAC6/7 SNMP:** agents exist but hw MIB tables unpopulated on old fw;
IPMI SDR via iDRAC SSH (`racadm`, one command per exec, legacy syntax on
iDRAC6: `racadm config -g cfgOobSnmp -o ...`) is the data path.
- **jq in one-liner state checks:** use `.state` — not `.s` — a wrong key
silently returns null and looks like an entity outage (cost an hour tonight).
- **HA config flows are REST** (`POST /api/config/config_entries/flow`),
not websocket; websocket only monitors. ha-ws-call.py + REST flow are the
two levers for agent-driven HA setup.
- **mvdan/sh `source a b` silently ignores file b** — source env files
one per line.