Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Journalisation
La journalisation est le processus qui consiste à conserver des données sur les événements qui se produisent dans un système. Le journal peut inclure des problèmes, des erreurs ou des informations sur l'opération en cours. Les journaux peuvent être classés en différents types, tels que les suivants :
-
Journal des événements
-
Journal du serveur
-
Journal du système
-
Journaux d'autorisation et d'accès
-
Journaux d'audit
Un développeur peut rechercher dans les journaux des codes ou modèles d'erreur spécifiques, les filtrer en fonction de champs spécifiques ou les archiver de manière sécurisée pour une analyse future. Les journaux aident le développeur à analyser les causes profondes des problèmes de performance et à établir une corrélation entre les composants du système.
La création d'une solution de journalisation efficace implique une étroite coordination entre les équipes chargées de l'application et de l'infrastructure. Les journaux d'applications ne sont utiles que s'il existe une infrastructure de journalisation évolutive prenant en charge des cas d'utilisation tels que l'analyse, le filtrage, la mise en mémoire tampon et la corrélation des journaux. Les cas d'utilisation courants, tels que la génération d'un ID de corrélation, la journalisation du temps d'exécution pour les méthodes critiques et la définition de modèles de journalisation, peuvent être simplifiés.
L'équipe de candidature
Le développeur d'applications doit s'assurer que les journaux générés respectent les meilleures pratiques en matière de journalisation. Les meilleures pratiques sont les suivantes :
-
Génération d'identifiants de corrélation pour suivre les demandes uniques
-
Enregistrement du temps nécessaire aux méthodes critiques pour l'entreprise
-
Journalisation à un niveau de journalisation approprié
-
Partage d'une bibliothèque de journalisation commune
Lorsque vous concevez des applications qui interagissent avec différents microservices, utilisez ces principes de conception de journalisation pour simplifier le filtrage et l'extraction des journaux sur le backend.
Génération d'identifiants de corrélation pour suivre les demandes uniques
Lorsque l'application reçoit la demande, elle peut vérifier si un identifiant de corrélation est déjà présent dans l'en-tête. Si aucun identifiant n'est présent, l'application doit en générer un. Par exemple, un Application Load Balancer ajoute un en-tête appelé. X-Amzn-Trace-Id
L'application peut utiliser l'en-tête pour corréler la demande provenant de l'équilibreur de charge avec l'application. De même, l'application doit effectuer une injection traceId
si elle appelle des microservices dépendants afin que les journaux générés par les différents composants d'un flux de demandes soient corrélés.
Enregistrement du temps nécessaire aux méthodes critiques pour l'entreprise
Lorsque l'application reçoit une demande, elle interagit avec un autre composant. L'application doit enregistrer le temps nécessaire aux méthodes critiques pour l'entreprise selon un schéma défini. Cela peut faciliter l'analyse des journaux dans le backend. Cela peut également vous aider à générer des informations utiles à partir des journaux. Vous pouvez utiliser des approches telles que la programmation orientée aspect (AOP) pour générer de tels journaux afin de séparer les préoccupations liées à la journalisation de votre logique métier.
Journalisation à un niveau de journalisation approprié
L'application doit écrire des journaux contenant une quantité d'informations utiles. Utilisez les niveaux de journalisation pour classer les événements en fonction de leur gravité. Par exemple, utilisation WARNING
et ERROR
niveaux pour les événements importants nécessitant une enquête. Utilisez INFO
et DEBUG
pour le suivi détaillé et les événements à volume élevé. Configurez les gestionnaires de journaux pour qu'ils capturent uniquement les niveaux nécessaires à la production. Générer trop de journalisation au INFO
niveau n'est pas utile et cela ajoute de la pression sur l'infrastructure principale. DEBUG
la journalisation peut être utile, mais elle doit être utilisée avec prudence. L'utilisation de DEBUG
journaux peut générer un volume important de données, elle n'est donc pas recommandée dans un environnement de test de performances.
Partage d'une bibliothèque de journalisation commune
Les équipes d'application doivent utiliser une bibliothèque de journalisation commune, par exemple avec un modèle de journalisation commun prédéfini que les développeurs peuvent utiliser comme dépendances dans leur projet. AWS SDK pour Java
Équipe chargée de l'infrastructure
DevOps les ingénieurs peuvent réduire leurs efforts en utilisant les principes de conception de journalisation suivants lors du filtrage et de l'extraction des journaux sur le backend. L'équipe chargée de l'infrastructure doit configurer et prendre en charge les ressources suivantes.
Agent de journalisation
Un agent de journalisation (expéditeur de journaux) est un programme qui lit les journaux depuis un emplacement et les envoie vers un autre emplacement. Les agents de journalisation sont utilisés pour lire les fichiers journaux stockés sur un ordinateur et télécharger les événements du journal vers le backend à des fins de centralisation.
Les journaux sont des données non structurées qui doivent être structurées pour que vous puissiez en tirer des informations pertinentes. Les agents de journalisation utilisent des analyseurs pour lire les instructions du journal et extraire les champs pertinents tels que l'horodatage, le niveau du journal et le nom du service, et ils structurent ces données au format JSON. Il est utile de disposer d'un agent de journalisation léger à la périphérie, car cela réduit l'utilisation des ressources. L'agent de journalisation peut envoyer les données directement au serveur principal ou utiliser un redirecteur de journal intermédiaire qui envoie les données vers le serveur principal. L'utilisation d'un redirecteur de journal décharge le travail des agents de journal à la source.
Analyseur de journaux
Un analyseur de journaux convertit les journaux non structurés en journaux structurés. Les analyseurs des agents de journalisation enrichissent également les journaux en ajoutant des métadonnées. L'analyse des données peut être effectuée à la source (côté application) ou centralisée. Le schéma de stockage des journaux doit être extensible afin que vous puissiez ajouter de nouveaux champs. Nous vous recommandons d'utiliser des formats de journal standard tels que JSON. Cependant, dans certains cas, les journaux doivent être transformés au format JSON pour une meilleure recherche. L'écriture de la bonne expression d'analyseur permet une transformation efficace.
Backend de journaux
Un service de gestion des journaux collecte, ingère et visualise les données des journaux provenant de diverses sources. L'agent de journalisation peut écrire directement dans le backend ou utiliser un redirecteur de journal intermédiaire. Lors des tests de performance, veillez à stocker les journaux afin qu'ils puissent être consultés ultérieurement. Stockez les journaux séparément dans le backend pour chaque application. Par exemple, utilisez un index dédié pour une application et utilisez un modèle d'index pour rechercher des journaux répartis entre différentes applications connexes. Nous vous recommandons de sauvegarder au moins 7 jours de données pour la recherche dans les journaux. Cependant, le stockage des données pendant une plus longue durée peut entraîner des coûts de stockage inutiles. Étant donné qu'un grand volume de journaux est généré pendant le test de performance, il est important que l'infrastructure de journalisation adapte et dimensionne correctement le backend de journalisation.
Visualisation du journal
Pour obtenir des informations pertinentes et exploitables à partir des journaux d'applications, utilisez des outils de visualisation dédiés pour traiter et transformer les données brutes des journaux en représentations graphiques. Les visualisations telles que les tableaux, les graphiques et les tableaux de bord peuvent aider à découvrir les tendances, les modèles et les anomalies qui peuvent ne pas être facilement apparents lorsque l'on examine les journaux bruts.
Les principaux avantages de l'utilisation des outils de visualisation incluent la possibilité de corréler les données entre plusieurs systèmes et applications afin d'identifier les dépendances et les goulots d'étranglement. Les tableaux de bord interactifs permettent d'explorer les données à différents niveaux de granularité pour résoudre les problèmes ou identifier les tendances d'utilisation. Les plateformes de visualisation de données spécialisées fournissent des fonctionnalités telles que l'analyse, les alertes et le partage de données qui peuvent améliorer la surveillance et l'analyse.
En utilisant la puissance de la visualisation des données sur les journaux des applications, les équipes de développement et d'exploitation peuvent gagner en visibilité sur les performances du système et des applications. Les informations obtenues peuvent être utilisées à diverses fins, notamment pour optimiser l'efficacité, améliorer l'expérience utilisateur, renforcer la sécurité et planifier les capacités. Le résultat final est des tableaux de bord adaptés aux différentes parties prenantes, fournissant des at-a-glance vues qui résument les données des journaux en informations exploitables et pertinentes.
Automatisation de l'infrastructure de journalisation
Chaque application ayant des exigences différentes, il est important d'automatiser l'installation et le fonctionnement de l'infrastructure de journalisation. Utilisez des outils d'infrastructure en tant que code (IaC) pour approvisionner le backend de l'infrastructure de journalisation. Vous pouvez ensuite fournir l'infrastructure de journalisation sous la forme d'un service partagé ou d'un déploiement indépendant sur mesure pour une application particulière.
Nous recommandons aux développeurs d'utiliser des pipelines de livraison continue (CD) pour automatiser les opérations suivantes :
-
Déployez l'infrastructure de journalisation à la demande et démolissez-la lorsqu'elle n'est pas nécessaire.
-
Déployez des agents de journalisation sur différentes cibles.
-
Déployez les configurations de l'analyseur de journaux et du redirecteur.
-
Déployez des tableaux de bord d'applications.
Outils de journalisation
AWS fournit des services natifs de journalisation, d'alarme et de tableau de bord. Les ressources suivantes sont populaires Services AWS et concernent la journalisation :
-
Amazon OpenSearch Service aide les entreprises à collecter, à ingérer et à visualiser les données de journal provenant de diverses sources. Pour plus d'informations, consultez la section Journalisation centralisée avec OpenSearch
. -
Amazon CloudWatch agent et AWS for Fluent Bit
sont les agents de journalisation les plus populaires sur AWS. Pour plus d'informations sur l'utilisation de l' CloudWatch agent avec Amazon CloudWatch Logs Insights, consultez le billet de blog Simplifying Apache server logs with Amazon CloudWatch Logs Insights . AWS Pour l'implémentation de référence de Fluent Bit, consultez le billet de blog Centralized Container Logging with Fluent Bit .