Comment gérer le journal massif des microservices, cet outil est si facile à utiliser!

Cet article présente principalement comment utiliser ELK Stack pour nous aider à créer un système de surveillance des journaux prenant en charge le niveau TB de Nissan. Beaucoup de connaissances détaillées, un article ne suffit pas, cet article présente principalement les points de connaissances de base.

Dans un environnement de microservice au niveau de l'entreprise, l'exécution de centaines de services est considérée comme une échelle relativement petite. Dans l'environnement de production, les journaux jouent un rôle très important. Les journaux sont nécessaires pour dépanner les exceptions, les journaux sont nécessaires pour l'optimisation des performances et les services sont nécessaires pour le dépannage de l'entreprise. Cependant, il existe des centaines de services en cours de production, et chaque service est simplement localisé et stocké. Lorsque les journaux sont nécessaires pour résoudre les problèmes, il est difficile de trouver le nœud où se trouvent les journaux. Il est également difficile d'exploiter la valeur des données des journaux d'activité. Ensuite, la sortie unifiée des journaux en un seul endroit pour une gestion centralisée, puis le traitement des journaux, et la sortie des résultats en données disponibles pour l'exploitation et la maintenance, la recherche et le développement est une solution réalisable pour la gestion des journaux et l'assistance à l'exploitation et à la maintenance, et il est également un besoin urgent pour les entreprises de résoudre le journal.

Notre solution

Comment utiliser ELK pour créer un système de surveillance des journaux de masse de microservice au niveau TB?

 

Sur la base des exigences ci-dessus, nous avons lancé un système de surveillance des journaux, comme indiqué dans la figure ci-dessus:

  • Les grumes sont collectées, filtrées et nettoyées uniformément.
  • Générer une interface visuelle, une surveillance, une alarme, une recherche de journal.

Comment utiliser ELK pour créer un système de surveillance des journaux de masse de microservice au niveau TB?

 

Un aperçu du processus fonctionnel est présenté ci-dessus:

  • Enterrez des points sur chaque nœud de service et collectez les journaux pertinents en temps réel.
  • Après le service de collecte de journaux unifié, le filtrage et le nettoyage des journaux, une interface visuelle et une fonction d'alarme sont générées.

Notre architecture

Comment utiliser ELK pour créer un système de surveillance des journaux de masse de microservice au niveau TB?

 

①Nous utilisons FileBeat pour le terminal de collecte des fichiers journaux. Le fonctionnement et la maintenance sont configurés via notre interface de gestion back-end. Chaque machine correspond à un FileBeat. Le sujet correspondant à chaque journal FileBeat peut être un-à-un ou plusieurs-à-un, selon la configuration du volume de journal quotidien Différentes stratégies.

En plus de collecter les journaux des services métier, nous avons également collecté les journaux de requêtes lentes MySQL et les journaux d'erreurs, ainsi que d'autres journaux de services tiers, tels que Nginx.

Enfin, combiné à notre plateforme de publication automatisée, publiez et démarrez automatiquement chaque processus FileBeat.

②La méthode proxy que nous utilisons pour les indicateurs de suivi de la pile d'appels, des liens et des processus: Elastic APM, de sorte qu'il n'est pas nécessaire de changer le programme du côté de l'entreprise.

Pour un système d'entreprise déjà en fonctionnement, il est indésirable et inacceptable de modifier le code pour rejoindre la surveillance.

Elastic APM peut nous aider à collecter les liens d'appel d'interface HTTP, les piles d'appels de méthode internes, le SQL utilisé, le processeur de processus, les indicateurs d'utilisation de la mémoire, etc.

Certaines personnes peuvent avoir des questions. Avec Elastic APM, d'autres journaux peuvent être collectés. Pourquoi utiliser FileBeat?

Oui, les informations collectées par Elastic APM peuvent en effet nous aider à localiser plus de 80% des problèmes, mais elles ne sont pas prises en charge par tous les langages tels que C.

Deuxièmement, il ne peut pas vous aider à collecter les journaux sans erreur et les journaux dits critiques que vous souhaitez, tels que: une erreur s'est produite lors de l'appel d'une interface et vous souhaitez voir les journaux avant et après l'heure d'erreur; il existe également des activités d'impression liées à faciliter l'analyse. Journal.

Troisièmement, les exceptions métier personnalisées, qui sont des exceptions non système et appartiennent à la catégorie métier. APM signalera ces exceptions comme des exceptions système.

Si vous avertissez ultérieurement des anomalies du système, ces anomalies vont interférer avec la précision de l'alarme et vous ne pouvez pas filtrer les exceptions commerciales car il existe de nombreux types d'exceptions commerciales personnalisées.

«En même temps, nous avons ouvert l'agent deux fois. Collectez des informations plus détaillées sur le GC, la pile, la mémoire et les threads.

④Nous utilisons Prometheus pour la collecte de serveurs.

«Étant donné que nous sommes orientés services Saas, il existe de nombreux services et de nombreux journaux de service ne peuvent pas être unifiés et standardisés. Ceci est également lié à des problèmes historiques. Un système qui n'a rien à voir avec les systèmes d'entreprise se connecte indirectement ou directement aux systèmes d'entreprise existants. Si vous le laissez changer le code pour s'adapter à vous-même, il ne peut pas être poussé.

Le design génial est de vous permettre d'être compatible avec les autres et de traiter l'autre partie comme un objet d'attaque. De nombreux journaux n'ont pas de sens. Par exemple, dans le processus de développement, afin de faciliter le dépannage et le suivi des problèmes, l'impression dans if else n'est qu'un journal de signature, qui indique si le bloc de code if ou le bloc de code else a disparu.

Certains services impriment même des journaux de niveau de débogage. Dans des conditions de coût et de ressources limitées, tous les journaux sont irréalistes, même si les ressources le permettent, ce sera une grosse dépense dans un an.

Par conséquent, nous avons adopté des solutions telles que le filtrage, le nettoyage et l'ajustement dynamique de la collecte des priorités des journaux. Tout d'abord, collectez tous les journaux dans le cluster Kafka et définissez une courte période de validité.

Nous fixons actuellement un volume de données d'une heure, une heure, et nos ressources sont toujours acceptables pour le moment.

Log Streams est notre service de traitement de flux pour le filtrage et le nettoyage des journaux. Pourquoi avons-nous besoin de filtres ETL?

Comme notre service de journalisation a des ressources limitées, ce n'est pas correct. Les journaux d'origine sont dispersés sur le support de stockage local de chaque service, ce qui nécessite également des ressources.

Maintenant, nous ne faisons que la collecter. Après la collecte, les ressources d'origine de chaque service peuvent libérer une partie des ressources occupées par le journal.

C'est vrai, ce calcul divise vraiment la gestion des ressources des services d'origine en ressources du service de journal et n'augmente pas les ressources.

Cependant, ce n'est que théorique. Avec les services en ligne, les ressources sont faciles à étendre, mais la réduction n'est pas si facile. C'est extrêmement difficile à mettre en œuvre.

Par conséquent, il est impossible d'allouer les ressources de journal utilisées sur chaque service au service de journalisation dans un court laps de temps. Dans ce cas, la ressource du service de journalisation est la quantité de ressources utilisées par tous les journaux de service en cours.

Plus la durée de stockage est longue, plus la consommation de ressources est importante. Si le coût de la résolution d'un problème non commercial ou indispensable est supérieur aux avantages de résoudre le problème actuel en peu de temps, je pense qu'avec des fonds limités, aucun dirigeant ou entreprise n'est disposé à adopter une solution.

Par conséquent, du point de vue du coût, nous avons introduit des filtres dans le service Log Streams pour filtrer les données de journal sans valeur, réduisant ainsi le coût des ressources utilisées par le service de journalisation.

Technologie Nous utilisons Kafka Streams comme traitement de flux ETL. Réalisez des règles de filtrage et de nettoyage dynamiques grâce à la configuration de l'interface.

Les règles générales sont les suivantes:

  • Collecte de journaux de configuration basée sur l'interface. Tous les journaux du niveau d'erreur par défaut sont collectés.
  • Prenez le temps d'erreur comme centre, ouvrez une fenêtre dans le traitement du flux et collectez des journaux de niveau autre que Erreur à N points temporels qui peuvent être configurés de haut en bas. Par défaut, seul le niveau d'informations est utilisé.
  • Chaque service peut être équipé de 100 journaux de clé, et tous les journaux de clé sont collectés par défaut.
  • Sur la base d'un SQL lent, configurez différents filtres chronophages en fonction de la classification métier.
  • Statistiques en temps réel du SQL métier en fonction des besoins de l'entreprise, tels que: pendant la période de pointe, statistiques de la fréquence des requêtes de SQL métier similaire en une heure. Il peut fournir à DBA une base pour l'optimisation de la base de données, comme la création d'un index basé sur la requête SQL.
  • Pendant les heures de pointe, les journaux sont nettoyés et filtrés dynamiquement en fonction de l'indice de pondération du type d'entreprise, de l'indice de niveau de journal, de l'indice de limite de journal maximal de chaque service sur une période et de l'index de période.
  • Réduisez dynamiquement la fenêtre de temps en fonction de différentes périodes.
  • Règles de génération d'index de journal: générez l'index correspondant en fonction des règles de fichier journal générées par le service, par exemple: un journal de service est divisé en: debug, info, error, xx_keyword, puis l'index généré est également debug, info, error, xx_keyword plus la date comme suffixe . Le but de ceci est d'utiliser habituellement des logs pour la recherche et le développement.

⑦ Interface de visualisation Nous utilisons principalement Grafana, parmi les nombreuses sources de données qu'il prend en charge, il y a Prometheus et Elasticsearch, qui peuvent être décrits comme une connexion transparente avec Prometheus. Nous utilisons principalement Kibana pour l'analyse visuelle de l'APM.

Visualisation du journal

Notre visualisation du journal est la suivante:

Comment utiliser ELK pour créer un système de surveillance des journaux de masse de microservice au niveau TB?

 

Comment utiliser ELK pour créer un système de surveillance des journaux de masse de microservice au niveau TB?

 

Comment utiliser ELK pour créer un système de surveillance des journaux de masse de microservice au niveau TB?

 

Comment utiliser ELK pour créer un système de surveillance des journaux de masse de microservice au niveau TB?

 

Comment utiliser ELK pour créer un système de surveillance des journaux de masse de microservice au niveau TB?

 

Comment utiliser ELK pour créer un système de surveillance des journaux de masse de microservice au niveau TB?

Lecture recommandée des œuvres:

Interview Meituan a été abusé par JVM? Les architectes d'Ali P9 utilisent 500 minutes pour parler de JVM de l'entrée au combat réel # 集集

L'architecte Ali P9 vous amène à maîtriser le pool de threads en 120 minutes, vous ne vous inquiétez donc plus des threads

Le code source de Spring combat les travaux complets, les architectes seniors vous guideront pour comprendre le fond du code source de Spring de l'entrée à la tombe

[Interview] C’est super, Ali P8 semble en fait expliquer la structure des données, l’interview de l’algorithme de la grande usine et la couche inférieure de Redis!

N'acceptez aucune réfutation, le didacticiel de principe sous-jacent Netty le plus complet et le plus détaillé de toute la station B, l'ensemble du processus est sec et sans bêtises, et je ne peux pas me comprendre en train de manger du papier!

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45132238/article/details/108663609
conseillé
Classement