Samouczek: wprowadzenie do monitorowania i rejestrowania przy użyciu Logz.io dla aplikacji Java działających na platformie Azure

W tym samouczku przedstawiono sposób konfigurowania klasycznej aplikacji Java do wysyłania dzienników do usługi Logz.io na potrzeby pozyskiwania i analizy. Logz.io zapewnia pełne rozwiązanie do monitorowania oparte na zestawie Elasticsearch/Logstash/Kibana (ELK) i platformie Grafana.

W samouczku przyjęto założenie, że używasz narzędzia Log4J lub Logback. Te biblioteki są najczęściej używane do rejestrowania w języku Java, dlatego samouczek powinien działać w przypadku większości aplikacji uruchomionych na platformie Azure. Jeśli używasz już zestawu Elastic do monitorowania swojej aplikacji Java, dowiesz się tu, jak zmienić punkt końcowy na usługę Logz.io.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Wysyłanie dzienników z istniejącej aplikacji Java do usługi Logz.io.
  • Wysyłanie dzienników diagnostycznych i metryk z usług platformy Azure do usługi Logz.io.

Wymagania wstępne

Wysyłanie dzienników aplikacji Java do usługi Logz.io

Najpierw dowiesz się, jak skonfigurować aplikację Java przy użyciu tokenu zapewniającego dostęp do konta Logz.io.

Pobieranie tokenu dostępu Logz.io

Aby uzyskać token, zaloguj się do 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, a także adres URL odbiornika, aby móc ich używać później.

Instalowanie i konfigurowanie biblioteki Logz.io pod kątem narzędzi Log4J lub Logback

Biblioteka Java Logz.io jest dostępna w repozytorium Maven Central, więc można ją dodać jako zależność do konfiguracji aplikacji. Sprawdź numer wersji w witrynie Maven Central i użyj najnowszej wersji w poniższych ustawieniach konfiguracyjnych.

Jeśli używasz 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 zastępczy <your-logz-io-token> tokenem dostępu, a symbol zastępczy <your-logz-io-listener-host> hostem odbiorcy 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 aparatu Elasticsearch używanego do rozdzielania dokumentów. Aby w jak największym stopniu skorzystać z usługi Logz.io, należy poprawnie skonfigurować ten parametr.

Logz.io "Type" to format dziennika (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 mają ten sam format.

Aby uzyskać zaawansowane informacje o użyciu, można zgrupować aplikacje Java w różne typy, które mają własny format dziennika (konfigurowalny z Log4J i Logback). Można na przykład utworzyć typy „spring-boot-monolith” i „spring-boot-microservice”.

Testowanie konfiguracji i analizy dzienników w usłudze Logz.io

Po skonfigurowaniu biblioteki Logz.io aplikacja powinna wysyłać dzienniki bezpośrednio do niej. Aby sprawdzić, czy wszystko działa poprawnie, przejdź do konsoli Logz.io, wybierz kartę Dzienniki > na żywo , a następnie wybierz pozycję 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 dzienników. Dzienniki powinny być widoczne bezpośrednio na ekranie. Na przykład poniżej przedstawiono 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 dzienniki są przetwarzane przez Logz.io, 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 usługi Logz.io.

Wdrażanie szablonu

Pierwszym krokiem jest wdrożenie szablonu integracji Logz.io z Azure. Integracja jest oparta na gotowym szablonie wdrożenia platformy Azure, który konfiguruje wszystkie niezbędne bloki konstrukcyjne potoku. Szablon tworzy przestrzeń nazw centrum zdarzeń, centrum zdarzeń, dwa obiekty blob magazynu oraz wszystkie wymagane uprawnienia i połączenia. Zasoby skonfigurowane przez automatyczne wdrożenie mogą zbierać dane dla jednego regionu świadczenia usługi Azure i dostarczać je do usługi Logz.io.

Znajdź przycisk Wdróż na platformie Azure wyświetlany w pierwszym kroku pliku readme repozytorium.

Po wybraniu opcji Wdróż w usłudze Azurezostanie wyświetlona strona Wdrożenie niestandardowe w witrynie Azure Portal z listą wstępnie wypełnionych pól.

Większość pól możesz pozostawić bez zmian, ale pamiętaj o wprowadzeniu następujących ustawień:

  • Grupa zasobów: wybierz istniejącą grupę lub utwórz nową.
  • Host dzienników/metryk usługi Logzio: wprowadź adres URL odbiornika Logz.io. Jeśli nie masz pewności co do adresu URL, sprawdź adres URL logowania. Jeśli jest to app.logz.io, użyj adresu listener.logz.io (czyli ustawienia domyślnego). Jeśli jest to app-eu.logz.io, użyj adresu listener-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, a następnie wybierz pozycję Purchase (Kup). Na platformie Azure zostanie wdrożony szablon, co może potrwać minutę lub dwie. W górnej części portalu zobaczysz komunikat „Wdrożenie powiodło się”.

Można odwiedzić zdefiniowaną grupę zasobów, aby przejrzeć wdrożone zasoby.

Aby dowiedzieć się, jak skonfigurować funkcję logzio-azure-serverless do tworzenia kopii zapasowej danych na platformie Azure Blob Storage, zobacz Ship Azure activity logs (Dostarczanie dzienników aktywności platformy Azure).

Przesyłanie strumieniowe dzienników i metryk platformy Azure do Logz.io

Po wdrożeniu szablonu integracji musisz skonfigurować platformę Azure do przesyłania strumieniowego danych diagnostycznych do centrum zdarzeń, które właśnie wdrożono. Gdy dane są dostarczane do centrum zdarzeń, aplikacja funkcji przekazuje je do Logz.io.

  1. Na pasku wyszukiwania wpisz „Diagnostyczne”, a następnie wybierz pozycję Ustawienia diagnostyczne.

  2. Wybierz zasób z listy zasobów, a następnie wybierz pozycję Dodaj ustawienia diagnostyczne, aby otworzyć panel Ustawienia diagnostyki dla tego zasobu.

    Diagnostics settings panel

  3. Określ nazwę ustawień diagnostycznych.

  4. Wybierz pozycję Przesyłaj strumieniowo do centrum zdarzeń, a następnie wybierz pozycję Skonfiguruj, aby otworzyć panel Wybierz centrum zdarzeń.

  5. Wybierz centrum zdarzeń:

    • Wybierz przestrzeń nazw centrum zdarzeń: wybierz przestrzeń nazw rozpoczynającą się od logzio (LogzioNS6nvkqdcci10pna przykład).
    • Wybierz nazwę centrum zdarzeń: w przypadku dzienników wybierz pozycję insights-operational-logs i dla metryk wybierz pozycję insights-operational-metrics.
    • Wybierz nazwę zasad centrum zdarzeń: wybierz pozycję LogzioSharedAccessKey.
  6. Naciśnij przycisk OK, aby wrócić do panelu Ustawienia diagnostyczne.

  7. W sekcji Dziennik wybierz dane, które chcesz przesyłać strumieniowo, a następnie wybierz pozycję Zapisz.

Wybrane dane zostaną teraz przesłane strumieniowo do centrum zdarzeń.

Wizualizacja danych

Poczekaj chwilę na przesłanie danych z systemu do usługi Logz.io, a następnie otwórz pulpit Kibana. Na pulpitach nawigacyjnych powinny zostać wyświetlone dane (z typem eventhub). Aby uzyskać więcej informacji na temat tworzenia pulpitów nawigacyjnych, zobacz Kibana — Tworzenie pulpitu nawigacyjnego.

W tym miejscu można wykonywać zapytania dotyczące określonych danych na karcie Odnajdywanie lub tworzyć obiekty Kibana w celu wizualizacji danych na karcie Wizualizacja.

Czyszczenie zasobów

Po zakończeniu pracy z zasobami platformy Azure, które zostały utworzone w tym samouczku, można je usunąć za pomocą 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 usługi Logz.io.

Teraz dowiedz się więcej o używaniu centrum zdarzeń do monitorowania aplikacji: