Surveillance et suivi des microservices à l'aide d'Application Performance Monitoring sur Oracle Cloud
La surveillance des microservices peut s'avérer difficile en raison de la complexité de leur architecture et de leur modèle de déploiement distribué.
Les applications de microservices peuvent être constituées de milliers de services indépendants déployés dans de nombreux systèmes différents, tandis que chaque service s'exécute avec son processus. Les approches de surveillance traditionnelles qui se concentrent sur des ressources spécifiques et des moniteurs d'état ne sont plus efficaces lors du suivi du flux de transactions ou du débogage des problèmes dans les applications de microservices.
Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) permet l'instrumentation OpenTracing automatique sur les microservices et capture les transactions utilisateur complètes de bout en bout pour vous aider à comprendre à la fois l'expérience utilisateur et les performances des applications. APM inclut une implémentation d'un système de suivi distribué qui permet le suivi des instances, de bout en bout et des transactions. Il permet également la surveillance des serveurs d'applications et des mesures d'activité.
Architecture
Cette architecture de référence explique comment utiliser Application Performance Monitoring Cloud Service (APM) d'Oracle Cloud Infrastructure pour surveiller une application de microservice déployée sur le cluster OCI Kubernetes Engine (OKE).
Les diagrammes d'architecture ci-dessous présentent une application de microservices déployée dans un cluster Kubernetes. L'application est hébergée sur un serveur d'applications avec deux répliques de déploiement et se connecte à une instance Oracle Autonomous Database à l'aide de JDBC. Les utilisateurs finaux accèdent à l'application via une interface Web hébergée sur Oracle Cloud. Chaque schéma présente une approche différente :
-
Opérateur OpenTelemetry : la première approche utilise l'opérateur Kubernetes pour simplifier l'injection automatique d'agents Java dans des machines virtuelles Java (JVM) exécutées dans des pods Kubernetes.
-
Système de fichiers partagé : la deuxième approche utilise un système de fichiers partagé pour provisionner et déployer un agent APM.
Les deux méthodes peuvent surveiller les structures ou les serveurs d'applications Java, tels qu'Oracle WebLogic Server ou Spring Boot, déployés sur Kubernetes.
Le diagramme suivant présente l'implémentation de l'opérateur OpenTelemetry :
apm-microservices-open-telemetry-oracle.zip
Flux de données dans cette architecture, comme suit :
- Créez un domaine APM dans OCI et obtenez l'URL d'adresse de téléchargement de données et les clés de données privées et publiques du domaine.
- Créez un système de fichiers partagé dans OCI et créez des objets de stockage Kubernetes, tels qu'un volume persistant dans le cluster OKE.
- Téléchargez l'agent Java APM à partir du domaine APM et provisionnez-le dans le volume monté.
- Déployez l'agent APM vers l'application en mettant à jour les fichiers YAML pour les déploiements Kubernetes ou StatefulSets.
B : l'opérateur OpenTelemetry télécharge automatiquement l'agent Java vers le cache local. L'agent Java est installé localement sur chacune des répliques du cluster OKE.
C : les traces, étendues et mesures JDBC du serveur et de JDBC sont envoyées au domaine APM. Une fois les pods Kubernetes redémarrés, les traces et les étendues du serveur sont envoyées au domaine APM où se trouve l'URL endpoint de téléchargement de données.
D : les traces, étendues et mesures du navigateur sont envoyées au domaine APM. Les données collectées peuvent être visualisées dans les tableaux de bord APM et l'explorateur de traces pour l'analyse des performances et de la disponibilité.
Le schéma suivant illustre l'implémentation du système de fichiers partagé :
apm-microservices-arc-oracle.zip
Flux de données dans cette architecture, comme suit :
- Créez un domaine APM dans OCI et obtenez l'URL d'adresse de téléchargement de données et les clés de données privées et publiques du domaine.
- Créez un système de fichiers partagé dans OCI et créez des objets de stockage Kubernetes, tels qu'un volume persistant dans le cluster OKE.
- Téléchargez l'agent Java APM à partir du domaine APM et provisionnez-le dans le volume monté.
- Déployez l'agent APM vers l'application en mettant à jour les fichiers YAML pour les déploiements Kubernetes ou StatefulSets.
B : les traces, étendues et mesures JDBC du serveur et de JDBC sont envoyées au domaine APM. Une fois les pods Kubernetes redémarrés, les traces et les étendues du serveur sont envoyées au domaine APM où se trouve l'URL endpoint de téléchargement de données.
C : les traces, étendues et mesures du navigateur sont envoyées au domaine APM. Les données collectées peuvent être visualisées dans les tableaux de bord APM et l'explorateur de traces pour l'analyse des performances et de la disponibilité.
Cette architecture comprend les composants suivants :
- Tenancy
Une location est une partition sécurisée et isolée configurée par Oracle dans Oracle Cloud lors de votre inscription à Oracle Cloud Infrastructure. Vous pouvez créer, organiser et administrer vos ressources dans OCI au sein de votre location. Une location est synonyme d'entreprise ou d'organisation. En général, une entreprise dispose d'une seule location et reflète sa structure organisationnelle au sein de cette location. Une location unique est généralement associée à un seul abonnement, et un seul abonnement n'a généralement qu'une seule location.
- Région
Une région Oracle Cloud Infrastructure est une zone géographique localisée contenant des centres de données hébergeant des domaines de disponibilité. Les régions sont indépendantes les unes des autres et de grandes distances peuvent les séparer (entre les pays ou même les continents).
- Compartiment
Les compartiments sont des partitions logiques inter-régionales au sein d'une location Oracle Cloud Infrastructure. Utilisez des compartiments pour organiser, contrôler l'accès et définir des quotas d'utilisation pour vos ressources Oracle Cloud. Dans un compartiment donné, vous définissez des stratégies qui contrôlent l'accès et définissent des privilèges pour les ressources.
- Réseau cloud virtuel (VCN) et sous-réseaux
Un VCN est un réseau personnalisable défini par logiciel que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux de centre de données traditionnels, les réseaux cloud virtuels vous donnent le contrôle sur l'environnement réseau. Un réseau cloud virtuel peut comporter plusieurs blocs CIDR qui ne se chevauchent pas et que vous pouvez modifier après l'avoir créé. Vous pouvez segmenter un réseau cloud virtuel en plusieurs sous-réseaux ciblant une région ou un domaine de disponibilité. Chaque sous-réseau est composé d'une plage contiguë d'adresses qui ne chevauchent pas celles des autres sous-réseaux du réseau cloud virtuel. Vous pouvez modifier la taille d'un sous-réseau après sa création. Un sous-réseau peut être public ou privé.
Dans cette architecture, toutes les instances de calcul hébergeant le cluster Reds sont attachées à un seul sous-réseau régional.
- Listes de sécurité
Pour chaque sous-réseau, vous pouvez créer des règles de sécurité qui indiquent la source, la destination et le type de trafic autorisés à entrer et sortir du sous-réseau.
Cette architecture ajoute des règles entrantes pour les ports TCP 16379 et 6379. Le port 6379 dessert les clients Reds et le port 16379 est utilisé par le bus de cluster Reds.
- Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications en conteneur vers le cloud. Indiquez les ressources de calcul requises par vos applications et Kubernetes Engine les provisionne sur Oracle Cloud Infrastructure dans une location existante. OKE utilise Kubernetes pour automatiser le déploiement, le redimensionnement et la gestion des applications en conteneur dans les clusters d'hôtes.
- Autonomous Transaction Processing
Oracle Autonomous Transaction Processing est un service de base de données doté de fonctions d'autopilotage, d'autosécurisation et d'autoréparation, optimisé pour les charges globales de traitement des transactions. Vous n'avez pas à configurer ni à gérer le matériel, ni à installer de logiciel. Oracle Cloud Infrastructure gère la création, la sauvegarde, l'application de patches, la mise à niveau et le réglage de la base de données.
- Surveillance des performances des applications
Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM) est une solution basée sur la plate-forme en tant que service (PaaS) qui offre une visibilité approfondie des performances de votre application, de l'utilisateur final aux journaux d'application. Le service intègre des informations d'expérience utilisateur, des mesures d'application et des analyses de données de journal.
- Domaine APM
Le domaine APM est un type de ressource Oracle Cloud Infrastructure (OCI) qui contient les systèmes surveillés par APM.
Chaque domaine APM est créé dans un compartiment OCI standard. Vous pouvez définir des stratégies de contrôle d'accès OCI pour accorder l'accès au domaine APM à un ensemble d'utilisateurs spécifique.
- Clés de données
Des clés de données sont requises pour garantir qu'APM accepte les observations collectées par les sources de données. Les clés de données sont générées lors de la création d'un domaine APM et peuvent être de deux types : clé de données publique et clé de données privée
- URL d'adresse de téléchargement de données
l'adresse de téléchargement de données correspond à l'URL vers laquelle une source de données envoie des observations. L'adresse de téléchargement de données est générée lors de la création d'un domaine APM. Chaque domaine APM a son adresse de téléchargement de données.
- Opérateur OpenTelemetry
L'opérateur OpenTelemetry est un opérateur Kubernetes conçu pour simplifier l'injection automatique d'agents Java dans des JVM exécutées dans des pods Kubernetes.
- Agents Java APM
Les agents Java APM enregistrent les étendues et les mesures des serveurs d'applications et les envoient à APM.
- Des agents de navigateur APM
Les agents de navigateur APM enregistrent les interactions des utilisateurs avec les sites Web, et envoient des étendues et des mesures à APM.
- Trace et étendue
Une trace est le flux complet d'une demande lorsqu'elle passe à travers tous les composants d'un système distribué au cours d'une période donnée. Une étendue inclut des opérations ou des unités de travail logiques au sein d'une trace, et comporte un nom, une heure de début et une durée.
- Domaine APM
Recommandations
Vos exigences peuvent différer de l'architecture décrite ici. Utilisez les recommandations suivantes comme point de départ pour Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM).
- Agent de navigateur APM
Déployez l'agent de navigateur APM sur l'interface Web de l'application pour activer la surveillance de l'utilisateur final. Les traces commencent par l'action utilisateur sur le navigateur.
- Surveillance synthétique
Configurer la surveillance synthétique pour surveiller l'interface utilisateur de l'application et les adresses d'API afin de détecter de manière proactive les problèmes de disponibilité et de performances. Vous pouvez créer des moniteurs basés sur un navigateur ou sur REST et les programmer pour qu'ils s'exécutent périodiquement à partir d'emplacements globaux ou à partir du réseau cloud virtuel du locataire (VCN).
Points à prendre en compte
Lorsque vous utilisez Oracle Cloud Infrastructure Application Performance Monitoring Cloud Service (APM), tenez compte des points suivants.
- Clés de données
Utilisez des clés de données personnalisées pour gérer les données envoyées à APM. Outre les clés de données par défaut, vous pouvez créer vos propres clés de données à des fins spécifiques. Dans le cas de déploiements importants où de nombreuses personnes utilisent APM, fournissez des clés différentes à différents propriétaires de projet afin que vous, en tant qu'administrateur de domaine APM, puissiez facilement contrôler quelles données entrent dans APM et quelles données ne le font pas.
Par exemple, APM reçoit un ensemble de données d'un projet abandonné et vous souhaitez désactiver la collecte de données. Cependant, comme le propriétaire du projet a quitté l'organisation, il est difficile d'identifier les agents à désactiver. Vous pouvez supprimer la clé de données utilisée par le projet pour ignorer les données associées à cette clé de données.
- Ressources Kubernetes
Lorsque vous configurez des microservices, envisagez d'utiliser StatefulSets au lieu de Deployments lors de la configuration des ressources de pod Kubernetes afin de mieux suivre l'historique dans APM. Les pods de déploiement modifient leurs ID chaque fois qu'ils sont régénérés, StatefulSets est régénéré avec le même index d'ID (par exemple, SS_0, SS_1, SS_2), ce qui simplifie la trace de l'historique avec APM.
- Nom de service APM
Lors du provisionnement de l'agent Java APM, vous devez indiquer le nom de service utilisé dans APM. Envisagez d'utiliser le nom Deployment/StatefulSet en tant que fichier APM serviceName pour la fonction de trace cohérente dans APM.
- Echantillonage
Utilisez l'échantillonnage dans les applications à volume élevé (par exemple, 1 million de transactions par seconde). APM collecte toutes les étendues par défaut et vous permet de suivre toutes les transactions de votre application. Cependant, cela peut générer de nombreuses étendues dans le cas d'applications à volume élevé. Dans ce cas, envisagez de spécifier explicitement la configuration d'échantillonnage pour une meilleure rentabilité et pour réduire la quantité de données de trace.
Déployez
Reportez-vous aux instructions détaillées des ateliers Oracle LiveLabs suivants lors du déploiement de l'agent Java APM décrit dans cette architecture de référence.
Les exercices suivants utilisent des applications avec Spring Boot et Oracle WebLogic Server comme exemples.
En savoir plus
En savoir plus sur les fonctionnalités de cette architecture et sur les informations connexes.
Pour en savoir plus sur Oracle Application Performance Monitoring, consultez les ressources supplémentaires suivantes :