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ą:
- Od aplikacji i usług do monitoringu infrastruktury
- Od wywołań do monitorowania infrastruktury
- Od monitorowania infrastruktury do monitorowania aplikacji
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.
- Nawigacja z usług
- Nawigacja po wywołaniach
- Nawigacja z infrastruktury
- Jak to działa
- Korelacja infrastruktury w odwzorowaniu aplikacji i usług
- Korelacja i incydenty infrastruktury
Jak działa
Ważne jest, aby wiedzieć, że monitorowanie aplikacja i infrastruktura jest oparte na dwóch różnych potokach danych:
Monitorowanie aplikacji: dane (dane śledzenia i calls.md) pochodzą z znaczników Instana lub śledzących inne osoby.
Monitorowanie infrastruktury: dane (znaczniki i metrics.md) pochodzą z czujników Instana.
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.

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

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:

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":

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.

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 :

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.








