Setup lightweight monitoring: Beszel + Uptime Kuma (replace Grafana/Prometheus) #11
Labels
No labels
Monitoring
automation
bug
duplicate
feature
forgejo
help wanted
invalid
k3s
keycloak
ldap
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lab/homelab#11
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal: lightweight monitoring replacing Grafana/Prometheus
Current kube-prometheus-stack (Prometheus + Grafana + node-exporter + Alertmanager) uses ~1.5GB+ across pods. Replace with a lightweight stack, but keep Grafana running until the new stack is proven working.
Target stack (approved 2026-08-01)
Alerts: Beszel threshold alerts (CPU / mem / disk / agent status) -> ntfy via shoutrrr (ntfy already running in cluster).
Scope / caveats (decided 2026-08-01)
docker.sock/podman.sock, nodes run containerd. Host-level metrics only. If container stats become must-have later: nerdctl docker.sock bridge, or wait for Beszel K8s metrics integration (henrygd/beszel#1586, in progress).Steps
homer/config.yaml).helm uninstall kube-prometheus-stack -n monitoring), remove node-exporter, release ~1.5GB. Close #28 as moot.Decisions still open
Progress
ntfy://:tk_...@ntfy.yukselcloud.com/homelab-alerts(empty username + token = basic auth, works)Monitoring stack (Prometheus + Grafana + node-exporter + Alertmanager → ntfy) is deployed and working. Remaining work: add Prometheus alerting rules, consider Loki for log aggregation, create cluster health Grafana dashboard.
Setup monitoring stackto Setup lightweight monitoring: Beszel + Uptime Kuma (replace Grafana/Prometheus)Progress: step 1 done (2026-08-01)
Beszel hub deployed. Raw manifests in
k3s-ha-cluster/monitoring/beszel/(deployment + service + pvc).monitoring, imagehenrygd/beszel:0.18.7beszel-data(2Gi) — Bound192.168.0.225(servicebeszel).forgejo/workflows/deploy-beszel.yml(trigger:k3s-ha-cluster/monitoring/beszel/**)http://192.168.0.225:8090returns the Beszel dashboard (HTTP 200)APP_URLcurrentlyhttp://192.168.0.225:8090— flip tohttps://beszel.yukselcloud.comwhen the Caddy route lands (step 6)Next: step 2 — Beszel agent DaemonSet.
Progress: steps 1-2 done (2026-08-01)
Beszel hub + agents deployed. All manifests in
k3s-ha-cluster/monitoring/beszel/.192.168.0.225, imagehenrygd/beszel:0.18.7— done, HTTP 200henrygd/beszel-agent:0.18.7— 4/4 nodes Running (172/182/171/181), WebSocket connected to hub.infra-piPending (node offline, picks up when back)monitoring/beszel/secret.yamlis a placeholder (GitHub mirror is public). Real values applied manually:kubectl -n monitoring create secret generic beszel-agent --from-literal=key="<hub public key>" --from-literal=token="<permanent universal token>".forgejo/workflows/deploy-beszel.yml— applies deployment/service/pvc/agent-daemonset, explicitly excludes secret.yaml so the placeholder never overwrites the real secretNext: verify systems appear in the hub dashboard, configure ntfy alerts (step 4), deploy Uptime Kuma (#41).
Progress: PVE hosts monitored (2026-08-01)
Beszel binary agents installed on both bare-metal Proxmox hosts (not via cluster DaemonSet — PVE is a minimal Debian host, no Docker):
lab-pve1(192.168.0.51) —systemdservicebeszel-agent, active, WebSocket connectedlab-pve2(192.168.0.52) — sameInstall method (runs the official install script as root):
Auto-update disabled to keep versions pinned (consistent with #30). Same permanent universal token as the K8s agents, so they auto-registered as new systems
lab-pve1/lab-pve2.Value here: .52 hosts the K3s external MariaDB datastore + NFS (media), so disk/S.M.A.R.T./network monitoring of both hypervisors is useful. Note: host metrics only, no container stats (no Docker socket).
Verify: hub dashboard should now show 6 systems (4 K8s nodes + 2 PVE hosts).