SNMP: TRAP: Porovnání verzí

m
Řádek 11: Řádek 11:
 
=== SDS-C ===
 
=== SDS-C ===
  
Odeslání SNMP TRAP zprávy je závislé na vašem uživatelském SDS-C programu, který právě představuje rozhodovací logiku (např. zmíněné hlídání překročení teploty). Pokud se SDS-C program rozhodne odeslat TRAP, zavolá specifickou SDS-C funkci ''snmp_send_trap()'' (viz [[SDS-C:_sdsc_sysp|zde]]). Tato funkce má jako parametry cílovou IP adresu, "PDU Specific" hodnotu (toto je namapováno na konkrétní OID) a index do tabulky, pokud je potřebný (pokud OID představuje řádek MIB tabulky).
+
Odeslání SNMP TRAP zprávy je závislé na vašem uživatelském SDS-C programu, který právě představuje rozhodovací logiku (např. zmíněné hlídání překročení teploty). Pokud se SDS-C program rozhodne odeslat TRAP, zavolá specifickou SDS-C funkci ''snmp_send_trap()'' (viz [[SDS-C:_sdsc_sysf#snmp_send_trap.28.29|zde]]). Tato funkce má jako parametry cílovou IP adresu, "PDU Specific" hodnotu (toto je namapováno na konkrétní OID) a index do tabulky, pokud je potřebný (pokud OID představuje řádek MIB tabulky).
  
 
Každé zařízení SDS podporuje různý seznam TRAP zpráv (závisí to na hardwarové konfiguraci zařízení).
 
Každé zařízení SDS podporuje různý seznam TRAP zpráv (závisí to na hardwarové konfiguraci zařízení).

Verze z 8. 8. 2021, 15:51

TRAP zprávy

SNMP protokol, který je podporován všemi zařízeními SDS, poskytuje i možnost odeslání tzv. TRAP zprávy ze zařízení SDS. Tato zpráva se typicky odesílá, pokud je splněna nějaká uživatelem určená podmínka (příklad: teplota čidla překročí X stupňů).

Protože se jedná o zcela univerzální funkci, zapisuje si podmínky pro odeslání TRAP zprávy uživatel sám, a to prostřednictvím svého programu v rámci SDS.

Návod je rozdělen pro SDS která používají SDS-C a nebo FULL-C programovací jazyk.


SDS-C

Odeslání SNMP TRAP zprávy je závislé na vašem uživatelském SDS-C programu, který právě představuje rozhodovací logiku (např. zmíněné hlídání překročení teploty). Pokud se SDS-C program rozhodne odeslat TRAP, zavolá specifickou SDS-C funkci snmp_send_trap() (viz zde). Tato funkce má jako parametry cílovou IP adresu, "PDU Specific" hodnotu (toto je namapováno na konkrétní OID) a index do tabulky, pokud je potřebný (pokud OID představuje řádek MIB tabulky).

Každé zařízení SDS podporuje různý seznam TRAP zpráv (závisí to na hardwarové konfiguraci zařízení).

Každá TRAP zpráva obsahuje v sobě tyto položky:

  • "Enterprises" - výchozí OID určující zařízení SDS (konstanta)
  • "PDU Specific" číslo (někde taky jako "TRAP INDEX") - toto je mapováno na konkrétní OID položky
  • "Table Index" číslo - pro položky v SNMP tabulce, kde je stejný výchozí OID, ale tabulkový index (řádek) se liší
  • Identifikace odesílatele (konkrétní zařízení SDS - tj. IP adresa)
  • Aktuální hodnotu (např. teplota čidla) - tato hodnota je vyplněna přímo zařízením SDS, v okamžiku odeslání TRAPu

Aktuální hodnota je zvolena podle vybraného OID (tj. OID které je v TRAP zprávě), a formát aktuální hodnoty odpovídá přesně tomu, co by vrátilo SNMP GET.

Tyto položky jsou vyhodnoceny na straně příjemce, a následně je vyvolána specifická akce (to už je na vás).

SDS-C: Postup

Postup odeslání TRAP zprávy:

1. SDS-C program vyhodnotí podmínky a rozhodne se odeslat TRAP zprávu
2. SDS-C program zavolá funkci snmp_send_trap() přičemž správně vyplní parametry funkce (cílovou IP adresu a TRAP INDEX)
3. SDS sestaví TRAP zprávu, přičemž podle vybraného "PDU Specific" a "Table Index", do zprávy vyplní hodnotu platnou v tomto okamžiku
4. SDS se pokusí odeslat TRAP zprávu (pokud není ARP záznam, odeslání je odloženo, a místo toho se pošle ARP dotaz)
5. Příjemce přijme TRAP zprávu a zpracuje ji.

Příklad

Nejprve je potřeba vědět, jaký vůbec TRAP chceme odeslat.

Pro tento příklad použijeme SDS-MICRO-LM a vybereme si teplotu z druhého 1-W čidla.

Ve OID tabulce pro dané SDS si najdeme správný řádek:

Full OID TRAP INDEX OID Type MIB Name Description
.... .... .... .... ....
.1.3.6.1.4.1.33283.1.2.6.1.5.2 304 [2] Integer sdsDS18B20actualTempCompleteMul100.2 (RO) Teplota*100 pro 1-W čidlo na sběrnici A na pozici 2
.... .... .... .... ....

A pro sdsDS18B20actualTempCompleteMul100.2 je odpovídající TRAP INDEX (PDU SPECIFIC) = 304 (hodnota před hranatými závorkami) a TRAP TABLE INDEX = 2 (hodnota v hranatých závorkách). Tyto údaje lze také zjistit z MIB souboru pro dané zařízení.

Program v SDS-C tak zavolá funkci s těmito parametry:

 // ip1, ip2, ip3, ip4 => IP adresa cílového stroje (TRAP RECEIVER)
 // PDU SPECIFIC (TRAP INDEX) = 304
 // TABLE INDEX = 2 
 snmp_send_trap(ip1, ip2, ip3, ip4, 304, 2);

Samozřejmě tato funkce se musí zavolat jen jednou pro odeslání TRAPu. Logika chování je už na programátorovi konkrétního SDS-C programu.

Některé položky mají TABLE INDEX = 0. To znamená, že se jedná o SNMP OID položku která není v tabulce, tj. která existuje jen jako jediná pro daný OID. V tomto případě použijte číslo nula na pozici TABLE INDEX.


FULL-C

Princip je zcela stejný jako pro SDS-C (viz výše), použijete však odpovídající funkce viz návod FULL-C:_snmp_functions.