ESPHome nätverksövervakning
ESPHome är ett populärt system för att styra Espressif ESP8266 och ESP32 enheter. Denna artikel beskriver hur man övervakar flera enheter med hjälp av en anpassad ESPHome SNMP-komponent och ett populärt nätverksövervakningsverktyg.
Tack vare detta kan du upptäcka och bli informerad om onormala beteenden hos dina enheter, som omstarter, svag Wi-Fi-signal eller brist på ledigt minne.
SNMP stöds av många applikationer, men denna artikel diskuterar integration med det öppna källkodsverktyget Zabbix. Det antas att du har Zabbix version 6.4 installerad och igång.
INFO
Zabbix installationsguide finns tillgänglig på Zabbix webbplats: https://www.zabbix.com/download
SNMP-komponent
ESPHome stöder inte SNMP direkt. Men det ger ett bekvämt sätt att integrera med externa komponenter.
För att lägga till SNMP-protokoll till ESPHome-enhet, referera till SNMP-komponenten som finns på https://github.com/aquaticus/esphome-snmp.
Lägg till följande kod i din ESPHome YAML-konfigurationsfil:
yaml
# Enable SNMP component
snmp:
# Retrieve SNMP component from github
external_components:
- source: github://aquaticus/esphome-snmp
När den laddas upp till ett kort bör du se följande meddelande i loggen:
log
[00:00:00][C][snmp:268]: SNMP Config:
[00:00:00][C][snmp:269]: Contact: ""
[00:00:00][C][snmp:270]: Location: ""
Testa SNMP
Nu kan du försöka hämta information från kortet. Det finns många program som kan bläddra i SNMP-data. Här är några exempel:
Windows
- MIB Browser https://www.ireasoning.com/mibbrowser.shtml
- Paessler SNMP Monitor https://www.paessler.com/snmp_monitor
Linux
Här är ett exempel på kod att använda på Linux. Byt ut IP-adressen 192.168.1.10
till ett värde som matchar adressen till ditt kort.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.1.0
Resultatet av ovanstående fråga ser ut som nedan. Det är en beskrivning av systemet. Det är SMTP-objektet sysDescr
som översätts till 1.3.6.1.2.1.1.1.0
objekt-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”
Du kan valfritt försöka få systemets drifttid.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.25.1.1.0
Resultatet:
log
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (66281) 0:11:02.81
Tidsvärdet ändras kontinuerligt. Varje anrop ger dig ett annat nummer.
För en lista över alla objekt som tillhandahålls av SNMP-komponenten, se komponentdokumentationen.
Mallar
Ladda ner mallfilen från: https://github.com/aquaticus/esphome_zabbix_templates
Den består av 3 mallar:
- Esphome by SNMP - basmall
- Esphome ESP32 by SNMP - mall för ESP32-enheter (inklusive C3, S2 och så vidare)
- Esphome ESP8266 by SNMP - mall för ESP8266
Den största skillnaden mellan ESP8266 och ESP32-mallar är heap-data.
Importera mallfilen genom att klicka på Import knappen i Datainsamling→Mallar.
Värdar
Öppna Zabbix-gränssnittet och gå till Övervakning→Värdar. Klicka på Skapa värd i det övre högra hörnet.
- Som mall, välj Esphome ESP32 by SNMP eller Esphome ESP8266 by SNMP
- Lägg till
SNMP
-gränssnitt. - Fyll i IP- eller DNS-fälten
- Lämna resten av fälten med standardvärden.
- Klicka på
Lägg till
-knappen i slutet.
På listan över övervakade värdar (Övervakning→Värdar) bör du se en ny post.
Det kommer att finnas en SNMP-ikon i Tillgänglighet-kolumnen. Inledningsvis kommer den att vara grå, men efter några sekunder bör den bli grön.
Övervakning
När du ser den gröna ikonen kan du undersöka SNMP-data.
Om du klickar på Senaste data-länken ser du listan över insamlade objekt.
Larm
Zabbix kan automatiskt upptäcka onormala situationer. I Zabbix-terminologi kallas det "Trigger". ESPHome-mallen levereras med triggers som upptäcker typiska problem, till exempel att kortet har återställts. För en lista över tillgängliga triggers, välj Triggers
från menyn när du klickar på värdnamnet.
Här är en standardlista över triggers:
- Firmware har ändrats
- Hög ICMP pingförlust
- Hög ICMP ping svarstid
- Otillgänglig via ICMP ping
- Värden har startats om
- Ingen SNMP-datainsamling
- Systemnamnet har ändrats
- Svag WiFi-signal i 5 minuter
- WiFi-anslutning förlorad
Du kan också skapa dina egna triggers, till exempel för att övervaka heap-användning.
Nätverksdrifttid
SNMP-komponenten kan tillhandahålla nätverksdrifttid (SNMP-objekt sysUpTime1.3.6.1.2.1.1.3
). Denna parameter är avgörande för att upptäcka händelser av förlorad anslutning.
Tyvärr tillhandahåller inte ESPHome WiFi-komponenten denna information. På grund av detta rapporterar SNMP-komponenten som standard alltid sysUpTime
som 0.
För att få meningsfull data måste du modifiera den ursprungliga WiFi-komponenten och lägga till en funktion.
Du kan göra det manuellt eller använda den som redan är modifierad från lagringsplatsen.
Modifiera WiFi-komponenten manuellt
Klona och installera ESPHome från GitHub.
Redigera två filer wifi_component.cpp
och wifi_component.h
i esphome/components/wifi
-katalogen.
På rad 282 i wifi_component.h
lägg till två rader (det kan vara var som helst i den publika sektionen):
cpp
#define WIFI_CONNECTED_TIMESTAMP_AVAILABLE
uint32_t wifi_connected_timestamp() {return connected_timestamp_;}
protected:
uint32_t connected_timestamp_{0};
I wifi_component.cpp
lägg till på rad 518 precis före loggmeddelandet "WiFi Connected":
cpp
this->connected_timestamp_ = millis();
Testa nätverksdrifttid
Kompilera och ladda upp ny firmware.
Nu när du läser sysUpTime 1.3.6.1.2.1.1.3
-objektet bör du få olika värden varje gång en get-operation utförs.
bash
snmpget -v2c -c public 192.168.1.10 1.3.6.1.2.1.1.3.0
Du bör se ett värde som är annorlunda än 0.
Lista över tillgängliga OID:er
För att se en fullständig lista över objekt som tillhandahålls av ESPHome SNMP-komponenten, se OID-lista