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:

DashboardID
Node Exporter Full1860
Docker Monitoring11074
Speedtest Exporter13665

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