ESPHome tinklo stebėjimas
ESPHome yra populiari sistema, skirta valdyti Espressif ESP8266 ir ESP32 įrenginius. Šiame straipsnyje aprašoma, kaip stebėti kelis įrenginius naudojant individualų ESPHome SNMP komponentą ir populiarų tinklo stebėjimo įrankį.
Dėl to galite aptikti ir būti informuoti apie jūsų įrenginių anomalijas, tokias kaip perkrovimai, silpnas Wi-Fi signalas ar laisvos atminties trūkumas.
SNMP palaiko daugelis programų, tačiau šiame straipsnyje aptariama integracija su atvirojo kodo įrankiu Zabbix. Manoma, kad turite įdiegtą ir veikiančią Zabbix 6.4 versiją.
INFO
Zabbix diegimo vadovas yra prieinamas Zabbix tinklalapyje: https://www.zabbix.com/download
SNMP komponentas
ESPHome neturi SNMP palaikymo iš karto. Tačiau jis suteikia patogų būdą integruotis su išoriniais komponentais.
Norėdami pridėti SNMP protokolą prie ESPHome įrenginio, naudokite SNMP komponentą, esantį https://github.com/aquaticus/esphome-snmp.
Pridėkite šį kodą į savo ESPHome YAML konfigūracijos failą:
yaml
# Enable SNMP component
snmp:
# Retrieve SNMP component from github
external_components:
- source: github://aquaticus/esphome-snmp
Kai įkelsite į plokštę, žurnale turėtumėte pamatyti šią žinutę:
log
[00:00:00][C][snmp:268]: SNMP Config:
[00:00:00][C][snmp:269]: Contact: ""
[00:00:00][C][snmp:270]: Location: ""
SNMP testavimas
Dabar galite pabandyti gauti tam tikrą informaciją iš plokštės. Yra daug programų, kurios gali naršyti SNMP duomenis. Štai keletas pavyzdžių:
Windows
- MIB naršyklė https://www.ireasoning.com/mibbrowser.shtml
- Paessler SNMP monitorius https://www.paessler.com/snmp_monitor
Linux
Štai pavyzdinis kodas, kurį galima naudoti Linux. Pakeiskite IP adresą 192.168.1.10
į jūsų plokštės adresą.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0
Aukščiau pateiktos užklausos rezultatas atrodo taip, kaip parodyta žemiau. Tai yra sistemos aprašymas. Tai yra SMTP objektas sysDescr
, kuris verčiamas į 1.3.6.1.2.1.1.1.0
objekto ID.
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”
Pasirinktinai galite pabandyti gauti sistemos veikimo laiką.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0
Rezultatas:
log
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (66281) 0:11:02.81
Laiko žymės vertė nuolat keičiasi. Kiekvienas iškvietimas pateikia skirtingą skaičių.
Visų SNMP komponento teikiamų objektų sąrašą rasite komponento dokumentacijoje.
Šablonai
Atsisiųskite šablono failą iš: https://github.com/aquaticus/esphome_zabbix_templates
Jį sudaro 3 šablonai:
- Esphome by SNMP - pagrindinis šablonas
- Esphome ESP32 by SNMP - šablonas ESP32 įrenginiams (įskaitant C3, S2 ir kt.)
- Esphome ESP8266 by SNMP - šablonas ESP8266
Pagrindinis skirtumas tarp ESP8266 ir ESP32 šablonų yra atminties duomenys.
Importuokite šablono failą spustelėdami Import mygtuką duomenų rinkimo→Šablonai.
Priimančiosios
Atidarykite Zabbix sąsają ir eikite į Stebėjimas→Priimančiosios. Spustelėkite Sukurti priimančiąją viršutiniame dešiniajame kampe.
- Kaip šabloną pasirinkite Esphome ESP32 by SNMP arba Esphome ESP8266 by SNMP
- Pridėkite
SNMP
sąsają. - Užpildykite IP arba DNS laukus
- Likusius laukus palikite su numatytomis reikšmėmis.
- Pabaigoje spustelėkite
Pridėti
mygtuką.
Stebimų priimančiųjų sąraše (Stebėjimas→Priimančiosios) turėtumėte matyti naują įrašą.
Prieinamumo stulpelyje bus SNMP piktograma. Iš pradžių ji bus pilka, bet po kelių sekundžių turėtų tapti žalia.
Stebėjimas
Kai pamatysite žalią piktogramą, galite patikrinti SNMP duomenis.
Jei spustelėsite Naujausi duomenys nuorodą, pamatysite surinktų elementų sąrašą.
Įspėjimai
Zabbix gali automatiškai aptikti anomalijas. Zabbix terminologijoje tai vadinama "Trigeriu". ESPHome šablonas pateikiamas su trigeriais, kurie aptinka tipines problemas, pavyzdžiui, plokštė buvo iš naujo paleista. Norėdami pamatyti galimų trigerių sąrašą, pasirinkite Trigeriai
iš meniu, kai spustelėsite priimančiosios pavadinimą.
Čia yra numatytasis trigerių sąrašas:
- Programinė įranga pasikeitė
- Didelis ICMP ping praradimas
- Didelis ICMP ping atsako laikas
- Neprieinama per ICMP ping
- Priimančioji buvo paleista iš naujo
- Nėra SNMP duomenų rinkimo
- Sistemos pavadinimas pasikeitė
- Silpnas WiFi signalas 5m
- WiFi ryšys prarastas
Taip pat galite sukurti savo trigerius, pavyzdžiui, stebėti krūvos naudojimą.
Tinklo veikimo laikas
SNMP komponentas gali pateikti tinklo veikimo laiką (SNMP objektas sysUpTime1.3.6.1.2.1.1.3
). Šis parametras yra svarbus norint aptikti ryšio praradimo įvykius.
Deja, ESPHome WiFi komponentas šios informacijos nepateikia. Dėl to pagal numatytuosius nustatymus SNMP komponentas visada praneša sysUpTime
kaip 0.
Norėdami gauti prasmingus duomenis, turite modifikuoti originalų WiFi komponentą ir pridėti vieną funkciją.
Tai galite padaryti rankiniu būdu arba naudoti jau modifikuotą iš saugyklos.
Rankiniu būdu modifikuoti WiFi komponentą
Klonuokite ir įdiekite ESPHome iš github.
Redaguokite du failus wifi_component.cpp
ir wifi_component.h
esančius esphome/components/wifi
kataloge.
282 eilutėje wifi_component.h
pridėkite dvi eilutes (tai gali būti bet kur viešoje sekcijoje):
cpp
#define WIFI_CONNECTED_TIMESTAMP_AVAILABLE
uint32_t wifi_connected_timestamp() {return connected_timestamp_;}
protected:
uint32_t connected_timestamp_{0};
wifi_component.cpp
pridėkite 518 eilutėje prieš "WiFi Connected" žurnalo pranešimą:
cpp
this->connected_timestamp_ = millis();
Testuoti tinklo veikimo laiką
Sukompiliuokite ir įkelkite naują programinę įrangą.
Dabar, kai skaitote sysUpTime 1.3.6.1.2.1.1.3
objektą, turėtumėte gauti skirtingas reikšmes kiekvieną kartą atliekant get operaciją.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0
Turėtumėte matyti reikšmę, skirtingą nuo 0.
Galimų OID sąrašas
Norėdami pamatyti visą objektų, kuriuos pateikia ESPHome SNMP komponentas, sąrašą, žiūrėkite OID sąrašas