homelab-journey
Healthy, but Not Reading: Moving DSMR-reader to Bletchley
DSMR-reader was Ready but collecting nothing. A failed migration, three layers of monitoring, and tracking PostgreSQL inserts without a GRANT
Infrastructure engineer, homelab builder, public learner. I document the real process — commands, errors, and all — so you don't have to learn it the hard way.
homelab-journey
DSMR-reader was Ready but collecting nothing. A failed migration, three layers of monitoring, and tracking PostgreSQL inserts without a GRANT
deep-dive
One database password, two readers, never on screen. A stray newline, a version I couldn't destroy, and checking two copies without looking.
homelab-journey
Authelia's users were on CloudNativePG, its own state wasn't. Moving it took an inventory, a third tenant and a backup archive workflow.
deep-dive
Control-plane eMMCs take 13–15 GB a day. Most of it is etcd recording twenty leases saying they're still alive, at about 22 KB a time.
cluster-observability
etcd on Talos is not a pod, so nothing scraped it. One patch, a restart Talos refuses, a rolling reboot, and alerts so the metrics can't go quiet.
deep-dive
One NVMe's reported wear sped up 4.5× the evening its writes almost stopped. Its spare blocks and error counters say the flash never noticed.
cluster-observability
A flat line can mean a healthy eMMC or a dead collector. An arm64 exporter, eleven tested alert rules and a dashboard that tell the two apart.
deep-dive
Six months of drive monitoring pointed at the wrong device. The one doing three times the writes has no S.M.A.R.T. at all.
cluster-observability
cert-manager covered 18 certificates. Thirteen more had no owner and five expire on one day. Closing the gap with x509-certificate-exporter.
deep-dive
An NVMe alert at 82% used life, on drives with full spare capacity and zero errors. The wear number turned out to be a clock, not an odometer.
homelab-journey
A dashboard broken since March turned out to be a memory amplifier. One visit took Traefik to 4 GB and hung a node.
deep-dive
A Prometheus alert named a pod IP, not a machine. The 'broken' label turned out to have logged every cluster-wide reboot for three months.