cAdvisor ničí CPU Raspberry Pi – príčiny a alternatívy


cAdvisor je bežne zahrnutý v homelab monitorovacích stackoch spolu s Prometheusom a Grafanou. Zbiera metriky kontajnerov (CPU, RAM, sieť) a posiela ich do Prometheusu. Na desktope alebo serveri funguje dobre. Na Raspberry Pi s 15+ bežiacimi kontajnermi môže byť katastrofálny.

Problém

Záťaž môjho RPi 4 vyskočila z 1.0 na 7.0+ po pridaní cAdvisora. Docker stats ukázali:

cadvisor    115.83%    373MiB / 384MiB

Viac ako 100% využitie CPU a takmer na pamäťovom limite. Logy ukazovali operácie skenovania filesystémov trvajúce 56 minút až 1 hodinu:

fs: disk usage and inodes count on following dirs took 56m4s
fs: disk usage and inodes count on following dirs took 1h1m25s

Prečo sa to deje

cAdvisor predvolene skenuje všetky pripojené filesystémy pre každý kontajner, vrátane Docker overlay filesystémov. Na systéme s mnohými kontajnermi to vytvára obrovské I/O a záťaž CPU. ARM architektúra Raspberry Pi to ešte zhoršuje.

Čiastočné riešenie – agresívne flagy

Môžete znížiť vplyv cAdvisora s týmito flagmi:

cadvisor:
  command:
    - '--docker_only=true'
    - '--housekeeping_interval=60s'
    - '--store_container_labels=false'
    - '--disable_metrics=advtcp,cpu,cpuLoad,disk,diskIO,hugetlb,memory_numa,network,percpu,referenced_memory,resctrl,sched,tcp,udp'

To pomáha, ale na zaťaženom RPi môže stále spôsobovať problémy.

Lepšia alternatíva – preskočte cAdvisor

Pre väčšinu domácich používateľov nie sú metriky CPU a RAM na kontajner kritické. Dôležité je:

  • Je služba hore alebo dole?
  • Je celkový systém zdravý (CPU, RAM, disk)?

Node Exporter už pokrýva zdravie systému perfektne. Pre monitorovanie dostupnosti služieb môžu Home Assistant rest sensory pollovat HTTP endpoint každej služby a upozorniť vás, ak niečo padne.

Výsledok po odstránení cAdvisora

Po odstránení cAdvisora z môjho stacku:

  • Záťaž: 7.0 → 1.0
  • Voľná RAM: zvýšila sa o ~380MB
  • Všetky ostatné služby sa stali responzívnejšími

Odporúčanie

Na Raspberry Pi 4 s viac ako 10 bežiacimi kontajnermi:

  • Preskočte cAdvisor
  • Používajte Node Exporter pre systémové metriky
  • Používajte Home Assistant alebo ľahký nástroj pre monitorovanie dostupnosti služieb