Skip to content

ESPHome tīkla uzraudzība

ESPHome ir populāra sistēma Espressif ESP8266 un ESP32 ierīču vadībai. Šajā rakstā aprakstīts, kā uzraudzīt vairākas ierīces, izmantojot pielāgotu ESPHome SNMP komponentu un populāru tīkla uzraudzības rīku.

Pateicoties tam, jūs varat atklāt un saņemt informāciju par jūsu ierīču anomālām darbībām, piemēram, restartiem, zemu Wi-Fi signālu vai brīvas atmiņas trūkumu.

SNMP atbalsta daudzas lietojumprogrammas, bet šajā rakstā tiek apspriesta integrācija ar atvērtā koda rīku Zabbix. Tiek pieņemts, ka jums ir uzstādīta un darbojas Zabbix versija 6.4.

INFO

Zabbix uzstādīšanas ceļvedis ir pieejams Zabbix tīmekļa lapā: https://www.zabbix.com/download

SNMP Komponents

ESPHome pēc noklusējuma neatbalsta SNMP. Bet tas nodrošina ērtu veidu, kā integrēties ar ārējiem komponentiem.

Lai pievienotu SNMP protokolu ESPHome ierīcei, atsaucieties uz SNMP komponentu, kas atrodas https://github.com/aquaticus/esphome-snmp.

Pievienojiet sekojošo kodu savam ESPHome YAML konfigurācijas failam:

yaml
# Enable SNMP component
snmp:

# Retrieve SNMP component from github
external_components:
   - source: github://aquaticus/esphome-snmp

Kad tas ir augšupielādēts uz plates, jums vajadzētu redzēt sekojošo ziņojumu žurnālā:

log
[00:00:00][C][snmp:268]: SNMP Config:
[00:00:00][C][snmp:269]:   Contact: ""
[00:00:00][C][snmp:270]:   Location: ""

SNMP Testēšana

Tagad jūs varat mēģināt iegūt informāciju no plates. Ir daudz programmu, kas var pārlūkot SNMP datus. Šeit ir daži piemēri:

Windows

Linux

Šeit ir parauga kods, ko izmantot Linux. Aizstājiet IP adresi 192.168.1.10 ar vērtību, kas atbilst jūsu plates adresei.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0

Iepriekš minētās vaicājuma rezultāts izskatās kā zemāk redzamais. Tā ir sistēmas apraksts. Tas ir SMTP objekts sysDescr, kas tiek tulkots kā 1.3.6.1.2.1.1.1.0 objekta 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”

Varat mēģināt iegūt sistēmas darbības laiku.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0

Rezultāts:

log
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (66281) 0:11:02.81

Laika atzīmju vērtība nepārtraukti mainās. Katrs izsaukums dod jums citu numuru.

Lai iegūtu visu objektu sarakstu, ko nodrošina SNMP komponents, skatiet komponenta dokumentāciju.

Veidnes

Lejupielādējiet veidnes failu no: https://github.com/aquaticus/esphome_zabbix_templates

Tas sastāv no 3 veidnēm:

  • Esphome by SNMP - pamata veidne
  • Esphome ESP32 by SNMP - veidne ESP32 ierīcēm (ieskaitot C3, S2 un tā tālāk)
  • Esphome ESP8266 by SNMP - veidne ESP8266

Galvenā atšķirība starp ESP8266 un ESP32 veidnēm ir heap dati.

Importējiet veidnes failu, noklikšķinot uz Import pogas Datu vākšana→Veidnes.

Saimnieki

Atveriet Zabbix interfeisu un dodieties uz Uzraudzība→Saimnieki. Noklikšķiniet uz Izveidot saimnieku augšējā labajā stūrī.

Zabbix hosts

  1. Kā veidni izvēlieties Esphome ESP32 by SNMP vai Esphome ESP8266 by SNMP
  2. Pievienojiet SNMP interfeisu.
  3. Aizpildiet IP vai DNS laukus
  4. Atstājiet pārējos laukus ar noklusējuma vērtībām.
  5. Beigās noklikšķiniet uz Pievienot pogas.

Uzraudzīto saimnieku sarakstā (Uzraudzība→Saimnieki) jums vajadzētu redzēt jaunu ierakstu.

SNMP ikona būs Pieejamība kolonnā. Sākotnēji tā būs pelēka, bet pēc dažām sekundēm tai vajadzētu kļūt zaļai.

SNMP availability

Uzraudzība

Kad redzat zaļo ikonu, varat pārbaudīt SNMP datus.

Ja noklikšķināsiet uz Jaunākie dati saites, jūs redzēsiet savākto vienumu sarakstu.

New host

Trauksmes

Zabbix var automātiski noteikt anomālas situācijas. Zabbix terminoloģijā to sauc par "Trigeri". ESPHome veidne ir aprīkota ar trigeriem, kas nosaka tipiskas problēmas, piemēram, dēlis tika atiestatīts. Lai iegūtu pieejamo trigeru sarakstu, izvēlieties Trigeri no izvēlnes, kad noklikšķināt uz saimnieka nosaukuma.

Šeit ir noklusējuma trigeru saraksts:

  • Programmaparatūra ir mainījusies
  • Augsts ICMP ping zudums
  • Augsts ICMP ping atbildes laiks
  • Nav pieejams ar ICMP ping
  • Saimnieks ir restartēts
  • Nav SNMP datu vākšanas
  • Sistēmas nosaukums ir mainījies
  • Vājš WiFi signāls 5 minūtes
  • WiFi savienojums zaudēts

Jūs varat arī izveidot savus trigerus, piemēram, lai uzraudzītu heap izmantošanu.

Tīkla darbspējas laiks

SNMP Komponents var nodrošināt tīkla darbspējas laiku (SNMP objekts sysUpTime1.3.6.1.2.1.1.3). Šis parametrs ir būtisks, lai noteiktu savienojuma zuduma notikumus.

Diemžēl ESPHome WiFi komponents nesniedz šo informāciju. Tāpēc pēc noklusējuma SNMP Komponents vienmēr ziņo sysUpTime kā 0.

Lai iegūtu nozīmīgus datus, jums ir jāmodificē oriģinālais WiFi komponents un jāpievieno viena funkcija.

To var izdarīt manuāli vai izmantot jau modificēto no repozitorija.

Manuāli modificēt WiFi komponentu

Klonējiet un instalējiet ESPHome no github.

Rediģējiet divus failus wifi_component.cpp un wifi_component.h direktorijā esphome/components/wifi.

  1. rindā failā wifi_component.h pievienojiet divas rindas (tās var būt jebkurā publiskajā sadaļā):
cpp
#define WIFI_CONNECTED_TIMESTAMP_AVAILABLE
  uint32_t wifi_connected_timestamp() {return connected_timestamp_;}

 protected:
  uint32_t connected_timestamp_{0};

Failā wifi_component.cpp pievienojiet 518. rindā tieši pirms "WiFi Connected" log ziņojuma:

cpp
this->connected_timestamp_ = millis();

Testēt tīkla darbspējas laiku

Kompilējiet un augšupielādējiet jaunu programmaparatūru.

Tagad, kad lasāt sysUpTime 1.3.6.1.2.1.1.3 objektu, jums vajadzētu iegūt dažādas vērtības katru reizi, kad tiek veikta iegūšanas operācija.

bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0

Jums vajadzētu redzēt vērtību, kas atšķiras no 0.

Pieejamo OID saraksts

Lai redzētu pilnu objektu sarakstu, ko nodrošina ESPHome SNMP Komponents, skatiet OID saraksts