Monitorovanie siete ESPHome
ESPHome je populárny systém na ovládanie zariadení Espressif ESP8266 a ESP32. Tento článok popisuje, ako monitorovať viaceré zariadenia pomocou vlastnej SNMP komponenty ESPHome a populárneho nástroja na monitorovanie siete.
Vďaka tomu môžete detekovať a byť informovaní o anomálnom správaní vašich zariadení, ako sú reštarty, slabý Wi-Fi signál alebo nedostatok voľnej pamäte.
SNMP je podporovaný mnohými aplikáciami, ale tento článok sa zaoberá integráciou s open source nástrojom Zabbix. Predpokladá sa, že máte nainštalovanú a spustenú verziu Zabbix 6.4.
INFO
Príručka na inštaláciu Zabbix je dostupná na webovej stránke Zabbix: https://www.zabbix.com/download
SNMP Komponenta
ESPHome nepodporuje SNMP priamo. Poskytuje však pohodlný spôsob integrácie s externými komponentmi.
Na pridanie SNMP protokolu do zariadenia ESPHome odkazujte na SNMP komponentu umiestnenú na https://github.com/aquaticus/esphome-snmp.
Pridajte nasledujúci kód do vášho ESPHome YAML konfiguračného súboru:
yaml
# Enable SNMP component
snmp:
# Retrieve SNMP component from github
external_components:
- source: github://aquaticus/esphome-snmp
Po nahraní na dosku by ste mali vidieť nasledujúcu správu v logu:
log
[00:00:00][C][snmp:268]: SNMP Config:
[00:00:00][C][snmp:269]: Contact: ""
[00:00:00][C][snmp:270]: Location: ""
Testovanie SNMP
Teraz môžete skúsiť získať nejaké informácie z dosky. Existuje množstvo programov, ktoré môžu prehliadať SNMP dáta. Tu sú niektoré príklady:
Windows
- MIB Browser https://www.ireasoning.com/mibbrowser.shtml
- Paessler SNMP Monitor https://www.paessler.com/snmp_monitor
Linux
Tu je ukážkový kód na použitie v Linuxe. Nahraďte IP adresu 192.168.1.10
hodnotou, ktorá zodpovedá adrese vašej dosky.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0
Výsledok vyššie uvedeného dotazu vyzerá ako ten nižšie. Je to popis systému. Je to SNMP objekt sysDescr
, ktorý sa prekladá na objekt ID 1.3.6.1.2.1.1.1.0
.
log
iso.3.6.1.2.1.1.1.0 = STRING: "ESPHome version 2023.3.2 compiled Mar 29 2023, 00:00:01, Board wemos_d1_mini32”
Prípadne môžete skúsiť získať čas prevádzky systému.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0
Výsledok:
log
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (66281) 0:11:02.81
Hodnota časových tikov sa neustále mení. Každé volanie vám dáva iný počet.
Pre zoznam všetkých objektov poskytovaných komponentom SNMP si pozrite dokumentáciu komponentu.
Šablóny
Stiahnite si súbor so šablónou z: https://github.com/aquaticus/esphome_zabbix_templates
Skladá sa z 3 šablón:
- Esphome by SNMP - základná šablóna
- Esphome ESP32 by SNMP - šablóna pre zariadenia ESP32 (vrátane C3, S2 a podobne)
- Esphome ESP8266 by SNMP - šablóna pre ESP8266
Hlavný rozdiel medzi šablónami ESP8266 a ESP32 je v údajoch o hromade.
Importujte súbor so šablónou kliknutím na tlačidlo Import v Zber údajov→Šablóny.
Hostitelia
Otvorte rozhranie Zabbix a prejdite na Monitorovanie→Hostitelia. Kliknite na Vytvoriť hostiteľa v pravom hornom rohu.
- Ako šablónu vyberte Esphome ESP32 by SNMP alebo Esphome ESP8266 by SNMP
- Pridajte
SNMP
rozhranie. - Vyplňte polia IP alebo DNS
- Ostatné polia ponechajte s predvolenými hodnotami.
- Na konci kliknite na tlačidlo
Pridať
.
V zozname monitorovaných hostiteľov (Monitorovanie→Hostitelia) by ste mali vidieť nový záznam.
V stĺpci Dostupnosť bude ikona SNMP. Spočiatku bude sivá, ale po niekoľkých sekundách by mala zmeniť farbu na zelenú.
Monitorovanie
Akonáhle uvidíte zelenú ikonu, môžete preskúmať údaje SNMP.
Ak kliknete na odkaz Najnovšie údaje, uvidíte zoznam zhromaždených položiek.
Alarmy
Zabbix môže automaticky detekovať anomálne situácie. V terminológii Zabbixu sa to nazýva "Spúšťač". Šablóna ESPHome obsahuje spúšťače, ktoré detekujú typické problémy, napríklad resetovanie dosky. Pre zoznam dostupných spúšťačov vyberte Spúšťače
z menu, keď kliknete na názov hostiteľa.
Tu je predvolený zoznam spúšťačov:
- Zmenený firmvér
- Vysoká strata ICMP ping
- Vysoký čas odozvy ICMP ping
- Nedostupné cez ICMP ping
- Hostiteľ bol reštartovaný
- Žiadne zhromažďovanie údajov SNMP
- Zmenený názov systému
- Slabý WiFi signál po dobu 5 minút
- Strata WiFi pripojenia
Môžete tiež vytvoriť svoje vlastné spúšťače, napríklad na monitorovanie využitia haldy.
Dostupnosť siete
Komponent SNMP môže poskytnúť dostupnosť siete (SNMP objekt sysUpTime1.3.6.1.2.1.1.3
). Tento parameter je kľúčový na detekciu udalostí straty pripojenia.
Bohužiaľ, komponent WiFi v ESPHome neposkytuje tieto informácie. Z tohto dôvodu komponent SNMP predvolene vždy hlási sysUpTime
ako 0.
Aby ste získali zmysluplné údaje, musíte upraviť pôvodný komponent WiFi a pridať jednu funkciu.
Môžete to urobiť manuálne alebo použiť už upravenú verziu z repozitára.
Manuálna úprava komponentu WiFi
Naklonujte a nainštalujte ESPHome z githubu.
Upravte dva súbory wifi_component.cpp
a wifi_component.h
v adresári esphome/components/wifi
.
Na riadku 282 v wifi_component.h
pridajte dva riadky (môže to byť kdekoľvek v verejnej sekcii):
cpp
#define WIFI_CONNECTED_TIMESTAMP_AVAILABLE
uint32_t wifi_connected_timestamp() {return connected_timestamp_;}
protected:
uint32_t connected_timestamp_{0};
V wifi_component.cpp
pridajte na riadku 518 tesne pred log správu "WiFi Connected":
cpp
this->connected_timestamp_ = millis();
Testovanie dostupnosti siete
Skopilujte a nahrajte nový firmware.
Teraz, keď čítate objekt sysUpTime 1.3.6.1.2.1.1.3
, mali by ste získať rôzne hodnoty pri každom vykonaní operácie získania.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0
Mali by ste vidieť hodnotu odlišnú od 0.
Zoznam dostupných OID
Pre zobrazenie úplného zoznamu objektov poskytovaných komponentom SNMP v ESPHome si pozrite zoznam OID