Protokol SNMP
Podporované typy a verzie zariadení
Konfigurácia komunikačnej linky
Konfigurácia komunikačnej stanice
Konfigurácia meraných bodov
Príjem a spracovanie správ typu Trap
Vyčítavanie stromu hodnôt zo skriptu
Literatúra
Zmeny a úpravy
Revízie dokumentu
Podporované typy a verzie zariadení
...
Poznámka:
V prípade, že je potrebné prevádzkovať protokol SNMP v redundantnom systéme, kedy súčasne bežia dve inštancie procesu KOM na dvoch rôznych počítačoch a nie je možné jednoznačne určiť IP adresu sieťového rozhrania v nastavení linky, vtedy je vhodné zvoliť konfiguráciu v štýle „ANY“, resp. „ALL“. Ďalšia možnosť je zhodne pomenovať sieťové IP adresy rozhrania, napr. SNMP_LAN a v súbore hosts (c:\windows\system32\drivers\etc\hosts) každého počítača prideliť správnu IP adresu. Čiže napr.:
na PC1: | 192.168.0.1 | PC1, SNMP_LAN |
na PC2: | 192.168.0.2 | PC2, SNMP_LAN |
Parametre protokolu na linke
Môžu byť zadané nasledovné parametre protokolu na linke:
Kľúčové slovo | Plný názov | Popis | Jednotka | Náhradná hodnota |
---|
| Trace Level |
Trace level = 0 | - žiadne výpisy | Trace level = 1 | - len výpis o odoslaní a prijatí UDP paketu a IP adresa | Trace level = 2 | - informácia o príprave požiadaviek | Trace level = 3 | - hexadecimálny výpis prijatých a odoslaných UDP pakeov | Trace level = 4 | - rovnaké podrobnosti ako úroveň 3 | Trace level = 5 | - pridá: podrobný rozklad paketu na štruktúru v kódovaní ASN1 poradie údajov v pakete pridáva podrobné výpisy | Trace level = 9999 | - pridáva informácie o príprave a rozhodovaní zaradenia paketov pridáva vyhľadávacie informácie |
Hodnoty 5 a 9999 sú určené na vyhľadávanie chýb a ich bežné nastavenie sa neodporúča. V prípade, že je potrebné tieto informácie získavať len zo sledovanej stanice/staníc, je možné rovnako nastaviť hodnotu Trace level len pre zvolenú stanicu v konfigurácii stanice.
Pre bežnú prevádzku je vhodné mať nastavenú hodnotu 1.
| - | 1 |
| Trap Enable | Povolenie obsluhy prijímania správ typu Trap. | Boolean | False |
| Trap IP Address | IP adresa pre prijímanie správ typu Trap. | - | ANY |
| Trap Port | Číslo UDP portu pre prijímanie správ typu Trap. | - | 162 |
Kotva |
---|
| komunikacna_stanica |
---|
| komunikacna_stanica |
---|
|
Konfigurácia komunikačnej stanice
...
Môžu sa zadať nasledovné parametre protokolu stanice:
Tab. č. 2
Kľúčové slovo | Plný názov | Popis | Jednotka | Náhradná hodnota |
---|
| Wait Timeout | Doba čakania na odpoveď pri čítaní hodnôt. | ms | 100 |
| Retry Count | Počet opakovaní žiadostí o hodnotu pri neúspešnom čakaní, potom sa pokračuje žiadosťou o inú hodnotu. | - | 3 |
| Max Error Count | Maximálny počet neúspešných dotazov, kým stanica prejde do stavu StCOMERR. Úspešne doručená hodnota nuluje počítadlo neúspechov a nastavuje stanicu opäť do stavu StON. | - | 1 |
| Trace Level | Ten istý význam ako parameter Trace level na linke, ale s platnosťou pre konkrétnu stanicu. Ak je na linke hodnota parametra Trace level vyššia, má prednosť. Poznámka: Vypisovanie informácií o prichádzajúcich hodnotách je ovplyvňované hodnotou parametra Trace level na linke, keďže po príchode hodnoty ešte nie je zrejmé, pre akú stanicu hodnota prišla. | - | 0 |
Konfigurácia meraných bodov
...
ASN1 value type: Upresňuje, aký typ hodnoty bude v odpovedi SNMP agenta. Tým aj určuje typy konverzií, ktoré sa môžu aplikovať. Typ hodnoty je možné zistiť v MIB databáze (pozn. prehliadač databáz MIB nie je súčasťou riešenia). Je možné použiť niektorý z voľne dostupných prehliadačov a na základe takto získaných informácií nastaviť očakávaný formát dát. Odporúčame java aplikáciu MIB Browser (http://tl1.ireasoning.com/mibbrowser.shtml).
Možné typy hodnôt:
Integer | - vstupná hodnota je očakávaná ako celé číslo so znamienkom (až 64bit *) |
Unsigned | - vstupná hodnota je očakávaná ako celé číslo bez znamienka (až 64bit *) |
Float | - vstupná hodnota je očakávaná ako číslo v plávajúcej desatinnej čiarke (float, a longfloat) |
Text | - vstupná hodnota je textový reťazec |
IP address | - vstupná postupnosť bytov je interpretovaná ako postupnosť čísiel oddelených bodkou – postupnosť je prevedená na text |
Hex text | - vstupná postupnosť bytov je interpretovaná ako postupnosť hexadecimálnych čísiel oddelených dvojbodkou – postupnosť je prevedená na text |
Typy hodnôt IP address a Hex text je možné aplikovať na ľubovoľný vstupný typ dát, s ktorým sa bude ďalej manipulovať ako s postupnosťou bytov. Takže, napr. vstupná hodnota typu text s hodnotou „test@ipesoft.sk“ môže byť interpretovaná takto:
...
Protokol SNMP umožňuje okrem periodického vyčítavania hodnôt aj posielanie oznámení o výskyte dôležitých udalostí. Tieto oznámenia sa nazývajú Trapy (anglicky Traps). Trapy posiela SNMP agent na IP adresu a port (štandardne 162), ktorú má nakonfigurovanú (jednoduchšie zariadenia podporujú posielanie Trapov na jedinú IP adresu a port, dokonalejšie aj viacero adries).
Nakonfigurovaním linkového parametra Trap IP address sa spustí task, ktorý na porte Trap port prijíma tieto Trapy.
V aktuálnej verzii je podporený príjem SNMP Trapov vo verzii V1 a V2C protokolu SNMP. Štandardne jedno zariadenie posiela Trapy jednej konkrétnej verzie protokolu.
Na príjem Trapov z konkrétneho zariadenia je nutné nakonfigurovať na príslušnej stanici merané body s nasledovnými textovými adresami (stačí vybraté, nie je nutné všetky):
Textové adresy meraných bodov pre Trapy v SNMP protokole vo verzii V1:
Adresa bodu | Dátový typ | Popis |
---|
Kotva |
---|
| trap_enterprise |
---|
| trap_enterprise |
---|
| TRAP_ENTERPRISE | OID | Položka "Enterprise" trap správy: OID objektu generujúceho trap (pre konkrétne zariadenie konštanta). Poznámka: Z tohto OID sa dá často určiť výrobca zariadenia. |
Kotva |
---|
| trap_generic_trap |
---|
| trap_generic_trap |
---|
| TRAP_GENERIC_TRAP | Integer | Položka "Generic-trap" trap správy: identifikátor triedy trapu. Pre SNMP verziu 1 sú v RFC 1157 definované tieto hodnoty:- 0 - coldStart
- 1 - warmStart
- 2 - linkDown
- 3 - linkUp
- 4 - authenticationFailure
- 5 - egpNeighborLoss
- 6 - enterpriseSpecific
|
Kotva |
---|
| trap_specific_trap |
---|
| trap_specific_trap |
---|
| TRAP_SPECIFIC_TRAP | Integer | Položka "Specific-trap" trap správy: špecifický kód správy. |
Kotva |
---|
| trap_timestamp |
---|
| trap_timestamp |
---|
| TRAP_TIMESTAMP | TimeTicks | Položka "Time-stamp" trap správy: časová pečiatka (podľa RFC 1157 počet uplynutých stotín sekundy medzi poslednou sieťovou reinicializáciou zariadenia a vygenerovaním trapu. Kotva |
---|
| trap_timestamp_pozn |
---|
| trap_timestamp_pozn |
---|
| Poznámka: Pokiaľ je meraný bod typu Ai - Analóg vstup, jeho hodnota bude v sekundách, tj. TimeTicks/100.Pokiaľ je meraný bod typu Ci - Celočíselný vstup, jeho hodnota bude v stotinách sekundy, tj. TimeTicks. Avšak pokiaľ dosiahne maximálnu hodnotu pre celočíselnú hodnotu v D2000 (t.j. 2^31-1, keďže celočíselný typ je implementovaný ako 32-bitový Integer so znamienkom), väčšie hodnoty nadobudnúť nemôže. Podľa RFC 1157 je Time-stamp typu TimeTicks, čo je podľa RFC 1155 nezáporný integer. T.j. môže nadobúdať aj väčšie hodnoty ako 2^31-1, ktoré sa nedajú zapísať do meraného bodu typu Ci - Celočíselný vstup. Preto odporúčame nakonfigurovať meraný bod typu Ai - Analóg vstup. |
| OID | Položka "Object-name" trap správy: OID objektu, ktorý je príčinou vzniku trapu, alebo ktorého sa trap týka. |
| ľubovoľný | Položka "Object-value" trap správy: hodnota objektu, ktorý je príčinou vzniku trapu alebo ktorého sa trap týka. Poznámka 1: Keďže typ hodnoty je ľubovoľný, je vhodné nakonfigurovať meraný bod typu TxtI - Textový vstup. V opačnom prípade budú niektoré hodnoty neskonvertovateľné (napr. na Celočíselný vstup) a hodnota TRAP_VALUE sa nezmení. Poznámka 2: Trap môže obsahovať aj niekoľko dvojíc (OID, hodnota). V tom prípade sa postupne nastavujú hodnoty meraných bodov s adresami TRAP_OID a TRAP_VALUE pre všetky tieto dvojice. Možné je napr. nakonfigurovať event spúšťaný na zmenu hodnoty meraného bodu s adresou TRAP_VALUE a dvojice (OID, hodnota) ukladať do databázy. |
| Boolean | Meraný bod určený na potvrdzovanie spracovania hodnôt. Keďže v jednej správe Trap sa môže nachádzať niekoľko dvojíc (TRAP_OID, TRAP_VALUE), korektné spracovanie napr. ESL skriptom vyžaduje, aby KOM proces nastavil nasledujúcu dvojicu hodnôt až po spracovaní predchádzajúcej. Podobne aj hodnoty ostatných vstupných meraných bodov pre správy typu TRAP by mali byť nastavované až po signalizácii, že predchádzajúce hodnoty týchto meraných bodov boli už spracované.
Pokiaľ existuje výstupný meraný bod s adresou TRAP_CONFIRM, tak KOM proces nastaví ďalšiu dvojicu hodnôt vstupných meraných bodov (TRAP_OID, TRAP_VALUE) až po zápise do výstupného meraného bodu s adresou TRAP_CONFIRM (zápis bude vykonávať zrejme ESL skript určený na spracovanie hodnôt ako jednu z posledných operácií). Hodnoty ostatných meraných bodov (s adresami TRAP_ENTERPRISE, TRAP_GENERIC_TRAP, TRAP_SPECIFIC_TRAP, TRAP_TIMESTAMP a TRAP_OID) budú nastavené, pokiaľ sa jedná o spracovanie prvej dvojice hodnôt (TRAP_OID, TRAP_VALUE) - v prípade ďalších dvojíc ostanú rovnaké a zmenia sa až pri spracovávaní ďalšej správy Trap.
Pokiaľ výstupný meraný bod s adresou TRAP_CONFIRM neexistuje, hodnoty všetkých vstupných meraných bodov s adresami TRAP_* sú nastavované hneď po príchode správy Trap a teda môže dôjsť ku strate hodnôt v dôsledku výskytu viacerých dvojíc hodnôt v správe Trap alebo v dôsledku príchodu novej správy Trap skôr, ako užívateľský skript spracoval predchádzajúce hodnoty. |
Textové adresy meraných bodov pre Trapy v SNMP protokole vo verzii V2C:
Adresa bodu | Dátový typ | Popis |
---|
TRAP_REQUEST_ID | Integer | Položka "Request-id" trap správy: zvyšujúce sa číslo trapu. |
TRAP_ERROR_STATUS | Integer | Položka "Error-status" trap správy: chybový kód. Štandardne má hodnotu 0, ale potenciálne môže nadobúdať jednu z týchto hodnôt (viď RFC 1448):- noError(0)
- tooBig(1)
- noSuchName(2)
- badValue(3)
- readOnly(4)
- genErr(5)
- noAccess(6)
- wrongType(7)
- wrongLength(8)
- wrongEncoding(9)
- wrongValue(10)
- noCreation(11)
- inconsistentValue(12)
- resourceUnavailable(13)
- commitFailed(14)
- undoFailed(15)
- authorizationError(16)
- notWritable(17)
- inconsistentName(18)
|
TRAP_ERROR_INDEX | Integer | Položka "Error-index" trap správy: rozšírený kód chyby (často 0). |
TRAP_UPTIME_OID | OID | Položka "SysUpTime OID" trap správy: OID objektu SysUpTime.0 . Táto položka by mala mať podľa RFC 1448 hodnotu 1.3.6.1.2.1.1.3.0, ale pre prípad, že by tomu tak v konkrétnej implementácii nebolo, je možné hodnotu zistiť pomocou meraného bodu s adresou TRAP_UPTIME_OID. |
TRAP_UPTIME_VALUE | TimeTicks | Položka "SysUpTime" trap správy: hodnota objektu sysUpTime. Pre hodnotu platí Poznámka uvedená v popise adresy TRAP_TIMESTAMP. |
TRAP_TRAP_OID | OID | Položka "SnmpTrap OID" trap správy: OID objektu SnmpTrap.0 . Táto položka by mala mať podľa RFC 1448 hodnotu 1.3.6.1.6.3.1.1.4.1.0 (t.j. OID objektu snmpTrapOID, viď RFC 1450), ale pre prípad, že by tomu tak v konkrétnej implementácii nebolo, je možné hodnotu zistiť pomocou meraného bodu s adresou TRAP_TRAP_OID. |
| OID | Položka "SnmpTrapValue" trap správy. Jedná sa o identifikátor triedy trapu, ktorý významovo zodpovedá položke TRAP_GENERIC_TRAP v SNMP verzii V1, ale je typu OID, čo umožňuje napr. definovanie chybových kódov špecifických pre konkrétnych výrobcov a zariadenia. Významy štandardných OID, ktoré môže nadobúdať, sú podľa RFC 1450 nasledovné:- 1.3.6.1.6.3.1.1.5.1 - coldStart
- 1.3.6.1.6.3.1.1.5.2 - warmStart
- 1.3.6.1.6.3.1.1.5.3 - linkDown
- 1.3.6.1.6.3.1.1.5.4 - linkUp
- 1.3.6.1.6.3.1.1.5.5 - authenticationFailure
- 1.3.6.1.6.3.1.1.5.6 - egpNeighborLoss
- 1.3.6.1.6.3.1.1.5.7 - enterpriseSpecific
|
TRAP_OID | OID | Rovnaký význam ako TRAP_OID v SNMP verzii V1. |
TRAP_VALUE | ľubovolný | Rovnaký význam ako TRAP_VALUE v SNMP verzii V1. |
TRAP_CONFIRM | Boolean | Rovnaký význam ako TRAP_CONFIRM v SNMP verzii V1. |
Poznámka1:
Štandardne bude zrejme stačiť, aby sa nakonfigurovali vstupné merané body s adresami TRAP_OID, TRAP_VALUE a výstupný meraný bod s adresou TRAP_CONFIRM na potvrdzovanie spracovania hodnôt.
...
Adresa bodu | Typ hodnoty | Popis |
---|
GETNEXT_OID | TxtI - Textový vstup | OID ďalšieho objektu, ktoré príde v odpovedi na požiadavku GetNext. Berú sa do úvahy iba požiadavky, ktoré boli vygenerované ako dôsledok zmeny adresy meraného bodu tell príkazom SETPTADDR a nie požiadavky, ktoré boli vygenerované ako dôsledok periodického čítania meraných bodov. |
Na vyčítavanie stromu hodnôt stačí nakonfigurovať dva vstupné merané body typu TxtI - Textový vstup. Jeden z týchto bodov má špeciálnu adresu GETNEXT_OID, adresa druhého meraného bodu je nastavovaná tell príkazom SETPTADDR.
Po nastavení adresy KOM proces generuje požiadavku na čítanie meraného bodu. Pokiaľ adresa obsahuje požiadavku typu GetNext (napr. SETPTADDR M.MySnmpVariable 1.3.6.1.2.1.1 TYPE=3;RQ=1), bude OID, ktoré príde s odpoveďou, zapísané do meraného bodu s adresou GETNEXT_OID (napr. 1.3.6.1.2.1.1.1.0). Následne je možné poslať nový tell príkaz, v ktorom je táto adresa (SETPTADDR M.MySnmpVariable 1.3.6.1.2.1.1.1.0 TYPE=3;RQ=1) a tak ďalej.
Príklad ESL skriptu na vyčítanie prvých 100 objektov zo stromu počínajúc od adresy 1.3.6.1.2.1.1 a zapísanie OID adries a hodnôt do štruktúry _objlist:
...