Partager via


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.

Dans ce didacticiel, vous apprendrez à :

  • 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

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 l'engrenage dans le coin inférieur gauche, puis sélectionnez Paramètres>Gérer les jetons, puis sélectionnez l’onglet Jetons d’expédition de données. Copiez le jeton d’accès par défaut affiché et 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 façon de trouver la région de votre compte, consultez région du compte.

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 Logz.io « type » est votre format de journal , par exemple : Apache, NGinx, MySQL , et non 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 maintenant envoyer des logs directement à celle-ci. Pour vérifier que tout fonctionne correctement, accédez à la console Logz.io, sélectionnez l’onglet Journaux d'activité>Live tail, puis 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 logs doivent s'afficher 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 Logz.io traite vos journaux, vous pouvez tirer parti de tous les services de la plateforme.

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

Vous allez maintenant découvrir comment envoyer des journaux d'activité et des métriques depuis vos ressources Azure vers 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 : saisissez l’URL de l’écouteur Logz.io. Si vous n’êtes pas sûr de l’URL, vérifiez votre URL de connexion. Si c'est app.logz.io, utilisez listener.logz.io (qui est le paramètre par défaut). Si c’est app-eu.logz.io, utilisez listener-eu.logz.io.
  • Jeton de journaux d'activité/métriques Logzio : entrez le jeton du compte Logz.io auquel vous souhaitez envoyer des journaux d'activité 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 Stockage Blob Azure, consultez Expédier des journaux d’activité Azure.

Acheminer les logs et les 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 panneau Paramètres de diagnostic pour cette ressource.

    panneau paramètres de diagnostic

  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 sont désormais transmises au 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 devriez voir les données (avec le type eventhub) s'afficher sur vos tableaux de bord. Pour plus d’informations sur la façon de créer des tableaux de bord, consultez le document sur la Kibana : création d'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

Une fois que vous avez terminé avec les ressources Azure créées dans ce tutoriel, 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 :