ESPHome omrežno spremljanje
ESPHome je priljubljen sistem za nadzor naprav Espressif ESP8266 in ESP32. Ta članek opisuje, kako spremljati več naprav z uporabo prilagojene ESPHome SNMP komponente in priljubljenega orodja za omrežno spremljanje.
Zahvaljujoč temu lahko zaznate in ste obveščeni o nenavadnih vedenjih vaših naprav, kot so ponovni zagon, šibek Wi-Fi signal ali pomanjkanje prostega pomnilnika.
SNMP podpira veliko aplikacij, vendar ta članek obravnava integracijo z odprtokodnim orodjem Zabbix. Predpostavlja se, da imate nameščeno in delujočo različico Zabbix 6.4.
INFO
Navodila za namestitev Zabbix so na voljo na spletni strani Zabbix: https://www.zabbix.com/download
SNMP komponenta
ESPHome ne podpira SNMP privzeto. Vendar pa omogoča priročen način za integracijo z zunanjimi komponentami.
Za dodajanje SNMP protokola ESPHome napravi se sklicujte na SNMP komponento, ki se nahaja na https://github.com/aquaticus/esphome-snmp.
Dodajte naslednjo kodo v vašo ESPHome YAML konfiguracijsko datoteko:
yaml
# Enable SNMP component
snmp:
# Retrieve SNMP component from github
external_components:
- source: github://aquaticus/esphome-snmp
Ko je naložena na ploščo, bi morali v dnevniku videti naslednje sporočilo:
log
[00:00:00][C][snmp:268]: SNMP Config:
[00:00:00][C][snmp:269]: Contact: ""
[00:00:00][C][snmp:270]: Location: ""
Testiranje SNMP
Zdaj lahko poskusite pridobiti nekaj informacij s plošče. Obstaja veliko programov, ki lahko brskajo po SNMP podatkih. Tukaj je nekaj primerov:
Windows
- MIB Browser https://www.ireasoning.com/mibbrowser.shtml
- Paessler SNMP Monitor https://www.paessler.com/snmp_monitor
Linux
Tukaj je vzorčna koda za uporabo na Linuxu. Zamenjajte IP naslov 192.168.1.10
z vrednostjo, ki ustreza naslovu vaše plošče.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0
Rezultat zgornje poizvedbe je videti kot spodaj. To je opis sistema. To je SMTP objekt sysDescr
, ki se prevede v 1.3.6.1.2.1.1.1.0
ID objekta.
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”
Lahko poskusite pridobiti čas delovanja sistema.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0
Rezultat:
log
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (66281) 0:11:02.81
Vrednost časovnih kljukic se nenehno spreminja. Vsak klic vam da drugačno številko.
Za seznam vseh objektov, ki jih zagotavlja komponenta SNMP, glejte dokumentacijo komponente.
Predloge
Prenesite datoteko predloge iz: https://github.com/aquaticus/esphome_zabbix_templates
Sestavljena je iz 3 predlog:
- Esphome by SNMP - osnovna predloga
- Esphome ESP32 by SNMP - predloga za naprave ESP32 (vključno s C3, S2 in tako naprej)
- Esphome ESP8266 by SNMP - predloga za ESP8266
Glavna razlika med predlogama ESP8266 in ESP32 so podatki o kupu.
Uvozite datoteko predloge s klikom na gumb Import v Zbiranje podatkov→Predloge.
Gostitelji
Odprite vmesnik Zabbix in pojdite na Nadzor→Gostitelji. Kliknite Ustvari gostitelja v zgornjem desnem kotu.
- Kot predlogo izberite Esphome ESP32 by SNMP ali Esphome ESP8266 by SNMP
- Dodajte
SNMP
vmesnik. - Izpolnite polja IP ali DNS
- Preostala polja pustite z privzetimi vrednostmi.
- Na koncu kliknite gumb
Add
.
Na seznamu nadzorovanih gostiteljev (Nadzor→Gostitelji) bi morali videti nov vnos.
V stolpcu Razpoložljivost bo ikona SNMP. Sprva bo siva, vendar bi se po nekaj sekundah morala obarvati zeleno.
Nadzor
Ko vidite zeleno ikono, lahko pregledate podatke SNMP.
Če kliknete na povezavo Najnovejši podatki, boste videli seznam zbranih elementov.
Alarm
Zabbix lahko samodejno zazna nenormalne situacije. V terminologiji Zabbix se to imenuje "Sprožilec". Predloga ESPHome vsebuje sprožilce, ki zaznajo tipične težave, na primer, da je bila plošča ponastavljena. Za seznam razpoložljivih sprožilcev izberite Sprožilci
iz menija, ko kliknete ime gostitelja.
Tukaj je privzeti seznam sprožilcev:
- Programska oprema se je spremenila
- Visoka izguba ICMP pinga
- Visok odzivni čas ICMP pinga
- Nedosegljivo z ICMP pingom
- Gostitelj je bil ponovno zagnan
- Ni zbiranja podatkov SNMP
- Ime sistema se je spremenilo
- Šibek WiFi signal za 5 minut
- WiFi povezava izgubljena
Lahko ustvarite tudi svoje sprožilce, na primer za spremljanje uporabe kupa.
Omrežna razpoložljivost
SNMP komponenta lahko zagotovi omrežno razpoložljivost (SNMP objekt sysUpTime1.3.6.1.2.1.1.3
). Ta parameter je ključen za zaznavanje dogodkov izgube povezave.
Na žalost ESPHome WiFi komponenta ne zagotavlja te informacije. Zaradi tega SNMP komponenta privzeto vedno poroča sysUpTime
kot 0.
Za pridobitev smiselnih podatkov morate spremeniti izvirno WiFi komponento in dodati eno funkcijo.
To lahko storite ročno ali uporabite že spremenjeno iz repozitorija.
Ročna sprememba WiFi komponente
Klonirajte in namestite ESPHome iz GitHuba.
Uredite dve datoteki wifi_component.cpp
in wifi_component.h
v imeniku esphome/components/wifi
.
V vrstici 282 datoteke wifi_component.h
dodajte dve vrstici (lahko kjerkoli v javnem delu):
cpp
#define WIFI_CONNECTED_TIMESTAMP_AVAILABLE
uint32_t wifi_connected_timestamp() {return connected_timestamp_;}
protected:
uint32_t connected_timestamp_{0};
V wifi_component.cpp
dodajte v vrstici 518 tik pred sporočilo dnevnika "WiFi Connected":
cpp
this->connected_timestamp_ = millis();
Preizkus omrežne razpoložljivosti
Sestavite in naložite novo programsko opremo.
Zdaj, ko preberete objekt sysUpTime 1.3.6.1.2.1.1.3
, bi morali dobiti različne vrednosti vsakič, ko se izvede operacija pridobivanja.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0
Videti bi morali vrednost, ki ni 0.
Seznam razpoložljivih OID-ov
Za ogled celotnega seznama objektov, ki jih zagotavlja ESPHome SNMP komponenta, si oglejte seznam OID-ov