Tutoriel : Bien démarrer avec la supervision et la journalisation avec Logz.io pour les applications Java exécutées sur Azure

Ce tutoriel montre comment configurer une application Java classique pour envoyer les journaux au service Logz.io pour leur ingestion et leur analyse. Logz.io fournit une solution de supervision complète basée sur Elasticsearch/Logstash/Kibana (ELK) et Grafana.

Ce tutoriel suppose que vous utilisez Log4J ou Logback. Il s’agit des deux bibliothèques les plus couramment utilisées pour la journalisation en Java. Ce tutoriel devrait donc convenir pour la plupart des applications s’exécutant sur Azure. Si vous utilisez déjà la pile Elastic pour superviser votre application Java, ce tutoriel vous montre comment changer la configuration pour cibler le point de terminaison Logz.io.

Ce didacticiel vous montre comment effectuer les opérations suivantes :

  • Envoyer les journaux d’une application Java existante à Logz.io.
  • Envoyer des métriques et des journaux de diagnostic des services Azure à Logz.io.

Prérequis

  • Kit de développement Java, version 11 ou ultérieure
  • Compte Logz.io de la Place de marché Azure
  • Une application Java qui utilise Log4J ou Logback

Envoyer les journaux d’une application Java à Logz.io

Tout d’abord, vous apprendrez à configurer votre application Java avec un jeton qui lui permet d’accéder à votre compte Logz.io.

Obtenir un jeton d’accès à Logz.io

Pour obtenir votre jeton, connectez-vous à votre compte Logz.io, sélectionnez l’icône de roue dentée dans le coin inférieur gauche, puis sélectionnez Paramètres > Gérer les jetons et sélectionnez l’onglet Jetons d’expédition de données. Copiez le jeton d’accès par défaut affiché, ainsi que l’URL de l’écouteur pour pouvoir les utiliser ultérieurement.

Installer et configurer la bibliothèque Logz.io pour Log4J ou Logback

La bibliothèque Java Logz.io est disponible sur Maven Central pour que vous puissiez l’ajouter comme dépendance à la configuration de votre application. Vérifiez le numéro de version sur Maven Central et utilisez la version la plus récente dans les paramètres de configuration suivants.

Si vous utilisez Maven, ajoutez la dépendance suivante à votre fichier 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>

Si vous utilisez Gradle, ajoutez la dépendance suivante à votre script de génération :

Log4J :

implementation 'io.logz.log4j:logzio-log4j-appender:2.0.0'

Logback :

implementation 'io.logz.logback:logzio-logback-appender:2.0.0'

Ensuite, mettez à jour votre fichier de configuration Log4J ou 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>

Remplacez l’espace réservé <your-logz-io-token> par votre jeton d’accès et l’espace réservé <your-logz-io-listener-host> par l’hôte de l’écouteur de votre région (par exemple, listener.logz.io). Pour plus d’informations sur la recherche de la région de votre compte, consultez Account region.

L’élément logzioType fait référence à un champ logique dans Elasticsearch qui permet de séparer différents documents les uns des autres. Il est essentiel de configurer correctement ce paramètre pour exploiter au mieux Logz.io.

Un « type » Logz.io correspond à votre format de journal (par exemple : Apache, NGinx, MySQL) et non pas à votre source (par exemple : server1, server2, server3). Pour ce tutoriel, nous appelons le type java parce que nous configurons des applications Java et nous pensons que ces applications auront toutes le même format.

Pour une utilisation avancée, vous pouvez regrouper vos applications Java en différents types, tous dotés de leur propre format de journal spécifique (configurable avec Log4J et Logback). Par exemple, vous pouvez avoir un type « spring-boot-monolith » et un type « spring-boot-microservice ».

Tester la configuration et l’analyse des journaux sur Logz.io

Une fois la bibliothèque Logz.io configurée, votre application doit lui envoyer directement les journaux. Pour tester que tout fonctionne correctement, accédez à la console Logz.io, sélectionnez l’onglet Journaux > de fin dynamique, puis sélectionnez Exécuter. Vous devez voir un message similaire à ce qui suit, indiquant que la connexion fonctionne :

Requesting Live Tail access...
Access granted. Opening connection...
Connected. Tailing...

Ensuite, démarrez votre application ou utilisez-la pour générer des journaux. Les journaux doivent apparaître directement sur votre écran. Par exemple, voici les premiers messages de démarrage d’une application 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)

Maintenant que vos journaux sont traités par Logz.io, vous pouvez tirer parti de tous les services de la plateforme.

Envoyer les données des services Azure à Logz.io

Maintenant, vous allez découvrir comment envoyer des journaux et des métriques de vos ressources Azure à Logz.io.

Déployer le modèle

La première étape consiste à déployer le modèle d’intégration Logz.io - Azure. L’intégration est basée sur un modèle de déploiement Azure prêt à l’emploi qui configure tous les blocs de construction nécessaires du pipeline. Le modèle crée un espace de noms Event Hub, un hub d’événements, deux objets blob de stockage, ainsi que toutes les autorisations et connexions appropriées requises. Les ressources configurées par le déploiement automatisé peuvent collecter des données pour une région Azure unique et envoyer ces données à Logz.io.

Recherchez le bouton Déployer sur Azure affiché dans la première étape du fichier Lisez-moi du dépôt.

Lorsque vous sélectionnez Déployer sur Azure, la page Déploiement personnalisé du Portail Azure apparaît avec une liste de champs préremplis.

Vous pouvez laisser la plupart des champs tels quels, mais veillez à entrer les paramètres suivants :

  • Groupe de ressources : sélectionnez un groupe de ressources existant ou créez-en un.
  • Hôte de métriques/journaux Logzio : entrez l’URL de l’écouteur Logz.io. Si vous n’êtes pas sûr de l’URL, vérifiez votre URL de connexion. S’il s’agit d’app.logz.io, utilisez listener.logz.io (paramètre par défaut). S’il s’agit d’app-eu.logz.io, utilisez listener-eu.logz.io.
  • Jeton de journaux/métriques Logzio : entrez le jeton du compte Logz.io auquel vous souhaitez envoyer des journaux ou des métriques Azure. Vous pouvez trouver ce jeton dans la page account de l’interface utilisateur Logz.io.

Acceptez les termes en bas de la page et sélectionnez Acheter. Azure déploie ensuite le modèle, ce qui peut prendre une ou deux minutes. Vous verrez éventuellement le message « Déploiement réussi » en haut du portail.

Vous pouvez visiter le groupe de ressources défini pour passer en revue les ressources déployées.

Pour savoir comment configurer logzio-azure-serverless afin de sauvegarder les données dans le stockage Blob Azure, consultez le document sur l’envoi des journaux d’activité Azure.

Diffuser en continu des journaux et des métriques Azure vers Logz.io

Maintenant que vous avez déployé le modèle d’intégration, vous devez configurer Azure pour effectuer le streaming des données de diagnostic vers le hub d’événements que vous venez de déployer. Lorsque les données arrivent dans le hub d’événements, l’application de fonction les transfère vers Logz.io.

  1. Dans la barre de recherche, tapez « Diagnostic », puis sélectionnez Paramètres de diagnostic.

  2. Choisissez une ressource dans la liste des ressources, puis sélectionnez Ajouter un paramètre de diagnostic pour ouvrir le volet Paramètres de diagnostic pour cette ressource.

    Diagnostics settings panel

  3. Donnez un nom à vos paramètres de diagnostic.

  4. Sélectionnez Diffuser vers Event Hub, puis sélectionnez Configurer pour ouvrir le volet Sélectionner un hub d’événements.

  5. Choisissez votre hub d’événements :

    • Sélectionner l’espace de noms de Event Hub : choisissez l’espace de noms qui commence par Logzio (par exemple, LogzioNS6nvkqdcci10p).
    • Sélectionner un nom de hub d’événements : choisissez insights-operational-logs pour les journaux et insights-operational-metrics pour les métriques.
    • Sélectionner un nom de stratégie de hub d’événements : choisissez LogzioSharedAccessKey.
  6. Sélectionnez OK pour revenir au volet Paramètres de diagnostic.

  7. Dans la section Journal, sélectionnez les données que vous souhaitez diffuser, puis sélectionnez Enregistrer.

Les données sélectionnées seront désormais diffusées dans le hub d’événements.

Visualiser vos données

Ensuite, donnez à vos données le temps de passer de votre système à Logz.io, puis ouvrez Kibana. Vous devez voir les données (avec le type eventhub) remplir vos tableaux de bord. Pour plus d’informations sur la création de tableaux de bord, consultez Kibana - Créer un tableau de bord.

À partir de là, vous pouvez effectuer une requête pour obtenir des données spécifiques dans l’onglet Découvrir ou créer des objets Kibana pour visualiser vos données dans l’onglet Visualiser.

Nettoyer les ressources

Lorsque les ressources Azure que vous avez créées dans ce didacticiel ne vous sont plus d'aucune utilité, vous pouvez les supprimer à l'aide de la commande suivante :

az group delete --name <resource group>

Étapes suivantes

Dans ce tutoriel, vous avez appris à configurer votre application Java et vos services Azure pour envoyer des journaux et des métriques à Logz.io.

Ensuite, découvrez plus en détail l’utilisation d’Event Hub pour superviser votre application :