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:
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 (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/.
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:
# sec.name source community com2sec notConfigUser default public com2sec lab 10.0.0.1/16 public com2sec proto 10.0.10.1/8 proto
# groupName sec.model sec.name group notConfigGroup v1 notConfigUser group labGroup v2c lab group protoGroup v2c proto
# 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
# 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
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@protoTí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.cfgJe 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 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.
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í: