Monitoring Sieci skrypty w Mikrotiku
Routery, switche, stacje robocze, serwery, nawet w małej firmie ich ilość może przekroczyć lekko ponad 10 sztuk, a jak do tego doliczymy także inne urządzenia IP typu drukarki, telefony, kamery, to wychodzi całkiem spora ilość urządzeń. Nie możemy dopuścić do sytuacji, w której ręcznie musielibyśmy sprawdzać czy urządzenia działają prawidłowo, albo czekać na informacje z innych działów, że np. nie mają Internetu. Jako dobry administrator musisz być zawsze o jeden krok do przodu, dlatego warto zautomatyzować monitoring sieci. Mikrotik oferuje oprogramowanie The Dude, jednak jest ono dostępne w droższych rozwiązaniach. Na potrzeby małej infrastruktury wystarczy nam praktycznie dowolny model Mikrotika do wdrożenia system monitorowania sieci.
Ogólna koncepcja
Nasz router będzie miał za zadanie pilnować czy urządzenia żyją(odpowiadają na pingi). Do tego celu utworzymy dwa skrypty. Jeden będzie sprawdzał czy na 5 wysłanych pingów żaden nie powrócił, czyli urządzenie nie żyje. W następstwie tego zostanie wysłany mail z informacją o nie działającej maszynie, oraz zostanie uruchomiony drugi skrypt. Skrypt będzie sprawdzał czy na 5 wysłanych pingów 5 wróciło, i podobnie jak we wcześniejszej sytuacji zostanie wysłany mail z informacją o powrocie maszyny oraz przełączy się na 1 skrypt. Interwał wykonywanych wynosi 5 min. Dzięki temu będziemy otrzymamy tylko maile o zmianach statusu urządzenia, a nie z ciągłą informacją, że urządzenie nie żyje, tak jakby było to w przypadku zwykłego netwatcha
Konfigurowanie Mikrotika – email
Przejdźmy do konfiguracji routera, tak aby mógł wysyłać e-maile. Do tego potrzebujemy jaką dowolne konto pocztowe. Przechodzimy na zakładkę Tools->Email
W nowym oknie uzupełniamy:
- Server: adres smtp konto pocztowego
- Port: port serwera smtp. Najczęściej 25, 587, 465
- Start TLS: czy serwer wspiera szyfrowanie. Informacje znajdziecie u waszego operatora poczty
- From: adres konta pocztowego z którego mają być wysyłane powiadomienia
- User i Password: login i hasło do konta pocztowego
Przygotowanie skryptów
W celu ułatwienia pisania skryptów zalecam korzystanie z terminala ponieważ możemy skorzystać z uzupełniania komend wciskając przycisk TAB. Uruchamiamy terminal klikając w New Terminal i przechodzimy do skryptów wpisując:
[code] /system scripts [/code]
Teraz poleceniem
[code]add name=server1_up source={}[/code]
tworzymy nowy skrypt, gdzie
- name: wpisujemy dowolną nazwę, bez spacji
- source={}: wpisujemy sam nawias klamrowy
Stworzyliśmy nowy pusty skrypt, teraz musimy wypełnić go kodem, tak aby był nam posłuszny:)
Wpisujemy:
[code]edit value-name=source server1_up[/code]
W edytorze wpisujemy:
[code]
:if ([/ping 192.168.0.200 count=5] > 4) do={
/tool e-mail send [email protected] server=smtp.grzegorzkowalik.com [email protected] subject="Server WWW działa." body="Serwer WWW powrócił"
/system scheduler disable ping_server1_up
/system scheduler enable ping_server1_down
}
[/code]
Opis:
- /tool e-mail: definiujemy parametry wysyłanego maila
- /system scheduler: przestawiamy harmonogram zadań, tak aby zawsze działał tylko jeden skrypt sprawdzający
Drugi skrypt tworzymy analogicznie przy czym zmieniamy jego nazwę na server1_down
[code]
:if ([/ping 192.168.0.200 count=5] = 0) do={
/tool e-mail send [email protected] server=smtp.grzegorzkowalik.com [email protected] subject="Awaria! Server WWW nie działa." body="Serwer WWW nie działa"
/system scheduler enable ping_server1_up
/system scheduler disable ping_server1_down
}
[/code]
Harmonogram – Scheduler
Przechodzimy do harmonogramu zadań, dzięki któremu ustawimy włączanie i wyłączanie skryptów z zależności od sytuacji. Przechodzimy na System->Scheduler
Dodajemy dwa nowe zadania. Pierwsze wywołuje skrypt server1_down drugie server1_up. Klimamy na niebieski znak plusa i tworzymy zadania.
Uzupełniamy:
- Name: nazwa skryptu, musi być taka sama jak wpisaliśmy przy tworzeniu skryptu. W tym przypadku ping_server1_down albo ping_server1_up
- Start Date: data pierwszego uruchomienia skryptu
- Start Time: godzina pierwszego uruchomienia. Przy ustawieniach ping_server1_down ustawiamy na 15 sekund później. Nie chcemy, aby skrypty wykonywały się w tym samym czasie
- Interval: czas po upływie, której skrypt wykona się ponownie.
- On Event: nazwa naszego skryptu, który ma zostać uruchomiony
Ustawienia startowe
Pozostaje nam jeszcze wymusić ustawienia startowe skryptów w przypadku ponownego uruchomienia routera. Nie chcemy dostać masę maili z informacją, że urządzenia działa, za każdym razem gdy uruchomimy ponownie router. W tym celu przygotujemy dodatkowy skrypt i ustawimy iż, na starcie ma działać tylko skrypt sprawdzający ping_server1_down. Wracamy do terminala i wpisujemy:
[code]
/system script
add name=ustawienia_startowe source={}
edit value-name=source ustawienia_startowe
[/code]
w edytorze wpisujemy komendy:
[code]
/system scheduler enable ping_server1_down
/system scheduler disable ping_server1_up
[/code]
Ponownie przechodzimy na zakładkę Systems->Scheduler i dodajmy nowy wpis.
Wartości uzupełniamy analogicznie do wcześniejszy z tą różnicą, iż Start Time zmieniamy na startup
Podsumowanie
Przy większej ilości urządzeń powyższe rozwiązanie staje się ciężkie do opanowania. Trzeba pamiętać, aby na bieżąco dodawać nowe wpisy w ustawieniach_startowych. Rozwiązanie jest stosunkowe tanie, nie potrzebujemy zewnętrznego serwera. Możemy wdrożyć system monitoringu na routerze za 100 zł. W przygotowaniu mam całą serię odnośnie monitoring, także zapraszam polajkowania fanpage, czy subskrybowania mojego kanału na Youtube. Jeżeli chciałbyś się dowiedzieć czegoś o pracy administratora sieci, to ten kanał na pewno jest dla Ciebie:)
Materiał Video: Monitoring Sieci skrypty w Mikrotiku
Moje artykuł praktycznie zawsze dodatkowo posiadają materiał video, dlatego zapraszam do oglądania.
Witam,
Czy jest możliwość utworzenia skryptu który monitorowałby ruch na określonym porcie portu WAN (np: 80.55.23.6:8000) i po wykryciu ruchu przesyłałby maila do administratora?
Nie wiem czy aktualne jest pytanie kolegi BART ale wydaje mi się że najlepiej było by zrobić w Firewall’u filtr który będzie rejestrował ruch na konkretnym adresie i porcie a skrypt będzie sprawdzał ilość pakietów w tej regule. Jeżeli będzie większa od 0 to znaczy że jakiś ruch tam był i wysyła mail-a.
A nie dałoby się zautomatyzować tego w pętli dla następujących po sobie adresów ip? Ja wydzielam osobne pule dla kamer zewnętrznych i wewnętrznych, a te jeszcze w razie konieczności dzielę na mniejsze (np pietra). Tak że ma do sprawdzania parę grup urządzeń o kolejnych adresach ip.
Przy większej ilości lepiej zastosować jakieś dedykowane rozwiązania, takie jak: smokeping, zabbix, librenms