Monitorování sítě ESPHome
ESPHome je populární systém pro ovládání zařízení Espressif ESP8266 a ESP32. Tento článek popisuje, jak monitorovat více zařízení pomocí vlastního komponentu ESPHome SNMP a populárního nástroje pro monitorování sítě.
Díky tomu můžete detekovat a být informováni o anomálním chování vašich zařízení, jako jsou restartování, nízký signál Wi-Fi nebo nedostatek volné paměti.
SNMP je podporován mnoha aplikacemi, ale tento článek se zabývá integrací s open source nástrojem Zabbix. Předpokládá se, že máte nainstalovanou a spuštěnou verzi Zabbix 6.4.
INFO
Průvodce instalací Zabbix je k dispozici na webové stránce Zabbix: https://www.zabbix.com/download
SNMP Komponenta
ESPHome nepodporuje SNMP přímo. Poskytuje však pohodlný způsob integrace s externími komponenty.
Chcete-li přidat SNMP protokol do zařízení ESPHome, odkažte se na SNMP komponentu umístěnou na https://github.com/aquaticus/esphome-snmp.
Přidejte následující kód do vašeho ESPHome YAML konfiguračního souboru:
yaml
# Enable SNMP component
snmp:
# Retrieve SNMP component from github
external_components:
- source: github://aquaticus/esphome-snmp
Po nahrání na desku byste měli v logu vidět následující zprávu:
log
[00:00:00][C][snmp:268]: SNMP Config:
[00:00:00][C][snmp:269]: Contact: ""
[00:00:00][C][snmp:270]: Location: ""
Testování SNMP
Nyní můžete zkusit získat nějaké informace z desky. Existuje mnoho programů, které mohou procházet SNMP data. Zde jsou některé příklady:
Windows
- MIB Browser https://www.ireasoning.com/mibbrowser.shtml
- Paessler SNMP Monitor https://www.paessler.com/snmp_monitor
Linux
Zde je ukázkový kód pro použití na Linuxu. Nahraďte IP adresu 192.168.1.10
hodnotou odpovídající adrese vaší desky.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0
Výsledek výše uvedeného dotazu vypadá jako ten níže. Je to popis systému. Je to SMTP objekt sysDescr
, který se překládá 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”
Volitelně můžete zkusit získat dobu provozu systému.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0
Výsledek:
log
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (66281) 0:11:02.81
Hodnota časových tiků se neustále mění. Každé volání vám dá jiné číslo.
Pro seznam všech objektů poskytovaných komponentou SNMP si přečtěte dokumentaci komponenty.
Šablony
Stáhněte si soubor šablony z: https://github.com/aquaticus/esphome_zabbix_templates
Skládá se ze 3 šablon:
- Esphome by SNMP - základní šablona
- Esphome ESP32 by SNMP - šablona pro zařízení ESP32 (včetně C3, S2 a tak dále)
- Esphome ESP8266 by SNMP - šablona pro ESP8266
Hlavní rozdíl mezi šablonami ESP8266 a ESP32 je v datech o haldě.
Importujte soubor šablony kliknutím na tlačítko Import v sekci Sběr dat→Šablony.
Hostitelé
Otevřete rozhraní Zabbix a přejděte na Monitorování→Hostitelé. Klikněte na Vytvořit hostitele v pravém horním rohu.
- Jako šablonu vyberte Esphome ESP32 by SNMP nebo Esphome ESP8266 by SNMP
- Přidejte
SNMP
rozhraní. - Vyplňte pole IP nebo DNS
- Ostatní pole ponechte s výchozími hodnotami.
- Na konci klikněte na tlačítko
Přidat
.
Na seznamu monitorovaných hostitelů (Monitorování→Hostitelé) byste měli vidět nový záznam.
Ve sloupci Dostupnost bude ikona SNMP. Zpočátku bude šedá, ale po několika sekundách by se měla změnit na zelenou.
Monitorování
Jakmile uvidíte zelenou ikonu, můžete zkoumat data SNMP.
Pokud kliknete na odkaz Nejnovější data, uvidíte seznam shromážděných položek.
Alarmy
Zabbix může automaticky detekovat anomální situace. V terminologii Zabbixu se tomu říká "Trigger". Šablona ESPHome obsahuje triggery, které detekují typické problémy, například resetování desky. Pro seznam dostupných triggerů vyberte Triggery
z menu, když kliknete na jméno hostitele.
Zde je výchozí seznam triggerů:
- Firmware byl změněn
- Vysoká ztráta ICMP ping
- Vysoká doba odezvy ICMP ping
- Nedostupné pomocí ICMP ping
- Hostitel byl restartován
- Žádný sběr dat SNMP
- Název systému byl změněn
- Slabý WiFi signál po dobu 5 minut
- Ztráta WiFi připojení
Můžete také vytvořit své vlastní spouštěče, například pro monitorování využití haldy.
Dostupnost sítě
Komponenta SNMP může poskytnout dostupnost sítě (SNMP objekt sysUpTime1.3.6.1.2.1.1.3
). Tento parametr je klíčový pro detekci událostí ztráty připojení.
Bohužel komponenta WiFi v ESPHome tuto informaci neposkytuje. Z tohoto důvodu komponenta SNMP ve výchozím nastavení vždy hlásí sysUpTime
jako 0.
Abyste získali smysluplná data, musíte upravit původní komponentu WiFi a přidat jednu funkci.
Můžete to udělat ručně nebo použít již upravenou verzi z repozitáře.
Ruční úprava komponenty WiFi
Naklonujte a nainstalujte ESPHome z githubu.
Upravte dva soubory wifi_component.cpp
a wifi_component.h
ve složce esphome/components/wifi
.
Na řádku 282 v wifi_component.h
přidejte dva řádky (může být kdekoli ve veřejné sekci):
cpp
#define WIFI_CONNECTED_TIMESTAMP_AVAILABLE
uint32_t wifi_connected_timestamp() {return connected_timestamp_;}
protected:
uint32_t connected_timestamp_{0};
V wifi_component.cpp
přidejte na řádek 518 těsně před logovací zprávu "WiFi Connected":
cpp
this->connected_timestamp_ = millis();
Test dostupnosti sítě
Zkompilujte a nahrajte nový firmware.
Nyní, když čtete objekt sysUpTime 1.3.6.1.2.1.1.3
, měli byste získat různé hodnoty pokaždé, když je provedena operace get.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0
Měli byste vidět hodnotu odlišnou od 0.
Seznam dostupných OID
Pro zobrazení úplného seznamu objektů poskytovaných komponentou SNMP v ESPHome viz seznam OID