Używam Amazon EC2 do mojej aplikacji mobilnej. W zależności od obciążenia aplikacji w danym momencie mogę odradzać nowe instancje, a następnie je usuwać, gdy obciążenie jest niższe, aby zaoszczędzić koszty.
Jak nadążyć za konfiguracjami Nagios w tak dynamicznym środowisku? Jeśli chodzi o zarządzany sprzęt, pliki konfiguracyjne są przewidywalne. W takim przypadku należałoby dodać Nagios, Capistrano i kilka innych plików konfiguracyjnych. Capistrano musi wiedzieć, gdzie wdrożyć nową wersję dla serwera aplikacji. Nagios musi wiedzieć, aby usunąć istniejące wystąpienie lub dodać nowe wystąpienie do monitorowania. Nagios musi również wiedzieć, czy węzeł został celowo usunięty lub czy host nie działa z powodu błędu.
Jak to zrobić ze wspaniałym światem instancji VPS / dynamicznych?
źródło
Napisałem własny zestaw skryptów php, które zapisują konfiguracje nagios do pliku. Nagios jest łatwy, ponieważ jest to tylko plik tekstowy, więc wszystko, co musisz zrobić, to utworzyć szablon dla każdego typu serwera. Następnie, gdy serwer zacznie dodawać plik za pomocą szablonu. Jedynymi danymi, które zmieniają się w pliku, jest adres IP hosta i nazwa.
Dla bardziej statycznych serwerów stworzyłem skrypt, który działa
ec2-describe-instances
i tworzy plik dla każdej zwracanej instancji. Każde wystąpienie jest oznaczone tagiem: Cel = XXXX, więc wiem, który szablon zastosować.Dla naszych grup automatycznego skalowania konfigurujemy powiadomienie za pomocą
as-put-notification-configuration
polecenia, które wysyła komunikat do kolejki SQS. Skrypt php jest wykonywany przez crontab. Podczas wykonywania skryptu sprawdza kolejkę pod kątem nowych serwerów. Ilekroć znajdzie nowy serwer, tworzy nowy plik. To samo dzieje się, gdy serwer zostanie usunięty. Prawdopodobnie łatwiejszy w użyciu szef kuchni lub coś takiego, jeśli już go używasz, ale jeśli nie, możesz napisać prostą usługę php, taką jak moja, w ciągu kilku dni.źródło
Korzystamy z Opsview , który jest kolejnym pakietem nagios + baza danych + opakowanie rest-api. Nie wiem, czy jest to najlepsze rozwiązanie dla wszystkich (a nawet nas), ale pozwala nam dynamicznie konfigurować serwer Nagios za pomocą prostego interfejsu API REST z węzła (lub innego węzła administracyjnego), gdy się pojawi i usunąć go z konfiguracja po zakończeniu. Używam definicji szablonów hostów jako części manifestu kukiełkowego serwera Opsview (/ Nagios), a monitorowani hosty rejestrują się w nim i dołączają do odpowiedniego szablonu hosta jako część manifestu kukiełkowego.
Bardziej „ogólnym” podejściem, które powinno działać z praktycznie wszystkim, nawet oryginalnym Nagios i jego plikami statycznymi, jest konfiguracja przechowywanych marionetek - pozwala ona na napisanie skryptu w celu skonfigurowania dowolnego narzędzia, jakie chcesz, w zależności od informacji, które marionetka zbiera jego manifest.
Sugeruję, że do celów kryminalistycznych nie powinieneś całkowicie usuwać konfiguracji węzła, gdy jest on zdejmowany, ale spróbuj go zarchiwizować, a informacje monitorowania zebrane o nim podczas jego działania.
źródło
Kilka sposobów
Korzystanie ze wstępnie skonfigurowanych szablonów Amazon EC2.
Używanie manifestu marionetkowego z różnymi szablonami.
Skonfiguruj VPN między siecią nagios a maszyną wirtualną amazon. Następnie wszystkie maszyny wirtualne amazon będą miały statyczne IP, możesz nawet skonfigurować na nich DNS. Mamy nagios działające i monitorujące wszystkie nasze wystąpienia Amazon. Nie potrzebujemy nawet elastycznego ip. Używamy openvpn dla naszej sieci VPN.
Zbuduj Nagios, który nasłuchuje zewnętrznego polecenia i odpowiednio zaktualizuj jego konfigurację. W końcu maszyny mogą się zarejestrować, wyrejestrować, zawiesić, wznowić je na Nagios.
źródło
Nie mam srebrnej kuli do rozwiązania tego problemu z nagios. Ale dla capistrano istnieje capify-ec2 , rozszerzenie dla capistrano, które rozwiązuje listy ról serwera za pomocą funkcji oznaczania Amazon.
źródło