Network management & monitoring (SNMP,MRTG,Nagios)

Jan Sonnek, xsonnek at fi point muni point cz


Obsah


SNMP - Simple Network Management Protokol

SNMP (jednoduchy protokol pro spravu site) vyvinul se jako jedna varianta protokolu SGMP (simple gateway monitoring protokol), ktery byl navrzen v 80. letech prave pro vymenu informaci mezi smerovaci. V socasne dobe existuje SNMPv1, SNMPv2 a SNMPv3.
SNMPv1:
- byla definovana v roce 1988, autorizace byla resena pomoci tzv. "comunity string", autorizace byla velkou bezpecnostni dirou, protoze v kazdem packetu bylo prihlasovaci jemno a heslo, ktere se po siti informace sirilo v nezasifrovane podobe. Proto take vznikla
SNMPv2:
- resi otazku bezpecnosti a take rozsirila moznosti SNMPv1, zavedla nove datove typy(INFORM, GET BULK) a take 64-bitove hodnoty pocitadel, autentizace zustala na urovni verze 1.
SNMPv3
- vyresila predevsim problem autentizace (viz RFC 3418, RFC 3411),

Klient zvany (SNMP manager) vytvari spojeni se serverem (SNMP agent). Klient (agent) bezi na sledovanym zarizenim a poskytuje serveru informace o zarizeni napr. pocet zpracovnaych paketu, frekvenci procesoru, teplotu disku apod..

Agent posila informace na pozadani managera, ale muze nekdy odeslat informace bez vyzadani. Jestlize agent detekuje jiste podminky napr. hardwarovou chybu, vysle informaci zvanou "Trap", sam bez vyzadani. Tyto zpravy jsou velmi dulezite pro ziskani informaci o nahlych vaznych problemech. Pokud pouzivame SNMP ke vzdalenemu managementu, potrebujeme informace hlavne v dobe, kdy se vyskytnou na siti problemy, proto je pouziti UDP/IP datagramoveho protokolu nejvhodnejsi.
Nevyhodou je nezajistenost spolehlivosti pri prenosu dat, coz plyne z definice protokolu UDP, proto pokud nechodi "Trap"- chybove pakety, neznamena to ze je na siti vse v poradku. SNMP pracuje jako dotazovaci protokol tzn. Manager dotazuje agenty. Agent ziskava vsechny infomrace o zarizni, na kterem bezi a buduje strom MIB databaze ( Management Information Base ).

MIB - Management Information Base

Je to datova hierarchicka stromova struktura, ktera odpovida danemu konkretnimu zarizeni. MIB databaze jsou vytvareny podle pravidel Structure of Management (SMI), specifikaci nalezneme v (RFC 2578, 2579, 2580). Kazdy SNMP objekt zarazeny musi mit jedinecne jmeno v MIB, aby se dalo na nej odkazovat pri SNMP operacich tzv. OID (Object Identifier). MIB defakto popisuje mozne OID objekty, ke kterym je mozne pristupovat(read-only, read-write, write-only) a pracovat s nimi.

koren stromu: root (sam bez popisku)
dalsi uzly stromu:
iso(1) - spravovan organizaci ISO
ccitt(0) - spravovan organizace ITU-T
joint-iso-ccitt(2) - spolecne spravovano ISO a ITU-T

Jednotlivym vyrobcum zarizeni jsou pridelovany dalsi subtree.
       
          .

       /  |  \
    ccit iso iso-ccitt
          |   
      --------
     /  / | \ \
         org 
          | 
         dod
        /   \
   internet
      /   \
    mgmt
    /  \
  mib-2
   /
 ----------------------------------------------------
  /     /               |          |   |    |  |   |
system interface addr-translation ip  icmp tcp udp egp
 
Strom lze prochazet napr. (Dulezite nutno mit v snmpd.conf nastaveno pravo cteni pro komunitu zde "public"): Dalsi moznosti ziskani dat od snmp serveru:
GetRequest - zadost o informaci kterou posila klient serveru, jde v podstate o prikaz "Read", v ramci prikazu jde zadat o informace o vice objektech
GetNext - zadost o dalsi informaci, toto lze jednoduse provadet jelikoz data jsou organizovany hierarchicky
GetRespone - tento prikaz je vyslan agentem, jako reakce na zadost
SetRequest - tento prikaz nastavuje hodnotu promenne v MIB agenta

Get Bulk - cte informace z celeho podstromu (od SNMPv2)
Cesta od korene k listu je jednoznacen reprezentovana, pro kazde zarizeni a tuto cestu lze vyjadrit i ciselne system.sysUpTime.0 lze vyjadrit .1.3.6.1.2.1.1.3.0

SMI - (S)truktura a (I)dentifikace managementu informaci na (I)nternetu

SMI - Definuje jazyk, ktery popisuje format ukladani dat v MIB databazi. Obsahuje datove type napr. Integer, Counter, Gauge ,TimeTic, IpAddress, OCTET STRING, OBJECT IDENTIFIER .. Dnes se pouziva MIB II, ktera obsahuje rozsireni odrazejici se od novych operacnich pozadavky. Odlisuje se i struktura MIB stromu. Definice MIB databazi muzeme najit v plain textovych souborech v adresari /usr/share/snmp/mibs, pokud si uzivatel pri konfiguraci snmp.conf nenastavi cestu jinak.
priklad entity v jazyce SMI:
  InetAddressIPv4 ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "1d.1d.1d.1d"
    STATUS       current
    DESCRIPTION
        "Represents an IPv4 network address:

           octets   contents         encoding
            1-4     IPv4 address     network-byte order

         The corresponding InetAddressType value is ipv4(1).

         This textual convention SHOULD NOT be used directly in object
         definitions since it restricts addresses to a specific format.
         However, if it is used, it MAY be used either on its own or in
         conjunction with InetAddressType as a pair."
    SYNTAX       OCTET STRING (SIZE (4))
 

Instalace a konfigurace SNMP

Stahneme si balicek net-snmp, ktery si nainstalujeme do systemu a nakonfigurujeme snmp daemona v souboru /etc/snmp/snmpd.conf, nebo muzeme pouzit perlovsky skript snmpdconf -g basic_setup, ktery se nas taze na zakladni otazky a nastavi snmpd.conf.
Ukazka souboru snmpd.conf :
Dulezite je vytvoreni vlastni komunity(community), nebo si upravit prava pro public komunitu.
###
#       sec.name  source   community 
com2sec paranoid  default   public
com2sec readonly  default   public
com2sec - zkratka z (comunity to security name), namapuje "jmeno komunity" na "bezpecnosti jmeno"
####
#               sec.model  sec.name 
group MyROSystem v1        paranoid
group MyROSystem v2c       paranoid
group MyROGroup  v1        readonly
group MyROGroup  v2c       readonly
group - namapuje "security name" na jmeno skupiny a urci jaky typ protokolu bude skupina pouzivat
####
#                context sec.model sec.level match  read   write  notif
access MyROSystem ""     any       noauth    exact  all    none   none
access MyROGroup ""      any       noauth    exact  all    none   none
access - nakonec nastavime prava pro skupinu, muzeme omezit napr. jen cast stromu pro urcitou skupinu napr. read nastavit na mib2

 ####
 #           incl/excl subtree                          mask
 view all    included  .1                               80
 view system included  .iso.org.dod.internet.mgmt.mib-2.system
Dale muzeme nastavit direktivu view, pomoci niz si pojmenujeme cast stromu a tim se usnadnime hledani a orintaci ve stromu. Nesmime zapomenout si nadefinovat zarizeni, ktera budeme sledovat. napr:
disk / 10000

Pokdu budeme pracovat s protokolem verze 3 pridama si uzivatele prikazem "snmpusm create USER" nebo "net-snmp-config --crate-snmpv3-user".

Nejsnazsi je puzit skript cfgmaker , pro vytvoreni html stranky pouzijeme "komunitu", kterou jsme si nadefinovali v souboru snmpd.conf a pridelili ji prislusna prava. Pokud prislusna komunita nebude mit alespon pravo cteni stromu, html stranku se nam nepodari vygenerovat
cfgmaker public@localhost >> mrtg.cfg 
indexmaker mrtg.cfg >> /var/www/mrtg/index.html 
Cfgmaker je skript, ktery nam prida do konfiguracniho zadaneho soubou definici grafu pro dalsi zarizeni a index maker, nam vytvori index soubor v adresari,ktery mu zadame.
Vygenrovany cfg soubor lze editovat a pridavat dalsi zarizeni vice na net-snmp .

Muzeme cfgmakeru predat parametry napr.:
--global "options[_]: growrigt,bits"- ktere se pouzijou pro vsechny rozhrani.
--ifdesc nr|ip|eth|descr|name|type|alias - urcuje podle ceho se stanovi nazev rozhrani
- dulezite je take nastaven "Work dir" - adresare, kde se budou vygenerovane stranky ukladat
 
           cfgmaker --global  "WorkDir: /var/www" \
     	            --global "Options[_]:growright,bits" \
                    --ifref=ip \
                    public@localhost >> mrtg.cfg
       
Pokud chceme at se nam statisticke informace obnovuji napr. kazdych 5 min, pridame si prislusny zaznam do cronu.

RRDtools

Nazev vychazi z "Round Robin Database Tool", je to system pro ukladani a zobrazovani informaci. Je to rozsireni MRTG, ktere nabizi mnohem sirsi moznosti. Neobsahuji zadne konfiguracni soubory, protoze se vsechny parametry pridavaji z prikazove radky. Tvorba grafu nezatezuje tolik nas monitorovaci system. Muzeme ziskava cyklicky nezavisle na tvorbe grafu. Tvorbu grafu provedeme jednou za cas na zakalade ziskanych, ktere mame ulozene v databazi. V prve rade si musime rozmyslet kolik hodnot chceme ukladat a v jakych casovych intervalt, pote vytvorit databazi napr.

 rrdtool create filename [--start|-b start time] [--step|-s step]
 [DS:ds-name DST:heartbeat:min:max] [RRA: CF:xff:steps:row
kterou budeme nasledne plnit daty.

rrdtool update filename [--template|-t ds-name[:ds-name]...]
 N|timestamp:value[:value...] [timestamp:value[:value...] ...
RrdTools maji spoustu nastaveni a voleb, ktere najde root tutorial
podpurne fast-cgi skripy


Nagios

Je to modularni monitorovaco a vizualizacni systsem, ktery slouzi k automatickemu monitoringu jednotlivyh zarizeni, jako jsou (routery, servery,UPS..) a sluzeb.


TKined & Scotty

Je to sada TCL skriptu, ktere slouzi k ziskavani inforamci o TCP/IP sitich. Obsahuji prikazy pro posilani ICMP packetu jako je ping, take obsahuji vseobecne funkce k ziskavani informaci o DNS zaznamech.

tcl Tnm: - pracuje nad protokolem SMX, ktery umoznuje spousteni tcl skriptu na vzdalenem zarizeni
- podporuje protokoly SNMP, ICMP, DNS


           +-----------+         +-----------+
           | interp #1 |  . . .  | interp #n |
          +-----------------------------------+     script
          |      master Tcl interpreter       |  - defining
          +-----------------------------------+    profiles
          | SMX protocol implementation (Tnm) |
          +-----------------------------------+
   
Tkined: - sitovy editor, je to nastroj pro rozsireny sitovy management. Balicek obsahuje aplikace pro pruzkum a monitorovani stavu IP siti, pouziva SNMP v kombinaci s dalcimi nastroji (traceroute).


Reference

SNMP

SNMP home page
Uvod do SNMP
Svet siti SNMP objekty

MRTG

MRTG home page
serial MRTG na rootu
Mrtg tutorial

Nagios, TKinetd/Scooty

Nagios
TK sitovy editor TKinded ftp download