Co to wlasciwie jest ten SNMP? :
Simple Network Management Protocol – Najprościej mówiąc jest to Sląska baba w oknie z kawa opierająca sie parapet, która ma na wszystko oko i zadzwoni gdzie trzeba jeśli coś jej sie nie spodoba:) a bardziej dokładniej jest to protokół trzeciej warstwy sieciowej(IP) ,dzięki któremu będziemy mogli zdalnie zarządzać i odczytywać informacje z urządzę sieciowych. Ma w prostu i szybki sposób dawać nam informacje o serwerku(snmpget), zgłaszać nam gdy coś sie dzieje złego(snmptrap) , a także umożliwić wykonywania działań na nim (snmpset). Jednym słowem , wspaniale narzędzie do zbudowania naszej aplikacji monitorująca siec(manager). Wykorzystuje protokół UDP na porcie 161 (do wysłania i odpowiadanie na żądania ) i 162 ( odbierania trapow). Jest podział na dwie role, manager zbierają dane i wysyłają zadania, a agenci posłusznie odpowiadaj i wykonują 🙂
Protokół doczekał sie trzech wersji:
- SNMP Version 1 ( -v 1) – bezpieczeństwo na poziomie haseł community(plain-text) możliwy w czterech opcjach : read-only, read-write , read-write i trap.
- SNMP Version 2 (-v 2c) – zgodność z poprzednikiem, bulk querties, wsparcie dla 64 bit.
- SNMP Version 3 (-v 3) – szyfrowanie połączenia.
Informacje które są odczytywane od agenta przez managera, znajdują się w tak zwanej strukturze zarządzenia, czyli drzewo ( SMI – Structure of managemnet) a konkretna numeryczna ścieżka do jednostki lub grupy informacji, można porównać do owego liścia na tym drzewie, która stricte jest nazywana OID em(object identyfices).

Czyli adres do OIDa typu system to 1.3.6.1.1.1.1 albo iso.org.dod.internet.directory.mib-2.system lub przestrzeń nazwy z pliku MiB SNMPv2-MIB::system, ale musimy go mieć w naszej bazie.
Oid składa się na kilka typów, o to kilka najważniejszych:
- INTEGER – liczba.
- OCTET_STRING – ciąg znaków, text.
- Counter – licznik który tylko się dodaje , kiedy przekroczy max liczbę (2^32) zaczyna liczyć od zera.
- Gauge – to samo co Counter ale możne się tez odejmować.
Najczęściej do odczytywanie informacji korzysta się z gotowych schematów opisujących czyli MiB ( Managment Inforation Base) i zęby można było odczytywać dane, agent i manager musi wspierać dana implementacje miba.
Snmp składa z kliku operacji:
- get – zadanie o informacje
- get-next – zadanie kolejnej po tej informacji
- get-bulk – bardziej szczegółowe i więcej informacji
- set -zmiana wartości na serwerze ( interface up na down)
- trap – informacja wysyłana przez agenta ze coś poszło nie tak
Konfiguracja Agenta(urządzenie z którego chcemy odczytać informacje) :
Wykonujemy kopie domyślnego pliczku i tworzymy właściwą konfiguracje dla agenta:
cd /etc/snmp mv snmp.conf snmp.conf.org mcedit snmp.conf
/etc/snmp/snmp.conf:
# Nazwa miejsca gdzie sie znajduje maszyna syslocation serwerownia_gliwice # Numer określa rodzaj end-host Agenta sysservices 79 # ustawiamy haslo do operacji tylko do odczytu rocommunity public 127.0.0.1 rocommunity public 10.10.10.2 # tablica obciążeń UCD-SNMP-MIB::laTable load 12 12 12 # tablica dysku UCD-SNMP-MIB::dskTable disk /dev/sda1 100000 # zachowaj 100Mb wolnego # tablica do monitorowania procesów proc httpd 1 1 # jeden serwer www procfix /bin/httpd restart # akcja gdy jest ich wiecej
I odpalamy naszego agenta:
snmpd -c /etc/snmp/snmp.conf -a /var/log/snmp.log
Odczytywanie danych( manager ):
snmpwalk – przeszukanie całego drzewa znanych OIDów.
#odczytanie wszystkich snmpwalk -c public -v 1 10.10.10.1 # wyświetlenie wraz ścieżka numeryczna oida zwiazana z korzeniem "system" snmpwalk -c public -On system
snmpget – odczytanie jednego konkretnego OIDa
snmpget -c public -v 1 10.10.10.1 .1.3.6.1.2.1.1.1.0 snmpget -c public -v 1 10.10.10.1 SNMPv2-MIB::sysDescr.0
snmptable – ładnie formatuje nasze dane do postaci tabelki
#Odczyt tabeli otwartych połączeń po tcp snmptable -c public -v 1 10.10.10.1 TCP-MIB::tcpConnTable #Odczyt tabeli dyskow snmptable -c public -v 1 10.10.10.1 UCD-SNMP-MIB::dskTable #Odczyt obciążenia serwera snmptable -c public -v 1 10.10.10.1