Sledování sítě (SNMP, MRTG, Nagios)

Tomáš Kyjovský, tomas.kyjovsky@mail.muni.cz


Obsah


Protokol SNMP

SNMP, neboli Simple Network Management Protocol, je internetový protokol, umožňující vzdálené monitorování stavu různých zařízení připojených k síti. Jeho první verze byla navržena r. 1988. Dnes je protokol široce používaným standardem.

SNMP běží v aplikační vrstvě nad protokolem UDP. Z hlediska architektury se jedná o typ klient-server. Server (tzv. agent) běží na monitorovaném zařízení a poskytuje klientovi (tzv. manažerovi) stavové informace. Struktura odesílaných informací závisí na konkrétním zařízení a je uspořádána v hierarchickém objektovém modelu -- tzv. MIB (Management Information Base). Je popsána jazykem SMI (viz dále).

SNMP je jednoduchý protokol na způsob dotaz-odpověď.
Příkazy SNMP:


Autentizace v SNMP

Protokol ve verzi 1 a 2 poskytuje pouze jednoduchou autentizaci na základě znalosti jména komunity (community name). Tato autentizační informace je protokolem přenášena v plaintextu. Až od verze 3, která je nyní aktuální, je umožněn přenos údajů šifrovaně. Verze 3 navíc přináší další možnosti autentizace (základní security model a user security model).


MIB

MIB (Management Information Base) je hierarchická (stromová) objektová struktura, ve které agent uchovává a nabízí stavové informace. Vlastní MIB strom a vlastnosti objektů v něm jsou popsány jazykem SMI (Structure of Management Information, RFC 1155), který vychází z ASN.1 (Abstract Syntax Notation). Podle SMI je každý objekt určen unikátním jménem (Object Identifier - OID), syntaxí a kódováním.

Objekty jsou reprezentovány uzly ve stromu. Každému uzlu-potomku je od rodiče přiřazeno unikátní nezáporné číslo (postupně od 0 dále) a jméno. Unikátní jméno objektu v rámci stromu je určeno sekvencí čísel od jeho předků, postupně od kořene až k němu samotnému. Kořen samotný nemá žádné číslo. V zápisu jsou jednotlivá čísla oddělena tečkami. Např. 1.3.6.1.2.1. Číselnému zápisu OID odpovídá zápis jmény. Např. iso.identified-organisation.dod.internet.mgmt.mib-2.

Ukázka MIB stromu.

|
|__________________
|          |       |
ccitt(0)  iso(1)  joint-iso-ccitt(2)
           |  
 __________|__________________________
|             |              |        |
standard(0)  registration-  member-  identified-
             authority(1)   body(2)  organisation(3)
                                      |
                                     dod(6)
                                      |
                                     internet(1)
                                      |
                                     mgmt(2)
                                      |
                                     mib-2(1)
                                      |
 _____________________________________|____________________________________________________________
|           |              |               |      |        |       |       |       |               |
system(0)  interfaces(1)  addr-           ip(3)  icmp(5)  tcp(6)  udp(7)  egp(8)  transmision(9)  snmp(10)
                          translation(2)

Syntaxe objektu určuje jeho datový typ. Jednoduché typy: integer, octet string, object id, bit string. Aplikační typy: network address, counter, gauge, time tick, opaque, unsigned integer. Konstruované typy row a table umožňují definovat seznamy a tabulky.

Konkrétní měřené hodnoty bývají v listech stromu. Agent implementuje vždy jen k danému zařízení relevantní podvětve stromu. SMI poskytuje výrobcům jednotlivých zařízení možnost vytvářet si vlastní privátní podvětve MIB stromu.

Příklad SMI definice objektu v MIB:

icmpInEchoReps OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
            "The number of ICMP Echo Reply messages received."
    ::= { icmp 9 }
Pokud používáte démona Net-SNMP, několik MIB souborů naleznete v /usr/share/snmp/mibs/.


Konfigurace SNMP démona

Nejnovější verzi Net-SMPT agenta je možné stáhnout z www.net-snmp.org. Konfigurační soubor démona naleznete v /etc/snmp/snmpd.conf. Pro rychlé vygenerování základní konfigurace je možné využít skript snmpconf -g basic_setup. Pro nastavení přístupu bude nutné soubor dále upravit.

Důležité konfigurační direktivy:

  1. com2sec - Namapování jména komunity na bezpečnostní jméno.
    #       sec.name       source        community
    com2sec notConfigUser  default       public
    com2sec lab            10.0.0.1/16   public
    com2sec proto          10.0.10.1/8   proto
    
  2. group - Namapování bezpečnostního jména na jméno skupiny.
    #       groupName      sec.model     sec.name
    group   notConfigGroup v1            notConfigUser
    group   labGroup       v2c           lab
    group   protoGroup     v2c           proto
    
  3. view - Vytvoření pohledů do MIB stromu.
    #       name           incl/excl     subtree         mask(optional)
    view    systemview     included       .1.3.6.1.2.1.1
    view    mib2           included       .iso.org.dod.internet.mgmt.mib-2
    view    all            included       .1
    
  4. access - Nastavení přístupu skupin.
    #       group          context sec.model sec.level prefix read       write  notif
    access  notConfigGroup ""      any       noauth    exact  systemview none   none
    access  labGroup       ""      any       noauth    exact  mib2       none   none
    access  protoGroup     ""      v2c       noauth    exact  all        all    none
    


MRTG

Multi Router Traffic Grapher je nástroj, který umí generovat grafy na základě SNMP veličin. Většinou se používá na monitorování síťového provozu, ale je možné ho využít obecně na monitoring jakýchkoli zařízení podporujících SNMP. Výstupem programu jsou HTML stránky s PNG obrázky.

Pro rychlé vygenerování konfiguračního souboru lze použít skript cfgmaker:

cfgmaker --global 'WorkDir: /var/www/mrtg' --global 'Options[_]: bits,growright' --output /etc/mrtg.cfg public@proto
Tímto se nastaví cesta, kam a jak se mají ukládat generované stránky pro rozhraní proto. Soubor lze dále editovat a donastavit případná další rozhraní pro monitoring. Program mrtg se poté spouští s jediným parametrem - cestou ke konfiguračnímu souboru.
/usr/bin/mrtg /etc/mrtg.cfg
Je vhodné generovat grafy průběžně. Toho docílíme vložením příkazu do crontabu.

Pro rozsáhlejší systémy (sítě), u kterých se předpokládá velký počet statistik a grafů, se doporučuje využít služeb Round Robin Databáze (RRD Tool).


Nagios

Nagios je další nástroj pro monitoring síťě. Po zjištění problému umí notifikovat správce několika způsoby (email, instatn message, SMS, aj.). Stavové informace zobrazuje přes web. Je schopen monitorovat služby (SMTM, HTTP, atd.), výpočetní prostředky (zátěž CPU, využití disků, apod.) i podmínky vnějšího prostředí (např teplotu). Více info na www.nagios.org.


Tkined a Scotty

Scotty je softwarový balík, který umožňuje vývoj vlastních aplikací pro správu. Je založen na jazyku TCL (Tool Command Language). Skládá se ze dvou součástí:


Odkazy