The Dude + QNAP. Integracja protokołu SMNP za pomocą zewnętrznej bazy MIB

Wraz ze wzrostem zagrożeń związanych z utratą danych, wzrasta również świadomość małych i średnich przedsiębiorców jak ważne są kopie zapasowe danych. Lawina maili ze złośliwym oprogramowaniem zaszyfrowała już nie jedną firmę. Często odzyskanie zaszyfrowanych danych jest niemożliwe lub wiąże się z zapłaceniem „okupu” liczonym w Bitcoinach. Dane mogą zostać utracone w wyniku fizycznego zniszczenia serwera bazodanowego np. pożaru. Utrata bazy danych całej firmy bez kopii zapasowej może spowodować upadek firmy. Coraz więcej przedsiębiorców wykorzystuje chmurę do przechowywania kopii baz danych. Jednak nie każdy administrator lub właściciel firmy chce „wyrzucać dane do Internetu”. Idealnym rozwiązaniem na przechowywanie danych jest serwer NAS.

Bardzo dużą popularnością w małych i średnich firmach cieszą się serwery Qnap. Oprócz standardowej przestrzeni na dane, Qnap oferuje szereg dodatkowych opcji i usług, takich jak:

  • Serwer WWW
  • RADIUS
  • Kontroler Domeny
  • Wirtualizacja systemów operacyjnych
  • SysLog
  • Serwer multimediów

Qnap wspiera protokół SNMP, jednak przeprowadzając skanowanie dostępnych informacji poprzez SNMPWalk nie dowiemy się niczego interesującego. Dlaczego? Qnap posiada swoją Bazę MIB  (Management Information Base), co powoduje, że część odpowiedzi wysłanych przez protokół SNMP jest dla naszej maszyny niezrozumiała.MIB jest bazą danych będącą zbiorem opisanych formalnie obiektów, z których każdy reprezentuje konkretny rodzaj informacji.

Na potrzeby tego artykułu wykorzystamy wysokiej klasy serwer NAS QNAP TS-EC1280U. Posiada on 12 zatok na dyski, 4GB RAM, 4 wentylatory,  4 porty Gigabit Ethernet, 2 porty 10GbE SFP+. Wszystkie te informację wykorzystamy do stworzenia sond monitorujących najważniejsze funkcje 😉 .

Na początku musimy zalogować się do serwera NAS i uruchomić protokół SNMP. Domyślnie jest on wyłączony. W menu głównym przechodzimy do Panelu Sterowania:

W grupie Usługi sieci i plików wybieramy SNMP:

Zaznaczamy Włącz usługę SNMP, wybieramy port (domyślnie 161), wybieramy poziom pułapki SNMP. Na koniec wprowadzamy adres IP na który będą wysyłane pułapki, wersję protokołu SNMP oraz społeczność. W moim przypadku będzie to public. Zatwierdzamy przyciskiem Zastosuj.

Aby The Dude zrozumiał informacje jakie będzie przesyłał QNAP musimy pobrać paczkę SNMP MIB. Gotowa paczka jest do pobrania poniżej ustawień SNMP.

Po pobraniu paczki z MIB musimy ją wrzucić na nasz serwer z The Dude. Logujemy się zatem na maszynę za pomocą winboxa. W menu przechodzimy do zakładki Files i wrzucamy paczkę do folderu dude/files. Paczka umieszona w innym folderze nie zostanie wykryta przez system.

Teraz przystępujemy do wykonania polecenia SNMPWalk. Standardowo dodajemy urządzenie do mapki poprzez PPM>Add device>Wpisujemy adres IP i zatwierdzamy OK.  Po pojawieniu się ikonki z naszym urządzeniem naciskamy na niego PPM>Tools>SNMPWalk. Aby pobrać tylko OID-y z wgranej przez nas paczki zmieniamy moduł na NAS-MIB.

  1. Monitorowanie statusu RAID

Ponieważ najważniejszym elementem w serwerze NAS jest macierz dyskowa – paczka MIB zawiera szereg OID-ów, za pomocą których możemy kontrolować najważniejsze parametry takie jak:
Poziom oraz status RAID, temperaturę oraz status smart każdego dysku z osobna.

POZIOM RAID

OID „RAID LEVEL” – 1.3.6.1.4.1.24681.1.4.1.1.1.2.1.2.1.7.1

STAUS RAID

OID „RAID STATUS” – 1.3.6.1.4.1.24681.1.4.1.1.1.2.3.2.1.5.1

Aby wyświetlić tę informację pod urządzeniem należy nacisnąć na urządzeniu PPM>Appearance, a następnie w polu Label należy wkleić :

RAID LEVEL:

[oid(“1.3.6.1.4.1.24681.1.4.1.1.1.2.1.2.1.7.1”)]

RAID STATUS:

[oid(“1.3.6.1.4.1.24681.1.4.1.1.1.2.3.2.1.5.1”)]

MONITOROWANIE DYSKÓW

Stan dysków możemy wyświetlić jako informacja pod urządzeniem lub stworzyć sondę, która poinformuje administratora o awarii dysku.

Istnieją dwa zestawy OID-ów informujących o stanie SMART dysków. Pierwszy zestaw zwraca wartość GOOD lub BAD. Za pomocą tego zestawu nie stworzymy sondy, możemy jedynie wykorzystać do celów informacyjnych. Drugi zestaw zwraca natomiast wartość good(0), co pozwala na stworzenie sondy.

OID „SMART STATUS” – 1.3.6.1.4.1.24681.1.2.11.1.7.1                    Zwraca GOOD

OID „SMART STATUS” – 1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.5.1    Zwraca good(0)

Cyfra na końcu odpowiada indexowi Dysku (1-12)

Do wyświetlenia informacji na temat kolejnych dysków użyjemy pierwszego zestawu. Kod będzie wyglądał następująco:

HDD1:[oid(“1.3.6.1.4.1.24681.1.2.11.1.7.1”)]

HDD2:[oid(“1.3.6.1.4.1.24681.1.2.11.1.7.2”)]

HDD3:[oid(“1.3.6.1.4.1.24681.1.2.11.1.7.3”)]

HDD4:[oid(“1.3.6.1.4.1.24681.1.2.11.1.7.4”)]

HDD5:[oid(“1.3.6.1.4.1.24681.1.2.11.1.7.5”)]

HDD6:[oid(“1.3.6.1.4.1.24681.1.2.11.1.7.6”)]

HDD7:[oid(“1.3.6.1.4.1.24681.1.2.11.1.7.7”)]

HDD8:[oid(“1.3.6.1.4.1.24681.1.2.11.1.7.8”)]

HDD9:[oid(“1.3.6.1.4.1.24681.1.2.11.1.7.9”)]

HDD10:[oid(“1.3.6.1.4.1.24681.1.2.11.1.7.10”)]

Teraz czas na sondę, która będzie sprawdzać stan każdego dysku i poinformuje administratora o wykryciu błędu.

W lewym menu wybieramy Probes, dodajemy nową sondę poprzez +, następnie wypełniamy

NAME: DYSK1

TYPE: SNMP

AGENT: default

SNMP PROFILE: v1-public

OID: 1.3.6.1.4.1.24681.1.4.1.1.1.1.5.2.1.5.

OID TYPE: integer

COMPARE METHOD: ==(equal)

INTEGER VALUE: 0

Musimy również zaznaczyć Checkbox „Treat service as available only if up”. Przy dodawaniu następnych urządzeń do mapki, The Dude najpierw sprawdzi czy otrzymuje odpowiedź od tej sondy. Jeśli tak, to sonda zostaje dodana na listę services. Odznaczenie tego Checkboxa spowoduje automatyczne dodawanie tych sond do listy services niezależnie od stanu odpowiedzi.  

Analogicznie dodajemy sondy do wszystkich dysków. Zmieniając nazwę sondy oraz ostatni znak OID.

Po dodaniu wszystkich przechodzimy do urządzenia. Klikamy na niego dwukrotnie i przechodzimy do zakładki Services, dodajemy sondę poprzez + z listy Probes wybieramy kolejne dyski. 

Po prawidłowym utworzeniu sond oraz dodaniu ich do Services lista powinna wyglądać tak:

Gdy dysk ulegnie awarii sonda monitorująca uszkodzony dysk zwróci błąd w postaci:

Nazwę sondy, która zwróciła błąd zobaczymy również pod urządzeniem na mapie sieci:

STATUS i PRĘDKOŚĆ WENTYLATORÓW

OID „FAN STATUS” – 1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.4.1 

OID „FAN SPEED” – 1.3.6.1.4.1.24681.1.3.15.1.3.1

Wyświetlanie statusu wszystkich wentylatorów pod urządzeniem:

Ostatnia cyfra jest indexem wentylatora (1-4)

FAN1:[oid(“1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.4.1”)]

FAN2:[oid(“1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.4.2”)]

FAN3:[oid(“1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.4.3”)]

FAN4:[oid(“1.3.6.1.4.1.24681.1.4.1.1.1.1.2.2.1.4.4”)]

Wyświetlanie prędkości poszczególnych wentylatorów:

FAN1_SPEED:[oid(“1.3.6.1.4.1.24681.1.3.15.1.3.1”)] obr/min

FAN2_SPEED:[oid(“1.3.6.1.4.1.24681.1.3.15.1.3.2”)] obr/min

FAN3_SPEED:[oid(“1.3.6.1.4.1.24681.1.3.15.1.3.3”)] obr/min

FAN4_SPEED:[oid(“1.3.6.1.4.1.24681.1.3.15.1.3.4”)] obr/min

Mając informację dotyczącą statusu wentylatorów możemy stworzyć sondy.

Dodajemy pozostałe wentylatory i dodajemy je do services.

Znając prędkości obrotu poszczególnych wentylatorów można w bardzo prosty sposób stworzyć wykres. W pierwszej kolejności należy stworzyć źródło danych. Można to zrobić w bardzo szybki sposób za pomocą SNMPWalk. Na drzewku wyszykujemy OID-ów z prędkościami wentylatorów, następnie klikamy na nie za pomocą PPM i wybieramy Create Data Source.

UWAGA!
Na początku OID-a należy dodać „1” przed kropką w części „CODE”. Bez tej jedynki wartość zwracana będzie równa 0.

Kod musi wyglądać następująco

oid_raw(“1.3.6.1.4.1.24681.1.2.15.1.3.1”, 5, 5, “10.0.0.250”, “v1-public”)

Analogicznie dodajemy źródła danych do 3 pozostałych wentylatorów.

Czas na wykres😊
Przechodzimy do menu po lewej stronie. Wybieramy Charts, plusem dodajemy nowy wykres. Po zatwierdzeniu przechodzimy do nowo utworzonej pozycji.

Dodajemy wszystkie źródła danych dotyczące prędkości wentylatorów, wybieramy kolor wykresu i zatwierdzamy ok.

No i mamy wszystkie wentylatory na jednym wykresie😊

TEMPERATURA DYSKÓW

Temperaturę dysków pobieramy analogicznie. Tutaj również istnieje kilka zestawów OID-ów dotyczących temperatury. To, którego zestawu użyje administrator zależy ponownie od celu przetwarzania wartości. Ostatnia cyfra OID–a podobnie jak wyżej jest indexem dysku.

OID „DISK TEMP” 1.3.6.1.4.1.24681.1.2.11.1.3.1      ZWRACA „32 C/89 F”

OID „DISK TEMP” 1.3.6.1.4.1.24681.1.3.11.1.3.1      ZWRACA „32”

Kod do wyświetlenia temperatury dysków pod urządzeniem (w stopniach Celsjusza oraz Farenheita )

TEMP HDD 1: [oid (“1.3.6.1.4.1.24681.1.2.11.1.3.1”)]

TEMP HDD 2: [oid (“1.3.6.1.4.1.24681.1.2.11.1.3.2”)]

TEMP HDD 3: [oid (“1.3.6.1.4.1.24681.1.2.11.1.3.3”)]

TEMP HDD 4: [oid (“1.3.6.1.4.1.24681.1.2.11.1.3.4”)]

TEMP HDD 5: [oid (“1.3.6.1.4.1.24681.1.2.11.1.3.5”)]

TEMP HDD 6: [oid (“1.3.6.1.4.1.24681.1.2.11.1.3.6”)]

TEMP HDD 7: [oid (“1.3.6.1.4.1.24681.1.2.11.1.3.7”)]

TEMP HDD 8: [oid (“1.3.6.1.4.1.24681.1.2.11.1.3.8”)]

TEMP HDD 9: [oid (“1.3.6.1.4.1.24681.1.2.11.1.3.9”)]

TEMP HDD 10: [oid (“1.3.6.1.4.1.24681.1.2.11.1.3.10”)]

KARTY SIECIOWE

Qnap posiada możliwość łączenia pojedynczych portów LAN w tzw. przełącznik wirtualny. Oznacza to, że oprócz rejestrowania ruchu na poszczególnych portach Ethernet, mamy możliwość odczytania transferu na portach połączonych w grupy (Bonding).

Łączymy Qnapa z przełącznikiem za pomocą PPM>Add link

Wypełniamy właściwości połączenia.
Device: Adres IP Qnapa. W moim przypadku 10.0.0.250

Mastering Type: SNMP

Interface:  Z dostępnej listy wybieram bond0 (przełącznik wirtualny, połączone ze sobą ETH1 oraz ETH2 )

Speed: zostawiamy puste

Type: Wybieramy z listy typ połączenia. Na liście są zdefiniowane podstawowe typy połączeń wraz z odpowiadającymi im prędkościami. Gdy transfer będzie zbliżał się do granicy prędkości w danym type transferu link zmieni kolor na czerwony.

Wszystko zatwierdzamy przyciskiem Finish. Po naciśnięciu na link łączący oba urządzenia wyświetlony zostanie wykres:

PRZESTRZEŃ DYSKOWA

Kolejną ważną informacją dla administratora jest ilość wolnej przestrzeni na serwerze NAS. QNAP wysyła informację o całkowitej oraz wolnej przestrzeni dyskowej.

OID „Total Disk Space” 1.3.6.1.4.1.24681.1.2.17.1.4.1

OID „Free Disk Space” 1.3.6.1.4.1.24681.1.2.17.1.5.1

Po dodaniu kodu:

HHD Space:

[oid(“1.3.6.1.4.1.24681.1.2.17.1.5.1 “)]

/ [oid(“1.3.6.1.4.1.24681.1.2.17.1.4.1 “)]

Otrzymamy:

Do następnego

Wojciech Kujawa

wojtek@mikrotikacademy.pl