ESPHome-verkkovalvonta
ESPHome on suosittu järjestelmä Espressif ESP8266- ja ESP32-laitteiden hallintaan. Tämä artikkeli kuvaa, kuinka voit valvoa useita laitteita käyttämällä mukautettua ESPHome SNMP -komponenttia ja suosittua verkkovalvontatyökalua.
Tämän ansiosta voit havaita ja saada tietoa laitteidesi epänormaalista käyttäytymisestä, kuten uudelleenkäynnistyksistä, heikosta Wi-Fi-signaalista tai vapaan muistin puutteesta.
SNMP:tä tukevat monet sovellukset, mutta tässä artikkelissa käsitellään integraatiota avoimen lähdekoodin työkalun Zabbixin kanssa. Oletetaan, että sinulla on Zabbix-versio 6.4 asennettuna ja käynnissä.
INFO
Zabbixin asennusopas on saatavilla Zabbixin verkkosivulla: https://www.zabbix.com/download
SNMP-komponentti
ESPHome ei tue SNMP:tä suoraan. Mutta se tarjoaa kätevän tavan integroitua ulkoisten komponenttien kanssa.
Lisätäksesi SNMP-protokollan ESPHome-laitteeseen, viittaa SNMP-komponenttiin, joka sijaitsee osoitteessa https://github.com/aquaticus/esphome-snmp.
Lisää seuraava koodi ESPHome YAML -määritystiedostoosi:
yaml
# Enable SNMP component
snmp:
# Retrieve SNMP component from github
external_components:
- source: github://aquaticus/esphome-snmp
Kun lataat sen kortille, sinun pitäisi nähdä seuraava viesti lokissa:
log
[00:00:00][C][snmp:268]: SNMP Config:
[00:00:00][C][snmp:269]: Contact: ""
[00:00:00][C][snmp:270]: Location: ""
SNMP:n testaaminen
Nyt voit yrittää hakea tietoja kortilta. On olemassa monia ohjelmia, jotka voivat selata SNMP-tietoja. Tässä on joitakin esimerkkejä:
Windows
- MIB Browser https://www.ireasoning.com/mibbrowser.shtml
- Paessler SNMP Monitor https://www.paessler.com/snmp_monitor
Linux
Tässä on esimerkkikoodi käytettäväksi Linuxissa. Korvaa IP-osoite 192.168.1.10
osoitteella, joka vastaa korttisi osoitetta.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0
Yllä olevan kyselyn tulos näyttää seuraavalta. Se on järjestelmän kuvaus. Se on SMTP-objekti sysDescr
, joka kääntyy objektitunnukseksi 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”
Vaihtoehtoisesti voit yrittää saada järjestelmän käyttöajan.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0
Tulos:
log
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (66281) 0:11:02.81
Aikatikkien arvo muuttuu jatkuvasti. Jokainen kutsu antaa sinulle eri numeron.
Luettelo kaikista SNMP-komponentin tarjoamista objekteista löytyy komponentin dokumentaatiosta.
Mallit
Lataa mallipaketti osoitteesta: https://github.com/aquaticus/esphome_zabbix_templates
Se koostuu kolmesta mallista:
- Esphome by SNMP - perusmalli
- Esphome ESP32 by SNMP - malli ESP32-laitteille (mukaan lukien C3, S2 ja niin edelleen)
- Esphome ESP8266 by SNMP - malli ESP8266:lle
Pääasiallinen ero ESP8266- ja ESP32-mallien välillä on heap-tiedot.
Tuo mallipaketti napsauttamalla Tuo -painiketta kohdassa Tietojen keräys→Mallit.
Isännät
Avaa Zabbix-käyttöliittymä ja siirry kohtaan Valvonta→Isännät. Napsauta Luo isäntä oikeassa yläkulmassa.
- Valitse malliksi Esphome ESP32 by SNMP tai Esphome ESP8266 by SNMP
- Lisää
SNMP
-liitäntä. - Täytä IP- tai DNS-kentät
- Jätä loput kentät oletusarvoihin.
- Lopuksi napsauta
Lisää
-painiketta.
Valvottujen isäntien luettelossa (Valvonta→Isännät) sinun pitäisi nähdä uusi merkintä.
SNMP-kuvake näkyy Saatavuus-sarakkeessa. Aluksi se on harmaana, mutta muutaman sekunnin kuluttua sen pitäisi muuttua vihreäksi.
Valvonta
Kun näet vihreän kuvakkeen, voit tarkastella SNMP-tietoja.
Jos napsautat Viimeisimmät tiedot -linkkiä, näet kerättyjen kohteiden luettelon.
Hälytykset
Zabbix voi automaattisesti havaita poikkeuksellisia tilanteita. Zabbixin terminologiassa tätä kutsutaan "Laukaisuksi". ESPHome-malli sisältää laukaisimia, jotka havaitsevat tyypillisiä ongelmia, esimerkiksi kortti on nollattu. Saatavilla olevien laukaisimien luettelon saat valitsemalla Laukaisut
valikosta, kun napsautat isännän nimeä.
Tässä on oletusluettelo laukaisimista:
- Laiteohjelmisto on muuttunut
- Korkea ICMP-ping-häviö
- Korkea ICMP-ping-vastausaika
- Ei saavutettavissa ICMP-pingillä
- Isäntä on käynnistetty uudelleen
- Ei SNMP-tietojen keräystä
- Järjestelmän nimi on muuttunut
- Heikko WiFi-signaali 5 minuutin ajan
- WiFi-yhteys katkennut
Voit myös luoda omia laukaisimia, esimerkiksi valvoaksesi kasan käyttöä.
Verkon käyttöaika
SNMP-komponentti voi tarjota verkon käyttöajan (SNMP-objekti sysUpTime1.3.6.1.2.1.1.3
). Tämä parametri on ratkaisevan tärkeä yhteyden katkeamisen havaitsemiseksi.
Valitettavasti ESPHome WiFi -komponentti ei tarjoa tätä tietoa. Tästä syystä SNMP-komponentti raportoi oletuksena aina sysUpTime
arvoksi 0.
Saadaksesi merkityksellisiä tietoja sinun on muokattava alkuperäistä WiFi-komponenttia ja lisättävä yksi funktio.
Voit tehdä sen manuaalisesti tai käyttää jo muokattua versiota tietovarastosta.
Muokkaa WiFi-komponenttia manuaalisesti
Kloonaa ja asenna ESPHome GitHubista.
Muokkaa kahta tiedostoa wifi_component.cpp
ja wifi_component.h
hakemistossa esphome/components/wifi
.
Rivillä 282 tiedostossa wifi_component.h
lisää kaksi riviä (ne voivat olla missä tahansa julkisessa osiossa):
cpp
#define WIFI_CONNECTED_TIMESTAMP_AVAILABLE
uint32_t wifi_connected_timestamp() {return connected_timestamp_;}
protected:
uint32_t connected_timestamp_{0};
Tiedostossa wifi_component.cpp
lisää riville 518 juuri ennen "WiFi Connected" lokiviestiä:
cpp
this->connected_timestamp_ = millis();
Testaa verkon käyttöaika
Käännä ja lataa uusi laiteohjelmisto.
Nyt kun luet sysUpTime 1.3.6.1.2.1.1.3
objektin, sinun pitäisi saada eri arvot joka kerta, kun get-operaatio suoritetaan.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0
Sinun pitäisi nähdä arvo, joka on eri kuin 0.
Saatavilla olevien OID:ien luettelo
Katso täydellinen luettelo ESPHome SNMP -komponentin tarjoamista objekteista OID-luettelo