SNMP pod Linuksem…

Mamy w firmie kilkadziesiąt modemów, kilkanaście zarządzalnych switchy,
ileś urządzeń radiowych. To wszystko razem tworzy dość skomplikowaną sieć.
A ja, wraz z kolegami muszę nad tym zapanować. Oczywiście radzimy sobie, ale
bywa to dość upierdliwe. Zwykle konfigurujemy urządzenia i badamy ich stan
przez WWW lub telneta. Oczywiście każde urządzenie ma inny interfejs,
a z każdym z tych interfejsów są jakieś problemy (np. w jednym modemie hasło
zmieniam elinksem, a przepustowość firefoksem, bo pierwsze nie działa
w firefoksie, drugie w elinksie). Sprzętu przybywa, więc zarządzanie nim staje
się coraz większym problemem.

Fajnie by było móc zarządzać wszystkim z jednego miejsca. Można część zadań
zautomatyzować jakimiś skryptami z osobnymi backendami dla każdego typu
urządzenia (tak mam teraz zrobiony backup konfiguracji części urządzeń)
i całością zarządzać w jednym miejscu (własny interfejs WWW), ale tu byłaby
kupa roboty. Taka śmierdząca kupa… więc sobie to daruję, przynajmniej na
większą skalę.

Jest jednak coś co łączy większość naszych urządzeń: SNMP. Prawie wszystkie te urządzenia obsługują
SNMP. Dotychczas używałem tego tylko do monitorowania wykorzystania łącz,
ewentualnie traktowałem jako ficzer, który należy wyłączać ze względów
bezpieczeństwa (niektóre urządzenie po ustawieniu hasła dostępu do WWW
i telneta dalej pozwalały na dostęp r/w przez SNMP z community name
private). Wczoraj, myśląc nad zautomatyzowaniem kolejnego zadania
(przygotowania konfiguracji MRTG dla wszystkich switchy, zsynchronizowanej
z danymi o topologii sieci z bazy danych), zacząłem się zastanawiać, czy nie
można by spróbować tego SNMP jakoś szerzej wykorzystać…

Od razu zaznaczam, że z SNMP jestem dość zielony, co może mieć duży wpływ
na to co napiszę poniżej – jak pisze bzdury, to prosze dać znać.

Wiem, że jest coś takiego jak słynne Open View, którego na oczy nie
widziałem, ale podejrzewam, że byłoby tym czego poszukuję. I to, że na pewno nas
na to nie stać. Postanowiłem poszukać coś tańszego, najlepiej otwartego i za
darmo. Zacząłem oczywiście od tego co widzi poldek…

Poldek, poza narzędziami do monitorowania urządzeń, w sensie rysowania
statystyk (to mi już u mnie MRTG + RRDTool załatwiają), znalazł niewiele. GXSNMP
jest nierozwijany od lat, a gdy go ostatnio oglądawał, to się za bardzo nie
nadawał do użytku. Tym razem sobie go darowałem. Kolejny był Scotty, którym już
też kiedyś się bawiłem. Pamiętam go jako brzydkie, ale działające coś w Tk/Tcl.
Chciałem znowu tego spróbować, ale nawet się nie uruchomiło. Scotty okazał się
niekompatybilny z aktualnym Tcl (używa jakiegoś prywatnego symbolu, którego
w nowej wersji biblioteki brak). Na razie nie chciało mi się z tym dalej
walczyć.

GXSNMP i Scotty to narzędzia nie tylko do zarządzania siecią przez SNMP, ale
też, a może przede wszystkim, do rysowania mapy sieci. Do SNMP poldek pokazał mi
jeszcze Mbrowse – Mbrowse is an SNMP MIB browser based on GTK and
net-snmp
. Pomyślałem, że to może się przydać – pozwoli się dobrać do
konkretnych zmiennych urządzenia. Po zainstalowaniu się nawet uruchomił, pokazał
drzewko MIB… ale nie udało mi się tym odczytać chociażby jednej wartości
z localhost (snmpwalk i snmpget z konsoli działały).
Do kitu.

W PLD nie znalazłem czego szukałem (rzadko to się zarza), to zajrzałem na
Freshmeat. Pierwsze na co tam
trafiłem, to MIB
Views
, firmy Muonics. Oprogramowanie komercyjne, z możliwością darmowego
wypróbowania przez piętnaście minut. Postanowiłem spróbować. Na pierwszy rzut
oka wygląda podobnie do Mbrowse, tyle że dużo ładniej… i działa. Wygląda na
to, że to co ma robić, to robi i robi to dobrze. Interfejs jest ładny
i wygodny (na tyle, na ile mnie się to udało teraz stwierdzić). Jednak raczej
tego nie kupimy – MIB Views nie daje żadnych mechanizmów zarządzania
całą siecią. W danym momencie pracuje się z jednym urządzeniem (agentem
SNMP), a żeby przełączyć się na inne trzeba od nowa podawać jego parametry.
Jeszcze muszę zobaczyć jak to będzie działać z konkretnymi urządzeniami (na
razie bawiłem się w domu, tylko z localhost), ale raczej to sobie darujemy.

Na Freshmeatcie znalazłem też trochę otwartego lub darmowego
oprogramowania. W szczególności zainteresowały mnie dwa Javowe programy: Open
Eyes i NetWhistler. Obydwa służą do
tworzenia mapy sieci i zarządania siecią. Pierwszy ma brzydki i mało
intuicyjny interfejs, nie chciało mi się w to wgłębiać. Drugi wydaje się
całkiem sensowny, ale strasznie długo z nim walczyłem, żeby dodać tam chociaż
jedną maszynę. Okazało sie, że NetWhistler działa tylko uruchomione z roota,
inaczej wali jakimiś mało mówiącymi wyjątkami. To zdaje się być normą
w oprogramowaniu Javowym – oprogramowanie zakłada, że ma dostęp do
wszystkich swoich plików, a instalator NetWhlister upierał się jeszcze, żeby
instalowac z roota. W każdym razie, z roota chodzi i nawet daje się używać,
ale na kolana nie powala. I zakłada, że wszystko jest zorganizowane w ładne
podsieci IP (u nas to bardziej skomplikowane – wiele VLANów, podsieci
w kilku VLANach jednocześnie, adresy oderwane od jakiejkolwiek podsieci)
i bezpośrednio dostępne (u nas wiele sieci jest odizolowanych, nie chciałbym
włączać pomiędzy nimi routingu, żeby wszystko dało się zapingowac z workstacji
adminów). Może warto się tym jeszcze pobawić… a może i nie.

Z oprogramowania na Freshmeat znalezionego pod hasłem SNMP zainteresowało
mnie jeszcze jedno: Internode
Nodemap
. Internode Nodemap to zestaw narzędzi to tworzenia map sieci, ale
nie koncentrujące się na urządzeniach, ale na łączech. Sama mapa nie jest
wyklikiwana, ale wczytywana z plików konfiguracyjnych. Pod każdą mapkę może być
podłożony obrazek jako tło – w ten sposób można np. wrysować swoje łącze
na plan miasta. To mogło by się dobrze u nas sprawdzić, wymagałoby jednak sporo
pracy – wypadałoby zrobić coś co zamieni dane o topologii sieci z naszej
bazy na plik konfiguracyjny dla Internode Nodemap i dołożyć informacje
o geograficznym/fizycznym położeniu urządzeń (czyli zrobić interfejs w którym to
będzie można wyklikać). Możliwy do uzyskania efekt kusi, więc może się tym
zajmiemy.

Wciąż nie jestem w pełni zadowolony z wyniku poszukiwań. To co znalazłem
może i może się do czegoś przydać, ale ciągle to nie jest to.
Nie znalazłem narzędzia, które mógłbym po prostu zainstalować i stosować,
wiedząc, że ułatwi mi pracę i nie musząc dostosowywać tego do naszej sieci, czy
naszej sieci do tego narzędzia. Np. myślałem o czymś, co mogło by bezpiecznie
(wykorzystując SNMPv3) korzystać z SNMP proxy na maszynach z dostępem do
zamknietych sieci. Jednak mało co umie SNMP w wersji 3, a obsługi proxy (czy
raczej kontekstów, bo jak dobrze zrozumiałem, to do tego się to sprowadza) nie
widziałem nigdzie. Liczyłem też na to, że uda się jakoś wykorzystać dane
o topologii sieci z naszej bazy – co do czego i jak jest podłączone.
A może wciąż gdzieś tam jest coś, czego nie znalazłem, a co rozwiązało by
wszelkie moje problemy…

12 uwag do wpisu “SNMP pod Linuksem…

  1. Takie kombajny z założenia omijałem. To _czy_ coś mi działa, czy nie, to wiem, bez tego, używając znacznie lżejszych rozwiązań.
    Nie wykluczam tego, że kiedyś się jeszcze Nagiosem zainteresuję, ale teraz szukałem czegoś innego. Czegoś do _zarządzania_ siecią, a nie monitorowania urządzeń. Np. do włączania/wyłączania portów na switchu, czy zmiany mocy nadajnika radiowego.

    Polubienie

  2. Nagios rewelacyjnie sprawdza się do monitorowania wszystkiego. Co więcej potrafi w przypadku jakichś problemów podjąć odpowiednie operacje, np. zresetować radio, jak będzie za dużo strat. Jest bardzo rozbudowywalny. Nie wyobrażam sobie życia bez niego, u mnie strzyże, goli, pier*li, i krawaty wiąże :D.

    Polubienie

  3. A ja jestem ciekaw, czy te sławne i wielkie naprawdę tyle umieją co się nam maluczkim wydaje, czy to czasem nie jest tak, że i tak trzeba sobie wyrzeźbić, tylko język mniej standardowy.

    Polubienie

Co o tym sądzisz?