PWX-12-4422  ·  SNMP Manuál

Monitoring cez SNMP

Konfigurácia agenta, OID referencia, traps a integrácia s NMS systémami (Zabbix, PRTG, LibreNMS).

SNMP v2c UDP 161 (agent)  ·  UDP 162 (traps) Enterprise OID 1.3.6.1.4.1.62751 RFC 1628 kompatibilný

1 Prehľad SNMP

PWX-12-4422 obsahuje vstavaného SNMP v2c agenta (lwIP stack) bežiaceho na komunikačnom module ESP32. Agent umožňuje monitorovacím systémom (NMS) čítať live dáta UPS a prijímať trap notifikácie o udalostiach — bez potreby cloudu, bez akéhokoľvek ďalšieho softvéru.

  • Napätie a prúd na každom z 12 výstupov
  • Stav relé výstupov (ZAP/VYP)
  • Napätie batériového bloku a článkov
  • AC vstupné napätie zo siete
  • Teplota dosky (board + MCU)
  • Uptime zariadenia
  • Výpadok AC napájania (batéria → sieť)
  • Obnova AC napájania
  • Prekročenie prahu vstupného napätia
  • Vysoká teplota (> prah)
  • Zmena stavu výstupného portu
  • Agent port: UDP 161
  • Trap port: UDP 162 (cieľový server)
  • Protokol: SNMPv2c
  • Community string: konfigurovateľný
  • Dosah: rovnaká LAN alebo VPN
  • RFC 1628 (UPS-MIB) kompatibilný
Enterprise OID: Zariadenie používa privátny OID strom 1.3.6.1.4.1.62751 (PowerSentrix enterprise). Štandardný MIB-II system group (1.3.6.1.2.1.1) je tiež implementovaný — sysDescr, sysUpTime, sysContact, sysName, sysLocation.

2 Konfigurácia SNMP agenta

SNMP sa nastavuje cez vstavaný webový manažment UPS zariadenia. Otvorte prehliadač, zadajte IP adresu UPS a prejdite na Settings → SNMP.

Parametre SNMP nastavení

Parameter Predvolená hodnota Popis
snmpEnabled 0 (vypnutý) Zapnutie/vypnutie SNMP agenta. Po zmene je potrebný reštart zariadenia.
snmpSysName ESP32_Core_board_V2 Meno zariadenia (sysName OID). Odporúčame nastaviť na popis umiestnenia, napr. UPS-ServerRoom-A.
snmpSysDescription simple_snmp_agent Popis zariadenia (sysDescr OID). Odporúčame: PowerSentrix PWX-12-4422.
snmpContact yourmail@contact.com Kontaktná osoba/email pre sysContact OID.
snmpSysLocation Your Institute or Company Fyzická poloha zariadenia (sysLocation OID). Napr. Rack A, Server Room 1, Building B.
snmpServerAddress prázdny IP adresa cieľového servera pre trap notifikácie (UDP port 162). Napr. 192.168.1.50. Ak je prázdny, traps sa neodosielajú.
Community string: Aktuálna implementácia SNMP agenta používa community string public pre čítanie (GET/WALK). Community string nie je konfigurovateľný cez Web Management — je napevno nastavený v firmvéri. Pre produkčné nasadenie odporúčame izolovať SNMP na management VLAN.

3 OID referencia

Kompletný zoznam SNMP objektov implementovaných v zariadení PWX-12-4422. RW = čítanie aj zápis (SET), RO = len čítanie (GET).

System Group — štandardný MIB-II

Tieto OIDy sú súčasťou štandardného MIB-II (RFC 1213). Väčšina NMS ich rozpoznáva automaticky — nie je potrebné načítať vlastný MIB.
OIDObjektTypR/WPopis
1.3.6.1.2.1.1.1.0sysDescrOCTET STRINGROPopis zariadenia — konfigurovateľný cez snmpSysDescription
1.3.6.1.2.1.1.3.0sysUpTimeTimeTicksROUptime v stotinách sekundy od posledného reštartu COM modulu
1.3.6.1.2.1.1.4.0sysContactOCTET STRINGROKontaktná osoba — konfigurovateľná cez snmpContact
1.3.6.1.2.1.1.5.0sysNameOCTET STRINGROMeno zariadenia — konfigurovateľné cez snmpSysName
1.3.6.1.2.1.1.6.0sysLocationOCTET STRINGROFyzická poloha — konfigurovateľná cez snmpSysLocation

Výstupné porty — Enterprise tabuľka

Tabuľkový OID: 1.3.6.1.4.1.62751.1.1 — 12 riadkov (index 0–11), každý riadok = jeden DC výstupný port.
Príklad snmpwalk: snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.62751.1.1
OIDObjektTypR/WPopis / Jednotky
1.3.6.1.4.1.62751.1.1.1.1.NpsxOutputIndexInteger32ROIndex portu 0–11 (N = riadok tabuľky)
1.3.6.1.4.1.62751.1.1.1.2.NpsxOutputDescriptionOCTET STRINGRWPoužívateľský popis portu (max. 128 znakov). Napr. "Router", "Switch A"
1.3.6.1.4.1.62751.1.1.1.3.NpsxOutputVoltageInteger32RONamerané napätie × 100 (napr. 4810 = 48.10 V)
1.3.6.1.4.1.62751.1.1.1.4.NpsxOutputCurrentInteger32RONameraný prúd v mA (napr. 1500 = 1.500 A)
1.3.6.1.4.1.62751.1.1.1.5.NpsxOutputStatusINTEGERROStav relé: 1=ZAP (on), 2=VYP (off)

Batéria

OIDObjektTypR/WPopis / Jednotky
1.3.6.1.4.1.62751.1.4.1psxBatteryVoltageInteger32RONapätie batériového bloku × 100 (napr. 5220 = 52.20 V)
1.3.6.1.4.1.62751.1.4.2psxBatteryCountInteger32ROPočet batériových článkov nakonfigurovaných (predvolene 4)
1.3.6.1.4.1.62751.1.4.3psxBatteryCapacityInteger32ROKapacita batérie × 10 v Ah (napr. 90 = 9.0 Ah)
1.3.6.1.4.1.62751.1.4.4psxBatteryStatusINTEGERROStav batérie (RFC 1628): 2=normal, 3=low, 4=depleted, 5=discharging
1.3.6.1.4.1.62751.1.4.5psxBatteryMainVoltageInteger32ROVstupné napätie nabíjačky (sieťová strana LAD modulu)
1.3.6.1.4.1.62751.1.4.6psxBatteryLoadVoltageInteger32RONapätie 48 V zbernice (výstupná strana nabíjačky)
1.3.6.1.2.1.33.1.4.1upsOutputSourceINTEGERRORFC 1628 — zdroj napájania výstupov. Hodnota sa posiela aj v traps: 3=sieť, 5=batéria

AC vstup

OIDObjektTypR/WPopis
1.3.6.1.4.1.62751.1.5.1psxInputVoltageInteger32ROAC vstupné napätie zo siete × 100 (napr. 23000 = 230.00 V)
1.3.6.1.4.1.62751.1.5.2psxInputSourceINTEGERROZdroj napájania výstupov (RFC 1628 konvencia): 3=sieť OK, 5=batéria
1.3.6.1.2.1.33.1.3.3.1.3upsInputVoltageGauge32RORFC 1628 — vstupné napätie (referenced v traps)

Teplota

OIDObjektTypR/WPopis
1.3.6.1.4.1.62751.1.3.1psxBoardTemperatureInteger32ROTeplota PCB dosky v °C. Prah alarmu konfigurovateľný v Web Management (predvolene 50 °C).
1.3.6.1.4.1.62751.1.3.2psxMcuTemperatureInteger32ROInterná teplota MCU (ESP32 die) v °C.

4 Trap udalosti

Traps sú asynchrónne push notifikácie ktoré UPS odosiela na nakonfigurovaný server (UDP port 162) okamžite pri udalosti — bez čakania na poll zo strany NMS. Traps sa odosielajú ako SNMPv2c TRAP PDU (typ SNMP_GENTRAP_ENTERPRISE_SPECIFIC).

Podmienka odosielania: Traps sa odosielajú len ak je v nastaveniach SNMP zadaná IP adresa trap servera (snmpServerAddress) a SNMP agent je zapnutý. Pri výpadku siete sa trap môže stratiť — SNMP traps nemajú potvrdenie doručenia (na rozdiel od Informu).
Trap OID Udalosť Varbinds Závažnosť
1.3.6.1.4.1.62751.2.0.1 Zmena zdroja napájania
Sieť → batéria alebo batéria → sieť
upsOutputSource (Integer32)
3=sieť, 5=batéria
KRITICKÝ
1.3.6.1.4.1.62751.2.0.2 Prekročenie prahu AC napätia
Vstupné napätie mimo normálneho rozsahu
upsInputVoltage (Integer32) VAROVANIE
1.3.6.1.4.1.62751.2.0.3 Vysoká teplota
Teplota dosky prekročila prah (predvolene 50 °C)
psxBoardTemperature (Integer32, °C) VAROVANIE
1.3.6.1.4.1.62751.2.0.4 Zmena stavu výstupného portu
Relé sa zaplo alebo vyplo (manuálne alebo ExtraAction)
psxOutputIndex, psxOutputStatus INFO
1.3.6.1.4.1.62751.2.0.5 Generická udalosť
Textová správa s číselnou hodnotou (diagnostika)
Textový reťazec + číselná hodnota INFO

5 Príkazy — net-snmp

Príklady používajú nástroje net-snmp (Linux/macOS: apt install snmp, Windows: net-snmp installer). IP adresu UPS nahraďte skutočnou adresou zariadenia.

Základné GET požiadavky

Meno zariadenia (sysName)
snmpget -v2c -c public 192.168.1.100 1.3.6.1.2.1.1.5.0
# Výstup:
SNMPv2-MIB::sysName.0 = STRING: UPS-ServerRoom-A
Uptime zariadenia
snmpget -v2c -c public 192.168.1.100 1.3.6.1.2.1.1.3.0
SNMPv2-MIB::sysUpTime.0 = Timeticks: (123456789) 14 days, 6:53:27.89
Napätie na porte OUT1 (index 0)
snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.62751.1.1.1.3.0
# Odpoveď: 4810 = 48.10 V
iso.3.6.1.4.1.62751.1.1.1.3.0 = INTEGER: 4810
Stav portu OUT1 (1=ZAP, 2=VYP)
snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.62751.1.1.1.5.0
iso.3.6.1.4.1.62751.1.1.1.5.0 = INTEGER: 1   # 1=ZAP

Walk — prechádzanie celého stromu

Všetky enterprise OIDy zariadenia
snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.62751
# Výstup obsahuje všetky výstupné porty, batériu, teploty...
Len tabuľka výstupných portov (popis + napätie)
snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.62751.1.1
# Prikla výstupu:
iso.3.6.1.4.1.62751.1.1.1.2.0 = STRING: "Router"
iso.3.6.1.4.1.62751.1.1.1.2.1 = STRING: "Switch A"
iso.3.6.1.4.1.62751.1.1.1.2.2 = STRING: "IP Camera 1"
...
iso.3.6.1.4.1.62751.1.1.1.3.0 = INTEGER: 4810
iso.3.6.1.4.1.62751.1.1.1.3.1 = INTEGER: 4808
...
Štandardný MIB-II system walk
snmpwalk -v2c -c public 192.168.1.100 system
# Vráti sysDescr, sysUpTime, sysContact, sysName, sysLocation

Zachytenie trap notifikácie (testovanie)

Počúvajte na porte 162 (na serveri kde čakáte traps)
# Linux / macOS
snmptrapd -f -Lo -c /etc/snmp/snmptrapd.conf
# alebo jednoduché zachytenie bez konfigurácie:
snmptrapd -f -Lo -On
Na otestovanie odoslania trap notifikácie z UPS zariadenia: Web Management → Settings → SNMP → kliknite na tlačidlo Send Test SNMP Trap.

6 Integrácia s NMS systémami

PWX-12-4422 je kompatibilný s každým NMS systémom ktorý podporuje SNMPv2c. Nižšie sú kroky pre najpopulárnejšie platformy.

Najrýchlejší spôsob je použiť SNMP template. MIB nahrať do Zabbix IDE.

  • Configuration → Hosts → Add host
  • Rozhranie: SNMP v2, Community: public
  • Importovať MIB: Administration → General → Other → SNMP MIBs
  • Itemy pridať manuálne alebo cez discovery rule (OID: 1.3.6.1.4.1.62751.1.1)
  • Trap receiving: nastaviť snmptrapd a Zabbix SNMP trapper

PRTG má vstavaný SNMP scanner — zariadenie rozpozná automaticky.

  • Add Device → zadajte IP UPS
  • Add Sensor → SNMP Custom → OID table
  • OID pre napätia: 1.3.6.1.4.1.62751.1.1.1.3.N
  • SNMP Trap sensor: Add Sensor → SNMP Trap Receiver
  • MIB nahrať: Setup → MIB Database

LibreNMS automaticky objaví zariadenie ako Generic SNMP host. MIB súbor umožní lepšie popisky.

  • Devices → Add device → zadajte IP, verzia v2c, community public
  • MIB nahrať do /usr/share/snmp/mibs/
  • Vlastné OID v OID-based poller (YAML definícia)
  • Traps: nastaviť snmptrapd → LibreNMS trap handler

Odporúčaná kombinácia pre vlastné dashboardy s históriou.

  • Použiť Telegraf SNMP plugin na zber dát
  • OID tabuľku definovať v telegraf.conf
  • Dáta ukladať do InfluxDB, vizualizovať v Grafane
  • Alerting cez Grafana Alertmanager

Telegraf konfigurácia (príklad)

# telegraf.conf — SNMP input plugin pre PWX-12-4422
[[inputs.snmp]]
  agents = ["udp://192.168.1.100:161"]
  version = 2
  community = "public"

  [[inputs.snmp.field]]
    name = "uptime"
    oid = "1.3.6.1.2.1.1.3.0"

  [[inputs.snmp.field]]
    name = "board_temp"
    oid = "1.3.6.1.4.1.62751.1.3.1"

  [[inputs.snmp.table]]
    name = "psx_outputs"
    oid = "1.3.6.1.4.1.62751.1.1"
    [[inputs.snmp.table.field]]
      name = "description"
      oid = "1.3.6.1.4.1.62751.1.1.1.2"
      is_tag = true
    [[inputs.snmp.table.field]]
      name = "voltage"
      oid = "1.3.6.1.4.1.62751.1.1.1.3"
    [[inputs.snmp.table.field]]
      name = "current"
      oid = "1.3.6.1.4.1.62751.1.1.1.4"
    [[inputs.snmp.table.field]]
      name = "status"
      oid = "1.3.6.1.4.1.62751.1.1.1.5"

7 MIB súbor

Štandardizovaný MIB súbor vo formáte SMIv2 (RFC 2578). Definuje celý OID strom 1.3.6.1.4.1.62751, trap notifikácie a conformance groups. Kompatibilný s RFC 1628 (UPS-MIB) konvenciami.

POWERSENTRIX-UPS-MIB.mib SMIv2 · RFC 2578 · RFC 1628 kompatibilný

Inštalácia MIB súboru

Linux / macOS
sudo cp POWERSENTRIX-UPS-MIB.mib /usr/share/snmp/mibs/
# Overenie — zoznam OIDov:
snmptranslate -Pu -m POWERSENTRIX-UPS-MIB -IR psxOutputVoltage
POWERSENTRIX-UPS-MIB::psxOutputVoltage

# Walk s popiskami miesto číselných OIDov:
snmpwalk -v2c -c public -m POWERSENTRIX-UPS-MIB 192.168.1.100 powerSentrix
Zabbix
# Nahranie cez GUI:
Administration → General → Other → SNMP MIBs → Import

# Alebo cez filesystem (Zabbix 6+):
cp POWERSENTRIX-UPS-MIB.mib /usr/share/snmp/mibs/

Obsah MIB súboru — štruktúra OID stromu

enterprises.62751  (powerSentrix)
├── .1  psxObjects
│   ├── .1  psxOutputs
│   │   └── .1  psxOutputTable [INDEX: psxOutputIndex 0–11]
│   │       ├── .1.1.N  psxOutputIndex       — Integer32 (0–11)
│   │       ├── .1.2.N  psxOutputDescription — DisplayString (RW)
│   │       ├── .1.3.N  psxOutputVoltage     — Integer32 (0.01 V)
│   │       ├── .1.4.N  psxOutputCurrent     — Integer32 (mA)
│   │       └── .1.5.N  psxOutputStatus      — on(1) | off(2)
│   ├── .2  psxSystem
│   │   ├── .1  psxSysUptime               — TimeTicks
│   │   ├── .2  psxComFirmwareVersion       — DisplayString
│   │   ├── .3  psxMainFirmwareVersion      — DisplayString
│   │   ├── .4  psxSerialNumber             — DisplayString
│   │   └── .5  psxModelName               — DisplayString
│   ├── .3  psxTemperature
│   │   ├── .1  psxBoardTemperature         — Integer32 (°C)
│   │   └── .2  psxMcuTemperature           — Integer32 (°C)
│   ├── .4  psxBattery
│   │   ├── .1  psxBatteryVoltage           — Integer32 (0.01 V)
│   │   ├── .2  psxBatteryCount             — Integer32
│   │   ├── .3  psxBatteryCapacity          — Integer32 (0.1 Ah)
│   │   ├── .4  psxBatteryStatus            — ENUM (RFC 1628)
│   │   ├── .5  psxBatteryMainVoltage       — Integer32 (0.01 V)
│   │   └── .6  psxBatteryLoadVoltage       — Integer32 (0.01 V)
│   └── .5  psxInput
│       ├── .1  psxInputVoltage             — Integer32 (0.01 V)
│       └── .2  psxInputSource              — ENUM (RFC 1628)
├── .2  psxTraps
│   └── .0  psxTrapPrefix
│       ├── .1  psxPowerSourceChanged       — NOTIFICATION
│       ├── .2  psxInputVoltageTrap         — NOTIFICATION
│       ├── .3  psxHighTemperatureTrap      — NOTIFICATION
│       ├── .4  psxOutputStateChanged       — NOTIFICATION
│       └── .5  psxGenericEventTrap         — NOTIFICATION
└── .3  psxConformance
    ├── .1  psxCompliances
    └── .2  psxGroups