SNMP, MRTG

Tomáš Tetur, xtetur(at)fi.muni.cz


Obsah


SNMP

SNMP je komunikační protokol, který se používá na správu TCPIP sítí a jednotlivých připojených počítačů resp. obecně zařízení. SNMP byl vyvinut organizací IETF a dá se použít na TCPIP sítě a na některé další druhy sítí. SNMP má klient/server architekturu. Klient (zvaný manažer - správce) se připojí k serveru (zvanému SNMP agent), který je spuštěn na vzdáleném síťovém zařízení a poskytuje manažer informace o stavu zařízení.

SNMP definuje jistý formát UDP zpráv.

  1. Get request. Vrátí nějakou stavovou hodnotu ze zařízení. Dá se přenést více hodnot, v rámci jednoho sezení příp. TCP spoje.

  2. Get-next request. Používá se pro zjišťování které veličiny dané zařízení podporuje a jejich hodnoty. Tohoto využívá zejména snmpwalk.

  3. Set request. Používá se na nastavení hodnoty dané veličiny. Tímto se dají například zapínat/vypínat síťová rozhraní apod.

  4. Trap request používají spravovaná zařízení na asynchroní hlášení chyb manažerovi.

SNMP MIB

SNMP Management Information Base je hierarchicky organizovaná kolekce informací. K MIB objektům se přistupuje pomocí nějakého network-management protokolu. Například SNMP. Skládají se ze spravovaných objektů a mají své identifikátory.Každé zařízení je charakterizováno nějakými svými specifickými MIB objekty. Každý MIB objekt je jednoznačně určen nějakým OID (Object ID). Hierarchie se dá uspořádat do stromu, kde top Každá větev má jak unikátní jméno, tak ekvivalentní deskriptor. Napřiklad iso.identified-organization.dod.internet.private.enterprise.cisco.temporary variables.AppleTalk.atInput je dejme tomu 1.3.6.1.4.1.9.3.3.1.




NET-SNMP

NET-SNMP je balík programů pro práci se SNMP protokolem. Verze ř vychází z UCD-SNMP, který Je dostupný na adrese net-snmp.sourceforge.net a pravděpodobně také jako součást některých distribucí. Obsahuje :


snmpd je démon, který běží na daném stroji a vyřizuje požadavky SNMP klientů. Stažená verze se dá snadno zkompilovat pomocí

configure
make
make install

Konfigurace je uložena v souborech snmpd.conf (konfigurace SNMP agenta, nastavení týkající se uživatelů a přístupových práv obecně, rozšiřování o další MIBy apod.), snmp.conf (definuje chování aplikací využívajících SNMP. - používanou verzi SNMP protokolu, cesty k MIB objektům apod.) snmptrapd.conf (Definuje jak se má chovat SNMP trap daemon, když obdrží trap request). Tyto soubory se nemusí psát ručně. Pro jejich automatické vygenerování se dá použít program snmpconf, který je rovněž součástí balíku net-snmp.

Knihovnu pro vývoj aplikací pracujících jako SNMP klient nebo agent.

snmptranslate – Překlad jmen větví SNMP stromu na numerické hodnoty a vice versa eventuálně znázornění SNMP stromů v textové podobě

% snmptranslate .1.3.6.1.2.1.1.3.0

SNMPv2-MIB::sysUpTime.0

snmpget – Vrátí hodnotu zadané veličiny.

% snmpget -c demopublic -v 2c test.net-snmp.org system.sysUpTime.0

system.sysUpTime.0 = Timeticks: (586731977) 67 days, 21:48:39.77

snmpgetnext – Podobné jako snmpget, ale vrátí hodnotu get-next requestu.

% snmpgetnext -v 2c -c demopublic test.net-snmp.org system.sysUpTime.0

system.sysContact.0 = Wes Hardaker wjhardaker@ucdavis.edu

snmpwalk: vrátí část stromu. Začne na zadané veličině a pomocí get-next requestů pokračuje až na hranice OID.

{viz příklad na http://www.net-snmp.org/tutorial-5/commands/snmpwalk.html}

snmptable: zobrazí SNMP tabulku.

% snmptable -v 2c -c demopublic test.net-snmp.org sysORTable

{výstup viz http://www.net-snmp.org/tutorial-5/commands/snmptable.html}

snmpset: provede změnu hodnoty zadané veličiny.

% snmpget -v 2c -c demopublic test.net-snmp.org ucdDemoPublicString.0

enterprises.ucdavis.ucdDemoMIB.ucdDemoMIBObjects.ucdDemoPublic.ucdDemoPublicString.0 = "hi there"

% snmpset -v 2c -c demopublic test.net-snmp.org ucdDemoPublicString.0 s "hello world"

enterprises.ucdavis.ucdDemoMIB.ucdDemoMIBObjects.ucdDemoPublic.ucdDemoPublicString.0 = "hello world"

% snmpget -v 2c -c demopublic test.net-snmp.org ucdDemoPublicString.0

enterprises.ucdavis.ucdDemoMIB.ucdDemoMIBObjects.ucdDemoPublic.ucdDemoPublicString.0

= "hello world"

snmptrap: Sending and receiving traps, and acting upon them.


MRTG

MRTG je software na malování grafů podle SNMP veličin. Je k mání jak pro UNIXové systémy tak pro MS Windows. Instalace na systému Linux je relativne jednoduchá – buď použijeme nějaký balíčkovací systém dodávaný s naší distribuci, nebo zkompilujeme ze zdrojového kódu. K tomu jsou však potřeba nějaké již nainstalované programy. Je to

GCC – Bez toho snad nezkompilujeme téměř nic.

Perl – Pro MRTG verzi aspon 5,005. Aktuální verze je 5.8.5. K mání na www.perl.com

a také nějaké knihovny

gd – knihovnu pro malování grafů kterou vytvořil Thomas Boutell. Novější verze podporují jenom PNG formát, ale MRTG pracuje i se staršími. K mání na http://www.boutell.com/gd/

libpng – potřebuje ji gd. K mání na http://www.libpng.org/pub/png/libpng.html

zlib – je potřeba pro libpng. K mání na http://www.gzip.org/zlib

Po zkompilování MRTG je potřeba vytvořit nějaké konfigurační soubory. Toto můžete udělat buď ručně, nebo pomocí utility cfgmaker, která se dodává spolu s MRTG. Třeba takto:

$ cfgmaker --global 'WorkDir: /var/www/htdocs/' --global 'Options[_]: bits,growright' --output /home/mrtg/cfg/mrtg.cfg public@router.abc.xyz

Po automatickém vygenerování konfiguračního souboru v něm bude asi potřeba něco upravit/upřesnit. Kompletní výčet možných direktiv MRTG je na http://www.mrtg.cz/mrtg-reference.html Některé zajímavé MIB objekty pro použití v MRTG jsou na http://www.mrtg.cz/mrtg-mibhelp.html

Pro periodické generování grafů se dá přidat spouštění mrtg do /etc/crontab. Asi takto:

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/bin/mrtg-2/bin/mrtg /home/mrtg/cfg/mrtg.cfg --logging /var/log/mrtg.log


Nagios

Nagios je nástroj na sledování sítě – strojů a služeb, které na ní běží. Monitoruje tyto služby a upozorňuje správce když je něco špatně. Je k mání na www.nagios.org .

Zkompiluje se pomocí

./configure --prefix=prefix --with-cgiurl=cgiurl --with-htmurl=htmurl --with-nagios-user=someuser –with-nagios-grp=somegroup

kde prefix nahradíte adresářem, kam se to má nainstalovat, cgiurl nahradíte url odkazem, kterým k tomu budete přistupovat(výchozí je /nagios/cgi-bin). htmurl nahradíte url na hlavní stránku. someuser nahradíte uživatleským jménem, které bude použito pro nastavení oprávnění (výchozí je nagios) a somegroup bude skupina toho uživatele (výchozí je nagios).

make all

make install

Ukázkový spouštěcí skript (budou se asi muset upravit cesty apod.) se dá nainstalovat do /etc/init.d/nagios pomocí

make install-init

Dále bude potřeba nainstalovat nějaké pluginy. Bez nich je Nagios k ničemu. Pluginy jsou programy nebo skripy, které se daji spustit z pžíkazového řádku a pomocí nichž Nagios určuje stav dané stanice/služby. Jsou k mání na http://sourceforge.net/projects/nagiosplug/ . Jejich konfigurace je specifická pro daný plugin.

Konfigurace je uložena v několika souborech.

Hlavní konfigurační soubor (obvykle /usr/local/nagios/etc/nagios.cfg) obsahuje direktivy, které určují jak se Nagios bude chovat. Popis jednotlivých direktiv je popsán na http://nagios.sourceforge.net/docs/1_0/configmain.html

Zdrojové soubory se dají použít na ukládání uživatelských maker. Mohou také obsahovat různé informace (např. o připojení k databázi). Prakticky se používají na ukládání citlivých informací, aniž by tyto informace byly zpřístupněny CGI skriptům. Dají se určit direktivou resource_file v hlavním konfiguračním souboru.

Objektové konfigurační soubory se používají na definice strojů, služeb atd. Které chceme sledovat. Dokumentace je dostupná na http://nagios.sourceforge.net/docs/1_0/configobject.html

Konfigurace CGI je obvykle v /usr/local/nagios/etc/cgi.cfg a obsahuje direktivy ovlivňující chování CGI skriptů dodávaných k Nagios. Jejich výčet je na http://nagios.sourceforge.net/docs/1_0/cgis.html a seznam jednotlivých direktiv je na http://nagios.sourceforge.net/docs/1_0/configcgi.html

Lze konfigurovat ještě detaily jako kreslení souřadnic nebo ikonek a to v konfiguračních souborech pro rozšířené informace. Dokumentace k těmto je na http://nagios.sourceforge.net/docs/1_0/configextinfo.html

Před spuštěním je dobré překontrolovat konfiguraci pomocí

/usr/local/nagios/bin/nagios -v <main_config_file>

Pokud to projde můžeme startovat pro běh na pozadí pomoci

/usr/local/nagios/bin/nagios <main_config_file> &


Zdroje

Domovská stránka net-snmp

Dokumentace SNMP protokolu na http://www.snmp.com/protocol/

Mapu MIB-2 stromu na http://carsten.familie-doh.de/mibtree/mib-2-native.html

Zrcadlo domovské stránky MRTG na http://www.mrtg.cz

Dokument SNMP Overview. Našel jsem jej ve WayBackMachine, ale nyní dočasně na http://www.fi.muni.cz/~xtetur/SNMP_Overview.html

Knihu Internetworking Technologies Handbook

Dokumentaci Nagios – http://nagios.sourceforge.net/docs/1_0/toc.html