edge-1 is a Dell Wyse 3040 on a 7.3 GB internal eMMC (not the N100/NVMe the README assumed). Unbounded docker json logs (a single zwave-js log had grown to 214 MB) plus a persistent journald were churning the flash. Move all logging off local flash and ship it to Loki instead: - journald Storage=volatile (RAM), size-capped; purge the on-disk store - docker json-file -> journald log driver (no container json logs on disk) - Grafana Alloy (Arch pkg) tails the RAM journal -> Loki, WAL on /run tmpfs Loki endpoint: the unauthenticated srv-network Loki is firewalled off the IoT VLAN, so Alloy pushes to the authenticated cluster ingress (https://loki.renner.uno) with a dedicated 'edge-1' basic-auth user — its htpasswd line is added to the loki-basic-auth cluster secret, plaintext in the edge_host ansible vault. Delivery activates once Flux reconciles that secret; until then Alloy 401s and buffers in RAM. Flash longevity: noatime on root, weekly fstrim.timer, and a weekly edge-emmc-health check of the JEDEC life-time / pre-EOL estimators. The Alloy config is purpose-built in the edge-host role rather than reusing the shared monitoring-agent role: that role is Debian-oriented (apt + GitHub binary), force-enables a docker log source that would double-ship against the journald driver, and always configures a Prometheus remote-write whose endpoint is unreachable from the IoT VLAN. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4 lines
51 B
Django/Jinja
4 lines
51 B
Django/Jinja
{
|
|
"log-driver": "{{ edge_docker_log_driver }}"
|
|
}
|