SNAMP
Deweloperzy | Bytex Solutions OÜ |
---|---|
Pierwsze wydanie | 7 lipca 2016 |
Wersja stabilna | 2.0.0 / 24 lipca 2017
|
Napisane w | Jawa |
System operacyjny | Międzyplatformowe |
Typ | Oprogramowanie do zarządzania klastrami Monitorowanie systemu |
Licencja | Licencja Apache 2.0 |
Strona internetowa |
SNAMP to wieloplatformowa platforma oprogramowania typu open source do telemetrii, śledzenia i zarządzania elastycznością aplikacji rozproszonych.
Przegląd
Głównym celem SNAMP jest uproszczenie zarządzania mikrousługami działającymi w kontenerach lub centrach danych zdefiniowanych programowo . Zapewnia gromadzenie danych telemetrycznych (metryk i zdarzeń), kompleksowe śledzenie żądań między komponentami oprogramowania odzwierciedlające topologię ścieżek komunikacyjnych, automatyczne skalowanie węzłów klastra na podstawie obciążenia, unifikację źródeł danych telemetrycznych.
Telemetria
Metryki, zdarzenia i kontrole kondycji służą do kontrolowania stanu i kondycji usług w środowisku IT. Gromadzenie odbywa się w czasie rzeczywistym. Zebrane dane mogą służyć do wizualizacji w postaci wykresów, alarmowania oraz wykonywania czynności konserwacyjnych. Możliwe jest ustawienie obserwatora dla ważnej metryki. Obserwator określa ograniczenia i warunki stosowane do wartości metryki. Jeśli wartość jest poza zakresem, obserwator może wykonać wyzwalacz. Wyzwalacz może być reprezentowany jako odręczny skrypt przy użyciu jednego z obsługiwanych języków skryptowych, np. Groovy . Może to być akcja konserwacyjna (restart węzła serwera) lub powiadomienie (alert na e-mail).
Dodatkowo istnieje możliwość rozszerzenia funkcjonalności istniejącego narzędzia monitoringu wykorzystywanego w przedsiębiorstwie. SNAMP może gromadzić dane telemetryczne i udostępniać je na zewnątrz przy użyciu dowolnej kombinacji obsługiwanych protokołów. Na przykład dane zebrane z JMX mogą zostać ujawnione przez SNMP i pozyskane przez inne oprogramowanie do zarządzania siecią, takie jak Nagios .
Śledzenie żądań
Śledzenie żądań pozwala identyfikować ścieżki komunikacji między usługami i zbierać ważne wskaźniki, takie jak czas odpowiedzi, liczba żądań na sekundę, dostępność, skalowalność itp. Te dane pomagają rozwiązywać problemy z opóźnieniami i skalowalnością oraz znajdować wąskie gardła. Dodatkowo ścieżki komunikacji mogą być wizualizowane w postaci wykresu w Web Console, co pozwala na obserwację całego krajobrazu IT w czasie rzeczywistym.
Aplikacje powinny być oprzyrządowane do zgłaszania niezbędnych informacji do SNAMP. Biblioteki instrumentacji można znaleźć w Maven Central przy użyciu groupID io.snamp.instrumentation
. Obsługiwane są również biblioteki instrumentalne innych firm:
- OpenZipkin
- Apache HTrace
Zarządzanie elastycznością
Elasticity manager jest komponentem SNAMP odpowiedzialnym za automatyczne udostępnianie i likwidację węzłów klastra. Jego zachowanie opiera się na zasadach skalowania . Z klastrem można skojarzyć jeszcze jedną zasadę skalowania. Proces decyzyjny oparty jest na logice rozmytej . Każda uczestnicząca polisa ma swoją własną wagę głosów, a menedżer elastyczności przeprowadza okresowo proces głosowania. Wynik głosowania reprezentuje jedną z trzech możliwych decyzji: powiększyć klaster, zmniejszyć klaster lub nic nie robić. Zasady skalowania mogą być oparte na kontroli kondycji, odręcznym skrypcie lub zakresie wartości powiązanych z jakąś metryką. Ze względu na elastyczność procesu decyzyjnego możliwe jest zdefiniowanie kilku strategii skalowania:
- all-of oznacza, że wszystkie zasady skalowania powinny głosować za zmianą pojemności klastra
- any-of oznacza, że co najmniej jedna z zasad skalowania może głosować za zmianą pojemności klastra
- większości oznacza, że większość zasad skalowania może głosować za zmianą pojemności klastra
Ponadto możliwe jest również przypisanie niestandardowych wag dla każdej polityki skalowania.
Menedżer elastyczności wykorzystuje podstawową platformę zarządzania klastrem lub chmurą do wysyłania poleceń dotyczących udostępniania i likwidowania. Może to być OpenStack , Kubernetes lub VMware ESXi .
Konsola internetowa
Web Console służy do wizualizacji metryk w postaci wykresów, wizualizacji ścieżek komunikacji pomiędzy usługami w postaci wykresu, monitora klastra. Korzystanie z konsoli internetowej do wizualizacji jest funkcją opcjonalną, ponieważ SNAMP zapewnia integrację z innymi narzędziami, takimi jak Grafana .
Architektura
Platforma SNAMP składa się z kilku komponentów:
- Resource Connector odpowiedzialny za komunikację pomiędzy SNAMP a usługą w krajobrazie IT. Hermetyzuje protokół komunikacyjny i udostępnia dane telemetryczne do SNAMP w ujednolicony sposób. Na przykład JMX Connector może służyć do sterowania aplikacjami Java za pomocą JMX .
- Brama udostępnia informacje zebrane ze wszystkich łączników zasobów na zewnątrz za pomocą wybranego określonego protokołu. Na przykład bramka SNMP może udostępniać dane telemetryczne uzyskane ze wszystkich łączników zasobów przy użyciu SNMP .
- Nadzorca kontroluje grupę zasobów. Zapewnia monitorowanie stanu, zarządzanie elastycznością, automatyczne wykrywanie zasobów.
Kombinacja różnych bramek i łączników zasobów umożliwia transformację danych telemetrycznych z jednego protokołu na inny. Każdy komponent można dostosować za pomocą skryptów opartych na Groovy . Możliwe jest napisanie niestandardowego komponentu przy użyciu dowolnego języka kompatybilnego z JVM .
Cechy
- Integracja z zewnętrznymi narzędziami do wizualizacji i monitorowania: Grafana, Nagios , SSH
- Zbieranie danych telemetrycznych przy użyciu następujących protokołów i technologii: Spring Actuator, OpenZipkin spans (z Kafki i HTTP), HTTP , JMX , Modbus , rsh , stdout z narzędzi wiersza poleceń, SSH
- Udostępnianie danych telemetrycznych za pomocą protokołów: XMPP (chat bot), SNMPv2/SNMPv3 , HTTP , NRDP , NSCA, syslog , strumieniowanie danych do InfluxDB
- Zarządzanie elastycznością obsługuje OpenStack Senlin.
- Świetne skrypty
Alternatywy
Alternatywne rozwiązanie może być skonstruowane przy użyciu kombinacji komponentów oprogramowania:
- Monitoring i wizualizacja: Nagios , Grafana
- Śledzenie od końca do końca: OpenZipkin
- Automatyczne skalowanie: AWS zapewnia automatyczne skalowanie zasobów EC2 , OpenStack Heat
Jolokia oferuje most JMX-to-HTTP, który może być hostowany w samodzielnym programie Java, serwerze aplikacji Java EE lub środowisku OSGi .