Samouczek: wprowadzenie do monitorowania i rejestrowania przy użyciu Logz.io dla aplikacji Java działających na platformie Azure
W tym samouczku pokazano, jak skonfigurować klasyczną aplikację Java do wysyłania dzienników do usługi Logz.io w celu zbierania i analizy. Logz.io zapewnia pełne rozwiązanie do monitorowania oparte na usłudze Elasticsearch/Logstash/Kibana (ELK) i narzędziu Grafana.
W tym samouczku założono, że używasz usługi Log4J lub Logback. Te dwie biblioteki są najczęściej używane do logowania w języku Java, więc ten samouczek powinien działać dla większości aplikacji działających na Azure. Jeśli używasz już Elastic Stack do monitorowania aplikacji Java, ten samouczek pokazuje, jak ponownie skonfigurować ustawienia, aby kierować dane do punktu końcowego Logz.io.
Z tego samouczka dowiesz się, jak wykonywać następujące działania:
- Wysyłanie dzienników z istniejącej aplikacji Java do Logz.io.
- Wysyłanie dzienników diagnostycznych i metryk z usług platformy Azure do Logz.io.
Warunki wstępne
- zestaw Java Development Kit, wersja 11 lub nowsza
- Konto Logz.io z witryny Azure Marketplace
- Istniejąca aplikacja Java korzystająca z biblioteki Log4J lub Logback
Wysyłanie dzienników aplikacji Java do Logz.io
Najpierw dowiesz się, jak skonfigurować aplikację Java przy użyciu tokenu, który zapewnia dostęp do konta Logz.io.
Uzyskiwanie tokenu dostępu Logz.io
Aby uzyskać token, zaloguj się do swojego konta Logz.io, wybierz ikonę koła zębatego w lewym dolnym rogu, a następnie wybierz pozycję Ustawienia>Zarządzaj tokenami i wybierz kartę Tokeny wysyłki danych. Skopiuj wyświetlony domyślny token dostępu oraz adres URL odbiornika, aby móc ich użyć później.
Instalowanie i konfigurowanie biblioteki Logz.io dla Log4J lub Logback
Biblioteka języka Java Logz.io jest dostępna w usłudze Maven Central, dzięki czemu można dodać ją jako zależność do konfiguracji aplikacji. Sprawdź numer wersji w usłudze Maven Central i użyj najnowszej wersji w następujących ustawieniach konfiguracji.
Jeśli używasz narzędzia Maven, dodaj następującą zależność do pliku pom.xml:
Log4J:
<dependency>
<groupId>io.logz.log4j2</groupId>
<artifactId>logzio-log4j2-appender</artifactId>
<version>2.0.0</version>
</dependency>
Logback:
<dependency>
<groupId>io.logz.logback</groupId>
<artifactId>logzio-logback-appender</artifactId>
<version>2.0.0</version>
</dependency>
Jeśli używasz narzędzia Gradle, dodaj następującą zależność do skryptu kompilacji:
Log4J:
implementation 'io.logz.log4j:logzio-log4j-appender:2.0.0'
Logback:
implementation 'io.logz.logback:logzio-logback-appender:2.0.0'
Następnie zaktualizuj plik konfiguracji Log4J lub Logback:
Log4J:
<Appenders>
<LogzioAppender name="Logzio">
<logzioToken><your-logz-io-token></logzioToken>
<logzioType>java</logzioType>
<logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
</LogzioAppender>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Logzio"/>
</Root>
</Loggers>
Logback:
<configuration>
<!-- Use shutdownHook so that we can close gracefully and finish the log drain -->
<shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
<appender name="LogzioLogbackAppender" class="io.logz.logback.LogzioLogbackAppender">
<token><your-logz-io-token></token>
<logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
<logzioType>java</logzioType>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<root level="debug">
<appender-ref ref="LogzioLogbackAppender"/>
</root>
</configuration>
Zastąp symbol <your-logz-io-token>
swoim tokenem dostępu, a symbol <your-logz-io-listener-host>
adresem hosta odbiornika dla twojego regionu (na przykład listener.logz.io). Aby uzyskać więcej informacji na temat znajdowania regionu konta, zobacz Region konta.
Element logzioType
odnosi się do pola logicznego w usłudze Elasticsearch używanego do oddzielania różnych dokumentów od siebie. Ważne jest, aby poprawnie skonfigurować ten parametr, aby jak najlepiej wykorzystać Logz.io.
Logz.io "type" to format logów (na przykład: Apache, NGinx, MySQL), a nie źródło (na przykład: server1
, server2
, server3
). Na potrzeby tego samouczka wywołujemy typ java
, ponieważ konfigurujemy aplikacje Java i oczekujemy, że wszystkie te aplikacje będą miały ten sam format.
W przypadku użycia zaawansowanego można grupować aplikacje Java na różne typy, które mają własny konkretny format dziennika (konfigurowalny przy użyciu języków Log4J i Logback). Na przykład można mieć typ spring-boot-monolith
i typ spring-boot-microservice
.
Testowanie konfiguracji i analizy dzienników na Logz.io
Po skonfigurowaniu biblioteki Logz.io aplikacja powinna teraz wysyłać dzienniki bezpośrednio do niej. Aby sprawdzić, czy wszystko działa poprawnie, przejdź do konsoli Logz.io, wybierz kartę dzienników>na żywo, a następnie wybierz uruchom. Powinien zostać wyświetlony komunikat podobny do poniższego z informacją, że połączenie działa:
Requesting Live Tail access...
Access granted. Opening connection...
Connected. Tailing...
Następnie uruchom aplikację lub użyj jej w celu utworzenia niektórych dzienników. Dzienniki powinny być wyświetlane bezpośrednio na ekranie. Oto na przykład pierwsze komunikaty uruchamiania aplikacji Spring Boot:
2019-09-19 12:54:40.685Z Starting JavaApp on javaapp-default-9-5cfcb8797f-dfp46 with PID 1 (/workspace/BOOT-INF/classes started by cnb in /workspace)
2019-09-19 12:54:40.686Z The following profiles are active: prod
2019-09-19 12:54:42.052Z Bootstrapping Spring Data repositories in DEFAULT mode.
2019-09-19 12:54:42.169Z Finished Spring Data repository scanning in 103ms. Found 6 repository interfaces.
2019-09-19 12:54:43.426Z Bean 'spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties' of type [org.springframework.boot.autoconfigure.task.TaskExecutionProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
Teraz, gdy Logz.io przetwarza dzienniki, możesz korzystać ze wszystkich usług platformy.
Wysyłanie danych usług platformy Azure do Logz.io
Następnie dowiesz się, jak wysyłać dzienniki i metryki z zasobów platformy Azure do Logz.io.
Wdrażanie szablonu
Pierwszym krokiem jest wdrożenie szablonu integracji Logz.io — Azure. Integracja jest oparta na gotowym szablonie wdrożeniowym platformy Azure, który konfiguruje wszystkie niezbędne elementy składowe potoku. Szablon tworzy obszar nazw Event Hub, sam Event Hub, dwa obiekty blob magazynowania oraz wszystkie wymagane odpowiednie uprawnienia i połączenia. Zasoby skonfigurowane przez wdrożenie automatyczne mogą zbierać dane dla jednego regionu świadczenia usługi Azure i dostarczać te dane do Logz.io.
Znajdź przycisk Wdróż w usłudze Azure wyświetlany w pierwszym krokureadme repozytorium.
Po wybraniu Wdróż w usłudze Azure, na stronie niestandardowego wdrażania w portalu Azure pojawia się lista wstępnie wypełnionych pól.
Większość pól można pozostawić as-is, ale należy wprowadzić następujące ustawienia:
- grupa zasobów: wybierz istniejącą grupę lub utwórz nową.
-
Logzio Logs/Metrics Host: Wprowadź adres URL odbiornika Logz.io. Jeśli nie masz pewności, jaki jest ten adres URL, sprawdź adres URL logowania. Jeśli
app.logz.io
, użyjlistener.logz.io
(czyli ustawienia domyślnego). Jeśliapp-eu.logz.io
, użyjlistener-eu.logz.io
. - logzio Logs/Metrics Token: wprowadź token konta Logz.io, do którego chcesz wysłać dzienniki lub metryki platformy Azure. Ten token można znaleźć na stronie konta w interfejsie użytkownika Logz.io.
Zaakceptuj warunki w dolnej części strony i wybierz pozycję Kup. Następnie platforma Azure wdraża szablon, który może potrwać minutę lub dwie. W górnej części portalu zostanie wyświetlony komunikat "Wdrożenie powiodło się".
Aby przejrzeć wdrożone zasoby, odwiedź zdefiniowaną grupę zasobów.
Aby dowiedzieć się, jak skonfigurować logzio-azure-serverless
do tworzenia kopii zapasowych danych w usłudze Azure Blob Storage, zobacz Wysyłanie dzienników aktywności platformy Azure.
Strumieniowe przesyłanie dzienników i metryk Azure do Logz.io
Teraz, gdy wdrożyłeś szablon integracji, musisz skonfigurować platformę Azure do przesyłania strumieniowego danych diagnostycznych do usługi Event Hub, którą właśnie wdrożyłeś. Gdy dane pochodzą z centrum zdarzeń, aplikacja funkcji przekazuje te dane do Logz.io.
Na pasku wyszukiwania wpisz Diagnostic, a następnie wybierz pozycję Ustawienia diagnostyczne.
Wybierz zasób z listy zasobów, a następnie wybierz pozycję Dodaj ustawienie diagnostyczne, aby otworzyć panel ustawień diagnostyki dla tego zasobu.
panel ustawień diagnostyki
Nadaj ustawieniam diagnostycznym nazwę .
Wybierz Stream do centrum zdarzeń, a następnie wybierz Konfiguruj, aby otworzyć panel Wybierz centrum zdarzeń.
Wybierz centrum zdarzeń:
-
Wybierz przestrzeń nazw centrum zdarzeń: wybierz przestrzeń nazw rozpoczynającą się od Logzio (na przykład
LogzioNS6nvkqdcci10p
). - Wybierz nazwę centrum zdarzeń: w przypadku dzienników wybierz insights-operational-logs, a w przypadku metryk wybierz insights-operational-metrics.
- Wybierz nazwę zasad centrum zdarzeń: Wybierz LogzioSharedAccessKey.
-
Wybierz przestrzeń nazw centrum zdarzeń: wybierz przestrzeń nazw rozpoczynającą się od Logzio (na przykład
Wybierz pozycję OK, aby powrócić do panelu ustawień diagnostyki.
W sekcji Rejestr wybierz dane, które chcesz przesłać strumieniowo, a następnie wybierz Zapisz.
Wybrane dane są teraz przesyłane strumieniowo do centrum zdarzeń.
Wizualizowanie danych
Następnie daj danym trochę czasu, aby dotarły z twojego systemu do Logz.io, a potem otwórz narzędzie Kibana. Powinny zostać wyświetlone dane (z typem eventhub
) wypełniające pulpity nawigacyjne. Aby uzyskać więcej informacji na temat tworzenia pulpitów nawigacyjnych, zobacz Kibana — Tworzenie pulpitu nawigacyjnego.
W tym miejscu możesz wykonywać zapytania dotyczące określonych danych na karcie Odnajdywanie lub tworzyć obiekty Kibana w celu wizualizacji danych na karcie Visualize.
Czyszczenie zasobów
Po zakończeniu pracy z zasobami platformy Azure utworzonymi w tym samouczku możesz je usunąć przy użyciu następującego polecenia:
az group delete --name <resource group>
Następne kroki
W tym samouczku przedstawiono sposób konfigurowania aplikacji Java i usług platformy Azure w celu wysyłania dzienników i metryk do Logz.io.
Następnie dowiedz się więcej na temat monitorowania aplikacji przy użyciu centrum zdarzeń: