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).
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