Udostępnij przez


Rejestrowanie za pomocą Elastic Stack

Wskazówka

Ta zawartość jest fragmentem e-książki, Architektura Cloud Native .NET Applications for Azure, dostępnej w .NET Docs lub jako bezpłatny plik PDF do pobrania, który można czytać offline.

Natywne aplikacje .NET dla chmury Azure - okładka miniatury eBooka.

Istnieje wiele dobrych narzędzi do rejestrowania scentralizowanego i różnią się kosztami od bezpłatnych narzędzi typu open source po droższe opcje. W wielu przypadkach bezpłatne narzędzia są tak dobre, jak i lepsze niż płatne oferty. Jednym z takich narzędzi jest połączenie trzech składników typu open source: Elasticsearch, Logstash i Kibana.

Zbiorczo te narzędzia są nazywane Elastic Stack lub ELK.

Elastyczny stos

"Elastic Stack" to skuteczna opcja zbierania informacji z klastra Kubernetes. Platforma Kubernetes obsługuje wysyłanie dzienników do punktu końcowego usługi Elasticsearch, a w większości wystarczy rozpocząć pracę, aby ustawić zmienne środowiskowe, jak pokazano na rysunku 7–5:

KUBE_LOGGING_DESTINATION=elasticsearch
KUBE_ENABLE_NODE_LOGGING=true

Rysunek 7–5. Zmienne konfiguracji dla platformy Kubernetes

Ten krok zainstaluje usługę Elasticsearch w klastrze i przekieruje do niej wszystkie dzienniki klastra.

Przykład pulpitu nawigacyjnego Kibana pokazującego wyniki zapytania względem dzienników pozyskanych z platformy Kubernetes Rysunek 7–6. Przykład pulpitu nawigacyjnego Kibana pokazującego wyniki zapytania dotyczącego logów pozyskanych z Kubernetes

Aby uzyskać więcej informacji na temat konfiguracji, zobacz Konfigurowanie rejestrowania (Kibana).

Jakie są zalety usługi Elastic Stack?

Usługa Elastic Stack zapewnia scentralizowane rejestrowanie w sposób ekonomiczny, skalowalny i przyjazny dla chmury. Jego interfejs użytkownika usprawnia analizę danych, dzięki czemu możesz poświęcić czas na wydobywanie wglądów z danych zamiast walki z nieporęcznym interfejsem. Obsługuje ona szeroką gamę danych wejściowych, dzięki czemu aplikacja rozproszona obejmuje coraz więcej i różne rodzaje usług, można oczekiwać, że nadal będzie można przekazywać dane dzienników i metryk do systemu. Usługa Elastic Stack obsługuje również szybkie wyszukiwanie nawet w dużych zestawach danych, dzięki czemu nawet duże aplikacje mogą rejestrować szczegółowe dane i nadal mieć wgląd w nie w wydajny sposób.

Usługa Logstash

Pierwszy składnik to Logstash. To narzędzie służy do zbierania informacji dziennika z wielu różnych źródeł. Na przykład usługa Logstash może odczytywać dzienniki z dysku, a także odbierać komunikaty z bibliotek rejestrowania, takich jak Serilog. Usługa Logstash może wykonać pewne podstawowe filtrowanie i rozszerzanie dzienników po ich nadejściu. Jeśli na przykład dzienniki zawierają adresy IP, można skonfigurować usługę Logstash do wyszukiwania geograficznego i uzyskać kraj/region, a nawet miasto pochodzenia dla tego komunikatu.

Serilog to biblioteka rejestrowania języków platformy .NET, która umożliwia rejestrowanie sparametryzowane. Zamiast generować tekstowy komunikat dziennika, który osadza pola, parametry są przechowywane oddzielnie. Ta biblioteka umożliwia bardziej inteligentne filtrowanie i wyszukiwanie. Przykładowa konfiguracja serwera Serilog do zapisywania w usłudze Logstash jest wyświetlana na rysunku 7–7.

var log = new LoggerConfiguration()
         .WriteTo.Http("http://localhost:8080")
         .CreateLogger();

Rysunek 7–7. Konfiguracja Serilog do bezpośredniego przesyłania informacji logów do logstash za pomocą protokołu HTTP

Usługa Logstash będzie używać konfiguracji takiej jak pokazana na rysunku 7–8.

input {
    http {
        #default host 0.0.0.0:8080
        codec => json
    }
}

output {
    elasticsearch {
        hosts => "elasticsearch:9200"
        index=>"sales-%{+xxxx.ww}"
    }
}

Rysunek 7–8. Konfiguracja usługi Logstash do korzystania z dzienników z programu Serilog

W scenariuszach, w których obszerne manipulowanie dziennikami nie jest potrzebne, istnieje alternatywa dla usługi Logstash znanej jako Beats. Beats to rodzina narzędzi, które mogą zbierać szeroką gamę danych z dzienników do danych sieciowych i informacji o czasie pracy. Wiele aplikacji będzie używać zarówno usługi Logstash, jak i Beats.

Po zebraniu dzienników przez Logstash, potrzebne jest miejsce, w którym można je umieścić. Usługa Logstash obsługuje wiele różnych danych wyjściowych, ale jednym z bardziej ekscytujących jest Elasticsearch.

Elasticsearch

Elasticsearch to zaawansowana wyszukiwarka, która może indeksować dzienniki po ich nadejściu. Dzięki temu uruchamianie zapytań w stosunku do dzienników jest szybkie. Elasticsearch może obsługiwać ogromne ilości dzienników, a w skrajnych przypadkach można go skalować na wiele węzłów.

Komunikaty dziennika, które zostały przygotowane do zawierania parametrów lub podzielone na parametry w procesie przetwarzania przez Logstash, można bezpośrednio wyszukiwać, ponieważ Elasticsearch zachowuje te informacje.

Zapytanie, które wyszukuje 10 pierwszych stron odwiedzonych przez jill@example.comprogram , pojawia się na rysunku 7–9.

"query": {
    "match": {
      "user": "jill@example.com"
    }
  },
  "aggregations": {
    "top_10_pages": {
      "terms": {
        "field": "page",
        "size": 10
      }
    }
  }

Rysunek 7–9. Zapytanie Elasticsearch dotyczące znajdowania pierwszych 10 stron odwiedzanych przez użytkownika

Wizualizowanie informacji za pomocą internetowych pulpitów nawigacyjnych Kibana

Ostatnim składnikiem stosu jest Kibana. To narzędzie służy do udostępniania interaktywnych wizualizacji na pulpicie nawigacyjnym internetowym. Pulpity nawigacyjne mogą być tworzone nawet przez użytkowników, którzy nie są techniczni. Większość danych znajdujących się w indeksie Elasticsearch może być uwzględniona na pulpitach nawigacyjnych Kibana. Użytkownicy indywidualni mogą mieć różne potrzeby pulpitu nawigacyjnego, a rozwiązanie Kibana umożliwia dostosowanie, zezwalając na pulpity nawigacyjne specyficzne dla użytkownika.

Instalowanie usługi Elastic Stack na platformie Azure

Elastyczny stos można zainstalować na platformie Azure na wiele sposobów. Jak zawsze, można skonfigurować maszyny wirtualne i bezpośrednio zainstalować na nich Elastic Stack. Ta opcja jest preferowana przez niektórych doświadczonych użytkowników, ponieważ oferuje najwyższy stopień dostosowywania. Wdrażanie w infrastrukturze jako usługi wprowadza znaczne nakłady związane z zarządzaniem, co zmusza tych, którzy przejdą na taką ścieżkę, aby przejąć własność wszystkich zadań związanych z infrastrukturą jako usługą, takich jak zabezpieczanie maszyn i utrzymywanie up-to- date z poprawkami.

Opcja z mniejszym obciążeniem polega na użyciu jednego z wielu kontenerów platformy Docker, na których skonfigurowano już usługę Elastic Stack. Te kontenery można wdrożyć do istniejącego klastra Kubernetes i działać równolegle z kodem aplikacji. Kontener sebp/elk jest dobrze udokumentowanym i przetestowanym kontenerem Elastic Stack.

Kolejną opcją jest niedawno ogłoszona usługa ELK w modelu usługowym.

Źródła