Task 5

System Monitoring

MonitoringPIs/

Prometheus + Grafana, scraping Node Exporter on all nine cluster members, with ten alert rules that page the team over Telegram.

What was asked

Deploy a monitoring solution that observes the health status of the hardware — OS parameters, services, and network functionality — using a tool like Prometheus, Grafana, or CheckMK.

Architecture

Runs standalone via Docker Compose — deliberately not a workload on the Kubernetes cluster it's monitoring, so it stays observable even if the cluster itself is unhealthy.

ComponentRuns whereRole
Node Exporterdirectly on every Pi, as a systemd serviceexposes hardware metrics (CPU, RAM, disk, network, temperature) on :9100
PrometheusDocker containerscrapes all 9 Node Exporter targets every 5 seconds, stores the time series
GrafanaDocker containervisualizes Prometheus data; datasource auto-provisioned on startup, no manual UI step

Nine Node Exporter targets are scraped: the Pi 5 (10.0.0.1, "ServerNode") plus all eight Pi 3 workers by static IP.

Metrics tracked

PanelMetric
CPU utilizationnode_cpu_seconds_total
System load (1m)node_load1
RAM usagenode_memory_MemAvailable_bytes
Disk space (SD card)node_filesystem_avail_bytes
Network received / transmittednode_network_receive_bytes_total / _transmit_bytes_total
CPU temperaturenode_thermal_zone_temp
System uptimenode_boot_time_seconds

Alert rules → Telegram

Ten Grafana alert rules, all wired to the same Telegram chat as a contact point — this monitoring stack is the other consumer of the notification channel built for Task 9.

#RuleConditionPending
1CPU Temperatureabove 80°C1m
2Node Down (any)up below 11m
3ServerNode Downup below 1 for 10.0.0.1:9100fires immediately
4Low Disk Space (ServerNode SSD)below 10% free5m
5High CPU Usageabove 85% (5m avg)5m
6Low Available RAMbelow 100 MiB5m
7High System Loadnode_load1 above 45m
8Network In Spikereceive rate above 10 MiB/s1m
9Cluster Size Changedfewer than 9 node exporters up1m
10NFS Root Read-OnlyNFS root filesystem flips read-onlyfires immediately

Rules 3 and 10 are worth noting: the ServerNode (Pi 5) is both the control plane and the NFS root for every diskless worker (see Architecture and the risk register), so its health — and specifically whether its NFS exports flip read-only — is treated as a first-class, zero-delay alert rather than a generic node-down case.