Grafana 12 spôsobuje 100% CPU na Raspberry Pi – ako to opraviť
Ak prevádzkujete Grafanu na Raspberry Pi s Docker tagom latest a pozorujete extrémne využitie CPU, pomalé dashboardy alebo Cloudflare vracajúci chybu 524 – tento článok je pre vás.
Čo sa stalo
Po niekoľkých týždňoch prevádzky Grafany na RPi 4 som aktualizoval kontajnery a stiahol najnovší Grafana image. Behom minút záťaž systému vyskočila z ~1.0 na 7.0+. Požiadavky na Grafanu trvali 5–8 minút namiesto milisekúnd. Cloudflare Tunnel začal vracať chyby 524.
Logy boli plné:
dashboard-service: No last resource version found, starting from scratch
cleaning up inactive secure values: context deadline exceeded
grafana-apiserver: Timeout or abort while handling
A čo bolo najhoršie – blokové I/O bolo na 6+ TB za 7 týždňov, čo znamenalo, že Grafana nepretržite zaťažovala disk.
Príčina
Grafana 12 zaviedla nový interný API server podobný Kubernetes (systém „unified storage”). Na ARM hardvéri ako Raspberry Pi tento nový systém spôsobuje vážne výkonnostné problémy. API server vytvára nepretržité procesy na pozadí, s ktorými RPi jednoducho nezvláda pri viacerých bežiacich kontajneroch.
Ide o známy problém postihujúci používateľov ARM/RPi s Grafanou 12.x.
Riešenie
Pripnite Docker image Grafany na verziu 10.4.3, čo je LTS vydanie bez týchto ARM problémov:
# docker-compose.yml
grafana:
image: grafana/grafana:10.4.3 # nie latest
Potom znova vytvorte kontajner:
docker stop grafana && docker rm grafana
docker compose up -d grafana
Po prechode na 10.4.3:
- Záťaž klesla späť na ~1.0
- Čas odozvy Grafany: pod 1 sekundu
- Žiadne ďalšie zaťažovanie disku
Dôležitá poznámka o dashboardoch
Ak prejdete z Grafany 12 na 10.4.3, dashboardy uložené v databáze Grafany sa stratia (formát úložiska sa zmenil). Budete ich musieť znovu importovať podľa ID:
| Dashboard | ID |
|---|---|
| Node Exporter Full | 1860 |
| Docker Monitoring | 11074 |
| Speedtest Exporter | 13665 |
Vaše dáta v Prometheus (samotné metriky) sú uložené samostatne a nebudú ovplyvnené.
Záver
Vždy pripínajte verzie Docker images v produkcii. Tag latest je pohodlný, ale môže stiahnuť zmeny narúšajúce funkčnosť. Pre ARM/RPi zostavy sa držte testovaných LTS verzií.
# Správna prax
image: grafana/grafana:10.4.3
# Vyhnite sa v produkcii
image: grafana/grafana:latest