Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Conseil / Astuce
Ce contenu est un extrait de l’eBook, Architecting Cloud Native .NET Applications pour Azure, disponible sur .NET Docs ou en tant que PDF téléchargeable gratuitement qui peut être lu hors connexion.
Il existe de nombreux bons outils de journalisation centralisés et varient en coût entre les outils open source gratuits et les options plus coûteuses. Dans de nombreux cas, les outils gratuits sont aussi bons que les offres payantes. Un tel outil est une combinaison de trois composants open source : Elasticsearch, Logstash et Kibana.
Collectivement, ces outils sont appelés pile élastique ou pile ELK.
Pile élastique
La pile élastique est une option puissante pour collecter des informations à partir d’un cluster Kubernetes. Kubernetes prend en charge l’envoi de journaux à un point de terminaison Elasticsearch, et pour la majorité des cas, tout ce dont vous avez besoin pour commencer est de définir les variables d’environnement comme indiqué à la figure 7-5 :
KUBE_LOGGING_DESTINATION=elasticsearch
KUBE_ENABLE_NODE_LOGGING=true
Figure 7-5. Variables de configuration pour Kubernetes
Cette étape installe Elasticsearch sur le cluster et cible l’envoi de tous les journaux de cluster à celui-ci.
Figure 7-6. Exemple d’un tableau de bord Kibana montrant les résultats d’une requête sur les journaux ingérés à partir de Kubernetes
Pour plus d’informations sur la configuration, consultez Configurer la journalisation (Kibana).
Quels sont les avantages de Elastic Stack ?
Elastic Stack fournit une journalisation centralisée de manière économique, évolutive et conviviale pour le cloud. Son interface utilisateur simplifie l’analyse des données afin de pouvoir passer votre temps à glaner des insights à partir de vos données au lieu de se battre avec une interface clunky. Il prend en charge un large éventail de types d'entrées, de sorte que dans votre application distribuée qui s'étend sur de nombreux types de services, vous pouvez vous attendre à continuer à intégrer dans le système des données de journal et de métriques. La pile élastique prend également en charge les recherches rapides, même dans les jeux de données volumineux, ce qui permet même aux applications volumineuses de consigner des données détaillées et d’avoir toujours une visibilité sur celle-ci de manière performante.
Logstash
Le premier composant est Logstash. Cet outil est utilisé pour collecter des informations de journal à partir d’une grande variété de sources différentes. Par exemple, Logstash peut lire les journaux d’activité à partir du disque et recevoir des messages de bibliothèques de journalisation comme Serilog. Logstash peut effectuer un filtrage et une expansion de base sur les journaux à mesure qu’ils arrivent. Par exemple, si vos journaux contiennent des adresses IP, Logstash peut être configuré pour effectuer une recherche géographique et obtenir un pays/région ou même une ville d’origine pour ce message.
Serilog est une bibliothèque de journalisation pour les langages .NET, qui permet la journalisation paramétrée. Au lieu de générer un message de journal textuel qui incorpore des champs, les paramètres sont conservés séparément. Cette bibliothèque permet un filtrage et une recherche plus intelligents. Un exemple de configuration Serilog pour l’écriture dans Logstash apparaît dans la figure 7-7.
var log = new LoggerConfiguration()
.WriteTo.Http("http://localhost:8080")
.CreateLogger();
Figure 7-7. Configuration de Serilog pour écrire des données de journalisation directement dans Logstash sur HTTP
Logstash utilise une configuration semblable à celle illustrée dans la figure 7-8.
input {
http {
#default host 0.0.0.0:8080
codec => json
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index=>"sales-%{+xxxx.ww}"
}
}
Figure 7-8. Configuration de Logstash pour l’utilisation des journaux à partir de Serilog
Pour les scénarios où une manipulation de journaux étendue n’est pas nécessaire, il existe une alternative à Logstash appelée Beats. Beats est une famille d’outils qui peuvent collecter un large éventail de données, de journaux à des données réseau et des informations de durée de bon fonctionnement. De nombreuses applications utilisent à la fois Logstash et Beats.
Une fois les fichiers de log collectés par Logstash, il doit les stocker quelque part. Alors que Logstash prend en charge de nombreuses sorties différentes, l’une des plus excitantes est Elasticsearch.
Elasticsearch
Elasticsearch est un moteur de recherche puissant qui peut indexer les journaux à mesure qu’ils arrivent. Il permet d’exécuter rapidement des requêtes sur des journaux. Elasticsearch peut gérer d’énormes quantités de journaux et, dans des cas extrêmes, être mis à l’échelle sur de nombreux nœuds.
Les messages de journal qui ont été conçus pour contenir des paramètres ou qui avaient des paramètres divisés par le biais du traitement Logstash peuvent être interrogés directement à mesure que Elasticsearch conserve ces informations.
Une requête qui recherche les 10 premières pages visitées par jill@example.com
, apparaît dans la figure 7-9.
"query": {
"match": {
"user": "jill@example.com"
}
},
"aggregations": {
"top_10_pages": {
"terms": {
"field": "page",
"size": 10
}
}
}
Figure 7-9. Requête Elasticsearch pour rechercher les 10 premières pages visitées par un utilisateur
Visualisation d’informations avec des tableaux de bord web Kibana
Le composant final de la pile est Kibana. Cet outil est utilisé pour fournir des visualisations interactives dans un tableau de bord web. Les tableaux de bord peuvent être conçus même par les utilisateurs qui ne sont pas techniques. La plupart des données résidant dans l’index Elasticsearch peuvent être incluses dans les tableaux de bord Kibana. Les utilisateurs individuels peuvent avoir des désirs de tableau de bord différents et Kibana permet cette personnalisation grâce à l’autorisation de tableaux de bord spécifiques à l’utilisateur.
Installation d’Elastic Stack sur Azure
Les éléments d’Elastic Stack peuvent être installés sur Azure de nombreuses façons. Comme toujours, il est possible de provisionner des machines virtuelles et d’installer Elastic Stack directement. Cette option est préférée par certains utilisateurs expérimentés, car elle offre le degré de personnalisation le plus élevé. Le déploiement sur l’infrastructure en tant que service introduit une surcharge de gestion significative obligeant ceux qui suivent ce chemin à prendre possession de toutes les tâches associées à l’infrastructure en tant que service, comme la sécurisation des machines et la mise à jour avec des correctifs.
Une option avec moins de surcharge consiste à utiliser l’un des nombreux conteneurs Docker sur lesquels la pile élastique a déjà été configurée. Ces conteneurs peuvent être déployés dans un cluster Kubernetes existant et s'exécuter en parallèle avec le code de l'application. Le conteneur sebp/elk est un conteneur Elastic Stack bien documenté et testé.
Une autre option est une offre ELK-as-a-service récemment annoncée.