Monitoring Raspberry Pi

Cześć,

Po krótce pokażę co i jak możesz monitorować w swoim Raspberry Pi, na przykładzie modelu 3B+.

HA natywnie umożliwia monitoring systemu za pomocą integracji System Monitor, np.

sensor:
# The systemmonitor sensor platform allows you to monitor disk usage, memory usage, CPU usage, and running processes.
# https://www.home-assistant.io/integrations/systemmonitor/
  - platform: systemmonitor
    resources:
      - type: processor_use
      - type: load_1m 
      - type: load_5m
      - type: load_15m
      - type: memory_use
      - type: memory_use_percent
      - type: swap_use
      - type: swap_use_percent
      - type: disk_use
      - type: disk_use_percent
      - type: last_boot

To uniwersalna integracja, będzie działać również dla innych urządzeń.

Encja sensor.last_boot pokazuje czas od ostatniego uruchomienia urządzenia, warto to monitorować i dodać automatyzację na to zdarzenie. Pozwala to zauważyć niekontrolowane restarty systemu, przykład z życia wzięty - burza w nocy a ja śpie jak zabity, żona wstaje i wyłącza wszystkie urządzenia z gniazdek, rano dziecko włącza listwę PDU do gniazdka bo nie ma Netfixa :wink:.

Do tego możesz dodać monitoring temperatury procesora Maliny:

sensor:
  - platform: command_line
    name: CPU temperature
    command: "/bin/cat /sys/class/thermal/thermal_zone0/temp"
    unit_of_measurement: '°C'
    value_template: '{{ (value | int /1000) | round(1) }}'    

Dzięki temu komponentowi Raspberry Pi Power Supply Checker możesz sprawdzać poprawność zasilania Raspberry Pi. Po skopiowaniu paczki do /custom_components/ musisz dodać do konfiguracji (poniższy opis dotyczy wersji version: 0.2.0):

binary_sensor:
# Raspberry Pi Power Supply Checker
# https://github.com/custom-components/sensor.rpi_power
  - platform: rpi_power

i zrestartować HA, potem pojawi się nowa encja:

binary_sensor.rpi_power_status
state: off
friendly_name: RPi Power status
icon: 'mdi:raspberry-pi'
device_class: problem

Jak można zauważyć, device_class tej encji to problem co oznacza:


Teraz pozostaje dodać tylko automatyzację z powiadomieniem:

automation:
- id: rpi_power_issue
  alias: RPi Power Problem Notification
  trigger:
  - platform: state
    entity_id: binary_sensor.rpi_power_status
    from: 'off'
    to: 'on'
  action:
  - service: persistent_notification.create
    data_template:
      message: "RPi Power reported problem. Check the logs."
      title: Power Supply Issue

W przypadku wystąpienia problemu dostaniesz powiadomienie a w logach (menu Configuration → Logs) znajdziesz dokładny opis co jest przyczyną problemu.
Przetestowałem działanie tego dodatku podpinając do Raspberry Pi stary zasilacz komórki o parametrach 5V/1A co jest dla Maliny niewystarczające. Co kilka godzin dostawałem powiadomienia ale ani razu urządzenie nie zrestartowało się.

3 Likes

Fajnie, że opisujesz :+1:. Ja też zaimplementowałem monitoring dla RP4. Mnie w szczególności interesowała temp procesora, CPU, memory. Dzięki temu widzę, że motioneye jest zasobnożerny. Co prawda nie mam automatyzacji ale na razie nie mam zagrożenia overloaded RP4 :slight_smile:

Jak opisywałem wyżej, sensor.last_boot pokazuje czas od ostatniego uruchomienia urządzenia:

Capture

Czas liczony od uruchomienia urządzenia określany jest także jako tzw. Uptime (ang.) – czas nieprzerwanej pracy komputera i dostępności usług, które oferuje (na podstawie Wikipedii). W przypadku HA mamy również integrację Uptime:

sensor:
# The uptime sensor platform displays the time since the last Home Assistant restart.
# https://www.home-assistant.io/integrations/uptime/
  - platform: uptime
    unit_of_measurement: hours

Encja sensor.uptime wyświetla czas od ostatniego restartu Home Assistant a dokładnie - restartu usługi Assistant Home, którą wykonujesz np. z poziomu GUI:

Capture

Takie wpisy mam sensors.yaml. Czas od restartu HA to type: last_boot. BTW przydał by się mini UPS do podtrzymania malinki jeśli masz problemy z przerwami energii. Są na Aliexpress :grinning:

#System Monitor configuration

  • platform: systemmonitor
    resources:
    - type: disk_use_percent
    arg: /
    - type: processor_use
    - type: disk_use
    arg: /
    - type: last_boot
    - type: memory_use_percent

#temperature CPU of rasberry PI

  • platform: command_line
    name: CPU Temperature
    command: “cat /sys/class/thermal/thermal_zone0/temp”
    unit_of_measurement: “°C”
    value_template: ‘{{ value | multiply(0.001) | round(1) }}’

Jeszcze jedno pytanko dotyczące utylizacji CPU i memory. Po aktualizacji (update z przebudową bazy) wykres CPU i memory wygląda jak na screenie. Wcześniej natomiast miałem prostą linie. Możesz się pochwalić wykresem?
image

Faktycznie, jest w opisywanej przeze mnie integracji System Monitor , jakoś to przegapiłem.

Capture Capture

Dzięki za screena. Też takie szarpana utylizacja.

[UPDATE 2020-10-07]

Funkcjonalność ta pojawiła się jako natywna integracja w wersji 0.116:

Wydaje się, że masz problem z wyciekiem pamięci (miałem tak w przypadku problemu z Glances).
A tak z innej beczki - platforma systemmonitor działa też na innych platformach (np. amd64) choć oczywiście nie ma tam integracji umożliwiającej kontrolę zasilania (to rozwiązanie jest charakterystyczne dla RPi)

Wtedy jeszcze nie używałem dodatku Glances. Jak nie wiadomo na co zwalić zawsze znajdzie się powód - “problem z wyciekiem pamięci”. Z doświadczenia zawodowego podchodzę do takich rzeczy z dystansem. Z reguły skutkiem problemu z wyciekiem pamięci jest brak dostepnej pamięci RAM, tego nigdy na HA nie doswiadczyłem.

Dlatego napisałem: To uniwersalna integracja, będzie działać również dla innych urządzeń. :slight_smile:

  1. Tam masz opis problemu i rozwiązanie
    https://github.com/hassio-addons/addon-glances/issues/61
    wygląda na to, że ta kwestia na dziś jest rozwiązana (Glances używam od dawna i dotknął mnie ten problem swego czasu)

  2. Taaak, no i nie doszedłem do clou: a chciałem po prostu zasugerować zmianę tematu (gdyż jest to rozwiązanie uniwersalne, a nie ograniczające się do RPI).

@szopen tworząc ten wątek chciałem skupić się wyłącznie na RPi ponieważ chciałem opisać integrację z Raspberry Pi Power Supply Checker oraz pokazać monitoring temperatury, przy okazji wspomniałem co już jest możliwe natywnie w HA i uniwersalne. Na dzień dzisiejszy (prawie) wszystko jest już dostępne w interfejsie w HA, w tym kierunku właśnie idzie HA - wszystko dostępne przez GUI bez grzebania w plikach konfiguracyjnych. Za jakiś czas wątek będzie całkowicie nieaktualny :grin:.

Tak zauważyłem tendencję - yaml’e schudły mi ponad połowę od początku roku :smiley:

A ma to działać również jak HA jest w dokerze?
Poza tym mam problem teki, że rpi_power_checker nie daje się z GUI zainstalować, wywala prompt , że klasa systemu niedostępna (?)

Dla standardowej instalacji (HassOS) od paru miesięcy ta integracja jest systemowa - dostępna z menu integracji, a w świeżych instalacjach wręcz preinstalowana.
Dla dockera w sumie może to nie działać.

System monitor, jak i CPU temp dodane do configuration.yaml działa, tylko to nieszczęsne power_checker


jest w integracjach nawet w instalacjach na innych platformach niż RPi (mam na myśli oczywiście HassOS) - nie jest wymagana instalacja komponentu wskazanego na początku tego wątku.

Tylko on się podczas instalacji odwołuje do SYSFILE = “/sys/class/hwmon/hwmon0/in0_lcrit_alarm”
SYSFILE_LEGACY = “/sys/devices/platform/soc/soc:firmware/get_throttled”
A u mnie tego w systemie nie ma.Dlatego nie działa.