Korelacja infrastruktury

Na tej stronie opisano, w jaki sposób są zintegrowane ze sobą światy produktów monitorowanie aplikacji i monitorowanie infrastruktury . Chociaż niektórzy użytkownicy mogą w większości polegać na monitorowaniu aplikacji, jest to czasami użyteczne, aby lepiej zrozumieć, jak warstwa logiczna jest odwzorowana na warstwę fizyczną, i wymagana, jeśli chodzi o rozwiązywanie problemów wykrytych na poziomie aplikacji, ale której główną przyczyną jest warstwa infrastruktury.

Instana pozwala na dwukierunkową nawigację w interfejsie użytkownika pomiędzy monitorowaniem aplikacji a infrastrukturą:

Korelacja infrastruktury odgrywa również znaczącą rolę w:

Podobnie produkty monitorowanie aplikacji i monitorowanie stron internetowych są zintegrowane razem, co zostało wyjaśnione w szczegółach tutaj.

W najprostszej formie usługa jest wykonywana przez jeden proces, np. wiosenną aplikację startową. Jednak jest dość powszechne, że jest wykonywane przez wiele procesów do obsługi różnych przypadków użycia:

  • zwiększenie przepustowości i odporności, tym więcej procesów lepsze
  • rozdzielenie pracy przez różne podmioty użytkujące lub konfiguracje
  • do uruchamiania różnych wersji tej usługi, zwykle w różnych środowiskach

Oznacza to, że z usługi można zwykle przejść do jednego lub wielu procesów bazowych i powiązanych z nimi obiektów, takich jak hosty, kontenery, pods Kubernetes itp.

Jednym z punktów wejścia jest Stos, na karcie Infrastruktura, która mówi wszystko o tym, jakie elementy infrastruktury dbają o uruchomienie usługi, w tym ich poprawność i ważne wielkości mierzone, takie jak wykorzystanie procesora lub pamięci.

Stos z usługi

Kolejnym punktem wejścia jest karta Infrastruktura panelu kontrolnego usługi, która udostępnia inny podział niż stos, a ponadto udostępnia pomiary śledzenia, takie jak liczba wywołań, częstotliwość błędów i średnie opóźnienie z poziomu hosta do poziomu procesu.

Karta Infra

Oba powyższe widgety oferują Kubernetes i Pivotal Cloud Foundry jako pierwszorzędne obywatele, którzy umożliwiają bezpośredni dostęp do powiązanych z nimi obiektów, takich jak usługi Kubernetes lub aplikacje PCF.

Przykład stosu dla usługi działającej w sieci Kubernetes:

Stos dla Kubernetes

Przykład karty Infrastruktura dla usługi działającej w sieci Kubernetes:

Karta Infra dla Kubernetes

Ogólnie dane śledzenia są powiązane z obiektami infrastruktury. Bardziej szczegółowo wywołanie może być połączone z maksymalnie 2 procesami: źródłem inicjującym połączenie i docelowym obsługą, które wywołują połączenie. Na przykład proces NodeJS tworzy wywołanie HTTP do procesu PHP.

W Widok śledzeniamożna wybrać dowolne wywołanie, aby otworzyć Szczegóły połączenia. Zarówno z sekcji źródłowej, jak i docelowej można dowiedzieć się, jakie elementy infrastruktury były zaangażowane.

W tym przykładzie źródłem jest proces PHP, podczas gdy miejscem docelowym jest wiosenna aplikacja startowa (proces Java):

Wywołania - szczegóły

Czasami korelacja z infrastrukturą nie jest możliwa, co zwykle oznacza, że proces bazowy nie jest monitorowany przez Instana.

Jest to zawsze przypadek wywołania głównego śledzenia, ponieważ zewnętrzny, niemonitorowany klient składa początkowe żądanie. W tym miejscu usługa shipping jest wywoływana z czegoś, co nie jest monitorowane przez Instana:

Wywołanie funkcji głównej Szczegóły połączenia

Inną sprawą jest to, że połączenia wychodzące są celem zewnętrznej usługi innej firmy. W tym miejscu usługa payment wywołała zewnętrzną usługę zewnętrzną www.paypal.com .

Usługa zewnętrzna Szczegóły połączenia

W przypadku wyszukiwania infrastruktury lub platformy (Kubernetes, Pivotal Cloud Foundryi vSphere) można użyć stosu , aby uzyskać listę wykonywanych usług, a aplikacje, które są częścią wraz z metrykami, takimi jak call i error count.

Stos z infrastruktury

Produkt Przed strumieniem/strumieniem zapewnia dostęp do usług i aplikacji, które są wywoływane odpowiednio przez bieżącą jednostkę infrastruktury i są wywoływane przez bieżącą jednostkę infrastruktury.

Przed strumieniem/przed strumieniem z infrastruktury

Jak działa

Ważne jest, aby wiedzieć, że monitorowanie aplikacja i infrastruktura jest oparte na dwóch różnych potokach danych:

Te 2 światy łączą się bezproblemowo dzięki mechanizmowi, który nazywamy linkami infrastrukturalnymi, gdzie połączenia są połączone z monitorowanymi obiektami infrastruktury. Łączenie występuje wtedy, gdy znaleziono wspólny identyfikator po obu stronach.

Usługi instrumentowe

Znaczniki umożliwiają śledzenie procesów w celu przechwycenia połączeń przychodzących i wychodzących. Połączenia te są następnie zgłaszane do zaplecza Instana, gdzie staramy się powiązać źródło i cel tych połączeń do niektórych znanych obiektów infrastrukturalnych. Gdy proces źródłowy (lub proces docelowy) jest instrumentowany, koniecznie oznacza to, że proces źródłowy (lub proces docelowy) jest również monitorowany przez czujnik Instana, który wie wszystko o nim. Ponieważ zarówno tracer, jak i czujnik są współlokalizowane, zarówno znają host, jak i proces, co sprawia, że połączenie infrastrukturalne jest możliwe.

Na przykład proces Python jest instrumentowany przez program Python tracer, który przechwytuje wszystkie połączenia przychodzące i wychodzące. W tym czasie na hoście, na którym działa ten proces, aktywowano kilka czujników: czujniki hosta, procesu i pytona. Zarówno tracer jak i czujniki wysyłają dane oddzielnie do postprocesora Instana, ale oba zawierają ten sam identyfikator do procesu. W związku z tym możliwe jest połączenie miejsca docelowego połączeń przychodzących i źródła wywołań wychodzących do procesu Python .

Bazy danych, systemy przesyłania komunikatów i usługi przetwarzania w chmurze

Instana tracers nie instrumentują baz danych, systemów przesyłania wiadomości, ani usług chmurowych. Jednak procesy, które wywołują te nieśledzone systemy, są instrumentowane, a więc żądania wychodzące są poprawnie odwzorowane na wywołania. Na przykład program Java tracer zapisuje żądania wychodzące z procesu Java do bazy danych MySQL , a te są analizowane w wywołaniach z procesem Java jako źródłem i bazą danych MySQL jako miejscem docelowym. Połączenia te są widoczne na Instanie, a ich miejsce docelowe jest zazwyczaj powiązane z jednostką infrastruktury, która odbiera telefon. Jak to jest możliwe?

Z jednej strony Instana monitoruje bazę danych lub system przesyłania wiadomości za pośrednictwem jednego z czujników Instana i w związku z tym wie o procesie, jego porcie i gospodarze. Z drugiej strony Instana analizuje wychodzące żądanie, które może zawierać wystarczającą ilość informacji, aby odgadnąć proces docelowy, zwykle nazwa hosta lub IP i port, który jest przenoszony, np. w łańcuchu połączenia.

Na przykład żądanie wychodzące do instancji MySQL może zawierać łańcuch połączenia jdbc:mysql://10.128.0.6:3306.

Łańcuch połączenia MySQL

Monitorowanie infrastruktury wykryło odpowiedni proces MySQL ujawniający port 3306 i runnning na hoście, który ujawnia IP 10.128.0.6.

Instancja MySQL

Ze względu na to, że zarówno adres IP, jak i port są zgodne, połączenia i instancja MySQL są ze sobą połączone:

Wywołanie połączone z instancją MySQL

Instana obsługuje również łańcuchy połączeń, które zawierają nazwę usługi Kubernetes , taką jak jdbc:mysql://mysql-svc. Za kulimi będzie próbował w pełni kwalifikować nazwę usługi, aby jednoznacznie zidentyfikować usługę we wszystkich przestrzeniach nazw i klastrach. Wynikiem jest wywołanie, którego miejsce docelowe jest dowiązane do usługi Kubernetes , a nie do procesu końcowego.

W przypadku usług przetwarzania w chmurze nie ma żadnych procesów, ale pomysł jest taki sam: znajdź wspólny identyfikator współużytkowany przez monitorowaną usługę przetwarzania w chmurze i wychodzące żądanie do tej usługi. Może to być na przykład identyfikator zasobu, taki jak ARN AWS .

Łączenie połączeń z infrastrukturą jest czasami niemożliwe, jeśli host lub adres IP podane w łańcuchu połączenia nie są zgodne z żadnym z hostów lub adresów IP, które są znane ze strony monitorowania infrastruktury. Zwykle jest to przypadek, gdy istnieje poziom indirection, w którym proces wywołujący zdalną bazę danych (lub usługę przesyłania komunikatów lub usługę przetwarzania w chmurze) korzysta z nazwy hosta, która jest następująca:

  • wpis w pliku systemowym /etc/hosts
  • wpis DNS CNAME
  • Wskaźnik do serwera proxy lub systemu równoważenia obciążenia
  • Alias podany w usłudze Service Discovery , na przykład konsul lub zookeeper

Usługi zewnętrzne

Usługi zewnętrzne są z definicji nie monitorowane przez Instana, a więc nie są nawet widoczne na stronie monitoringu infrastruktury. Ponieważ nic o nich nie wiemy, wezwania do tych usług nie są po prostu powiązane z żadnymi znanymi podmiotami infrastrukturalnymi.

Na karcie Infrastruktura można zidentyfikować te wywołania jako "Niemonitorowane":

Karta Infra

Korelacja infrastruktury w odwzorowaniu aplikacji i usługi

Jaka jest rola korelacji infrastruktury w odwzorowaniu aplikacja i usługa ?

Gdy zaplecze Instana analizuje ślady i połączenia, najpierw połączy je ze znanymi obiektami infrastruktury i wzbogaci je o znaczniki infrastruktury takie jak host.name, springboot.name lub docker.label. Znaczniki te są następnie używane do automatycznego odwzorowywania tych wywołań na usługi przy użyciu predefiniowanych reguł lub reguł zdefiniowanych przez użytkownika. Na przykład wywołanie połączone ze startowym procesem startowym zostanie odwzorowane na usługę, która pobiera jej nazwę z nazwy aplikacji springboot. Można również zdefiniować etykietę Docker service-name , która może być użyta do utworzenia niestandardowej reguły odwzorowania usługi , aby nazwać większość usług działających w systemie Docker.

Niestandardowe odwzorowanie usługi

To samo dotyczy odwzorowania aplikacji , w którym można używać tych znaczników infrastruktury do definiowania aplikacji, na przykład przy użyciu znacznika kubernetes.namespace :

Konfiguracja aplikacji

Gdy łączenie infrastruktury nie jest możliwe, odwzorowanie usługi nie może opierać się na znacznikach infrastruktury i opierać się na tak zwanych regułach typu fallback, które są definiowane przy użyciu znaczników wywołań, takich jak call.http.host lub call.database.schema.

Korelacja i incydenty infrastruktury

incydent grupuje pokrewne zdarzenia, korzystając z Wykres dynamiczny. Możliwość łączenia połączeń (a więc aplikacji i usług) do obiektów infrastruktury wzbogaca graf dynamiczny o dodatkowe połączenia mostkowania dwóch światów i w związku z tym skutkować będzie jeszcze pełniejszym incydentem i szybszą analizą przyczyn głównych.