Surveiller et traquer les microservices à l'aide d'Application Performance Monitoring dans Oracle Cloud

La surveillance des microservices peut être difficile en raison de la complexité de leur architecture et de leur modèle de déploiement distribué.

Les applications de microservices peuvent se composer 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 de santé ne sont plus efficaces lors du suivi du flux de transactions ou du débogage des problèmes dans les applications de microservices.

Application Performance Monitoring Cloud Service (APM) pour Oracle Cloud Infrastructure permet l'instrumentation automatique OpenTracing sur les microservices et saisit toutes les transactions d'utilisateur de bout en bout pour vous aider à comprendre l'expérience utilisateur et la performance de l'application. APM comprend une mise en oeuvre du système de traçage distribué qui permet le traçage au niveau de l'instance, de bout en bout et des transactions. Il permet également la surveillance du serveur d'applications et des mesures d'affaires.

Architecture

Cette architecture de référence montre comment utiliser Application Performance Monitoring Cloud Service (APM) pour Oracle Cloud Infrastructure pour surveiller une application de microservice déployée sur la grappe OCI Kubernetes Engine (OKE).

Les diagrammes d'architecture ci-dessous montrent une application de microservices déployée dans une grappe Kubernetes. L'application est hébergée sur un serveur d'applications avec deux répliques de déploiement et se connecte à Oracle Autonomous Database à l'aide de JDBC. Les utilisateurs finaux accèdent à l'application au moyen d'une interface Web hébergée sur Oracle Cloud. Chaque diagramme 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 s'exécutant 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 serveurs d'applications ou les cadres Java, tels qu'Oracle WebLogic Server ou Spring Boot, déployés sur Kubernetes.

Le diagramme suivant présente la mise en oeuvre de l'opérateur OpenTelemetry :



apm-microservices-open-telemetry-oracle.zip

Flux de données dans cette architecture comme suit :

A : Déployez l'agent Java APM vers les pods Kubernetes.
  1. Créez un domaine APM dans OCI et obtenez l'URL du point d'extrémité de chargement des données et les clés de données privées et publiques du domaine.
  2. Créez un système de fichiers partagé dans OCI et créez des objets de stockage Kubernetes, tels qu'un volume persistant dans la grappe OKE.
  3. Téléchargez l'agent Java APM à partir du domaine APM et provisionnez-le dans le volume monté.
  4. Déployez l'agent APM dans 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 dans la mémoire cache locale. L'agent Java est installé localement sur chacune des répliques de la grappe OKE.

C : Les traces, intervalles et mesures du serveur et JDBC sont envoyés au domaine APM. Une fois les pods Kubernetes redémarrés, les traces et les intervalles du serveur sont envoyés au domaine APM où se trouve l'URL du point d'extrémité de chargement des données.

D : Les traces, les intervalles et les mesures du navigateur sont envoyés au domaine APM. Les données collectées peuvent être visualisées dans les tableaux de bord APM et l'explorateur de trace pour l'analyse de la performance et de la disponibilité.

Le diagramme suivant présente l'implémentation du système de fichiers partagé :



apm-microservices-arc-oracle.zip

Flux de données dans cette architecture comme suit :

A : Déployez l'agent Java APM vers les pods Kubernetes.
  1. Créez un domaine APM dans OCI et obtenez l'URL du point d'extrémité de chargement des données et les clés de données privées et publiques du domaine.
  2. Créez un système de fichiers partagé dans OCI et créez des objets de stockage Kubernetes, tels qu'un volume persistant dans la grappe OKE.
  3. Téléchargez l'agent Java APM à partir du domaine APM et provisionnez-le dans le volume monté.
  4. Déployez l'agent APM dans l'application en mettant à jour les fichiers YAML pour les déploiements Kubernetes ou StatefulSets.

B : Les traces, intervalles et mesures du serveur et JDBC sont envoyés au domaine APM. Une fois les pods Kubernetes redémarrés, les traces et les intervalles du serveur sont envoyés au domaine APM où se trouve l'URL du point d'extrémité de chargement des données.

C : Les traces, les intervalles et les mesures du navigateur sont envoyés au domaine APM. Les données collectées peuvent être visualisées dans les tableaux de bord APM et l'explorateur de trace pour l'analyse de la performance et de la disponibilité.

Cette architecture comprend les composants suivants :

  • Location

    Une location est une partition sécurisée et isolée qu'Oracle configure 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'une société ou d'une organisation. Habituellement, une société aura une seule location et reflétera sa structure organisationnelle au sein de cette location. Une seule location est généralement associée à un seul abonnement, et un seul abonnement ne comporte généralement qu'une seule location.

  • Région

    Une région Oracle Cloud Infrastructure est une zone géographique précise qui contient un ou plusieurs centres de données et qui héberge des domaines de disponibilité. Les régions sont indépendantes les unes des autres, et de grandes distances peuvent les séparer (à travers les pays ou même les continents).

  • Compartiment

    Les compartiments sont des partitions logiques inter-régionales dans 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 politiques qui contrôlent l'accès et définissent des privilèges pour les ressources.

  • Réseau en nuage virtuel (VCN) et sous-réseaux

    Un réseau VCN est un réseau défini par logiciel personnalisable que vous configurez dans une région Oracle Cloud Infrastructure. Comme les réseaux de centre de données traditionnels, les réseaux en nuage virtuels vous permettent de contrôler votre environnement de réseau. Un VCN peut disposer de plusieurs blocs CIDR sans chevauchement que vous pouvez modifier après avoir créé le VCN. Vous pouvez segmenter un VCN en sous-réseaux, dont la portée peut concerner une région ou un domaine de disponibilité. Un sous-réseau est constitué d'un intervalle contigu d'adresses qui ne chevauchent pas les autres sous-réseaux dans le réseau en nuage 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 la grappe 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 spécifient la source, la destination et le type de trafic autorisé à entrer et à sortir du sous-réseau.

    Cette architecture ajoute des règles de trafic entrant 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.

  • Moteur Kubernetes

    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 conteneurisées dans le nuage. Vous 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, l'ajustement et la gestion des applications conteneurisées sur des grappes d'hôtes.

  • Autonomous Transaction Processing

    Oracle Autonomous Transaction Processing est un service de base de données entièrement géré, autosécurisé et autoréparable optimisé pour les charges de travail de traitement des transactions. Il n'est pas nécessaire de configurer ou de gérer du matériel ni d'installer des logiciels. Oracle Cloud Infrastructure gère la création, la sauvegarde, l'application de correctifs, la mise à niveau et le réglage de la base de données.

  • Surveillance de la performance des applications

    Application Performance Monitoring Cloud Service (APM) pour Oracle Cloud Infrastructure est une solution basée sur la plate-forme-service (PaaS) qui fournit une visibilité complète de la performance de votre application, de l'utilisateur final aux journaux d'application. Le service intègre des informations sur l'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 qu'APM surveille.

      Chaque domaine APM est créé dans un compartiment OCI standard et vous pouvez définir des politiques de contrôle d'accès OCI pour accorder l'accès au domaine APM à un jeu spécifique d'utilisateurs.

    • Clés de données

      Des clés de données sont requises pour s'assurer qu'APM accepte les observations recueillies 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 sont de deux types : clé de données publique et clé de données privée

    • URL du point d'extrémité de chargement des données

      le point d'extrémité de chargement des données est l'URL vers laquelle une source de données envoie des observations. Le point d'extrémité de chargement des données est généré lors de la création d'un domaine APM et chaque domaine APM a son point d'extrémité de chargement des 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 les JVM exécutées dans les pods Kubernetes.

    • Agents Java APM

      Les agents Java APM enregistrent les intervalles et les mesures des serveurs d'applications et les envoient à APM.

    • Agents de navigateur APM

      Les agents de navigateur APM enregistrent les interactions des utilisateurs avec les sites Web et envoient des intervalles et des mesures à APM.

    • Trace et intervalle

      Une trace est le flux complet d'une demande lorsqu'elle traverse tous les composants d'un système réparti pendant une période donnée. Un intervalle comprend des opérations ou des unités de travail logiques au sein d'une trace et a un nom, une heure de début et une durée.

Recommandations

Vos exigences peuvent différer de l'architecture décrite ici. Utilisez les recommandations suivantes comme point de départ pour Application Performance Monitoring Cloud Service (APM) pour Oracle Cloud Infrastructure.

  • Agent de navigateur APM

    Déployez l'agent de navigateur APM dans l'interface Web de l'application pour activer la surveillance de l'utilisateur final. Les traces commencent par l'action de l'utilisateur sur le navigateur.

  • Surveillance synthétique

    Configurer la surveillance synthétique pour surveiller l'interface utilisateur d'application et les points d'extrémité d'API afin de détecter de manière proactive les problèmes de disponibilité et de performance. 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 en nuage virtuel (VCN) du locataire.

Points à considérer

Lorsque vous utilisez Application Performance Monitoring Cloud Service (APM) pour Oracle Cloud Infrastructure, tenez compte des éléments suivants.

  • Clés de données

    Utilisez des clés de données personnalisées pour gérer les données envoyées à APM. En plus des 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 volumineux où de nombreuses personnes utilisent APM, fournissez des clés différentes à différents responsables 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 jeu de données d'un projet abandonné et vous voulez désactiver la collecte de données. Toutefois, comme le responsable 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 des déploiements lors de la configuration des ressources de pod Kubernetes pour 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 traçabilité de l'historique avec APM.

  • Nom du service APM

    Lors du provisionnement de l'agent Java APM, vous devez spécifier le nom de service utilisé dans APM. Envisagez d'utiliser le nom Deployment/StatefulSet comme nom APM serviceName pour un traçage cohérent dans APM.

  • Échantillonnage

    Utilisez l'échantillonnage dans les applications à volume élevé (par exemple, 1 million de transactions par seconde). APM collecte tous les intervalles par défaut et vous permet de suivre toutes les transactions de votre application. Toutefois, cela peut générer de nombreux intervalles dans le cas d'applications à volume élevé. Dans de tels cas, envisagez de spécifier explicitement la configuration d'échantillonnage pour une meilleure rentabilité et réduire la quantité de données de trace.

Déployez

Reportez-vous aux instructions étape par étape des ateliers Oracle LiveLabs suivants lors du déploiement de l'agent Java APM décrit dans cette architecture de référence.

Remerciements

  • Author: Yutaka Takatsu
  • Contributors: Avi Huber, Robert Lies