Avec le développement continu de la technologie Internet et l'expansion continue des scénarios d'application, l'application des systèmes distribués devient de plus en plus répandue. Pour les systèmes distribués, la surveillance, la journalisation et le traçage sont des composants très importants. Ils peuvent nous aider à trouver et à résoudre les problèmes à temps et à améliorer la fiabilité et les performances du système.
Cet article présentera une méthode pratique de système de journalisation, de surveillance et de suivi distribué basé sur go-zero et ElasticStack. Ce système peut nous aider à collecter et stocker les journaux, à surveiller l'état du système et à l'afficher visuellement, ainsi qu'à suivre le flux des demandes dans le système distribué, réalisant ainsi une surveillance et un dépannage complets du système.
go-zero est un framework de microservices open source en langage Go offrant des performances élevées, une facilité d'utilisation et une flexibilité. Il est basé sur des frameworks open source tels que Gin et gRPC, fournit une multitude de fonctions et de composants et prend en charge la gestion complète des processus, du code métier à l'exploitation, à la maintenance et au déploiement.
Pour nous, la chose la plus importante est que go-zero fournit des composants de journalisation, de surveillance et de suivi très pratiques. Nous pouvons les utiliser très facilement dans notre code métier, ce qui nous apporte de grands avantages dans la création de systèmes distribués.
ElasticStack est un moteur de recherche et d'analyse distribué open source, initialement open source par Elastic Company. Ses composants principaux incluent Elasticsearch, Logstash, Kibana et Beats.
Parmi eux, Elasticsearch est le cœur du moteur de recherche et d'analyse distribué. Il fournit des fonctions de recherche et d'agrégation très puissantes et peut être utilisé pour stocker et rechercher de grandes quantités de données structurées et non structurées ; être utilisé pour collecter, convertir et envoyer des données ; Kibana est un outil de visualisation de données qui peut afficher des données dans des graphiques riches ; Beats est une série de collecteurs de données légers qui peuvent facilement collecter et envoyer différents types de données.
Nous pouvons utiliser ElasticStack pour créer une plate-forme de journalisation, de surveillance et de suivi, stocker les données collectées dans Elasticsearch, effectuer un affichage visuel et une analyse via Kibana et collecter des informations sur le système ou l'application via Beats.
Ensuite, nous présenterons comment utiliser go-zero et ElasticStack pour créer un système de journalisation, de surveillance et de suivi distribué.
Tout d’abord, nous devons introduire les composants de journalisation, de surveillance et de traçage de go-zero dans le code commercial. En prenant les journaux comme exemple, nous pouvons utiliser le composant logx. Dans le code métier, il suffit d'appeler les méthodes pertinentes du package logx où les journaux doivent être enregistrés. Par exemple :
logx.WithContext(r.Context()).Info("this is a log message")
Ensuite, nous devons utiliser Beats pour collecter les journaux d'entreprise. Nous pouvons utiliser le composant Filebeat pour y parvenir, qui peut surveiller les fichiers journaux spécifiés, collecter les données des journaux en temps réel et envoyer les données au serveur spécifié. Par exemple, nous pouvons configurer Filebeat pour surveiller les fichiers journaux d'entreprise et envoyer les données à Logstash.
En parallèle, nous devons intégrer le composant Opentracing dans go-zero pour implémenter la fonction de tracking. Nous pouvons utiliser le package go.opentracing et le package jaeger-client-go pour y parvenir. Il nous suffit d'appeler la méthode correspondante dans le code métier, telle que :
span, ctx := opentracing.StartSpanFromContext(r.Context(), "request") defer span.Finish()
En même temps, nous devons utiliser Jaeger ou. Zipkin comme plate-forme de stockage et de visualisation pour Opentracing. Nous pouvons utiliser Jaeger comme plate-forme de stockage et utiliser l'interface utilisateur de Jaeger pour afficher les informations de suivi.
Enfin, nous devons utiliser le composant Metric pour implémenter la fonction de surveillance. Nous pouvons utiliser le package Prometheus pour y parvenir. Il nous suffit d'appeler la méthode correspondante dans le code métier et de configurer l'adresse et le port Prometheus dans le fichier de configuration go-zero. Par exemple :
metric.NewCounter("requests_total").Add(1)
Nous pouvons utiliser les composants Prometheus pour collecter, stocker et afficher des données de surveillance, et nous pouvons utiliser Grafana comme interface visuelle pour surveiller les données.
Grâce à l'introduction ci-dessus, nous pouvons voir qu'il est très pratique et pratique d'utiliser go-zero et ElasticStack pour créer des systèmes de journalisation, de surveillance et de suivi distribués. Il suffit d'introduire les composants pertinents dans le code métier et de configurer les paramètres correspondants, ce qui est très approprié pour construire rapidement un système distribué.
Dans le même temps, nous pouvons également utiliser d'autres composants et frameworks similaires pour construire des systèmes distribués, tels que Logrus, Zipkin, etc. Vous pouvez choisir en fonction de vos propres besoins et des conditions réelles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!