Surveiller les données de journal Kubernetes avec OCI Logging Analytics

Kubernetes fournit une plate-forme hautement robuste et extrêmement personnalisable pour gérer le déploiement et l'évolutivité automatiques des charges de travail conteneurisées. Construire un système de surveillance et de dépannage pour l'ensemble de cet environnement est une tâche très difficile, et peut prendre un temps précieux aux équipes de développement et d'informatique. Un grand nombre d'initiatives basées sur Kubernetes ne parviennent pas à décoller en raison de l'absence d'une solution de surveillance complémentaire, aussi robuste, personnalisable, évolutive et automatiquement déployable. Oracle Cloud Infrastructure Logging Analytics comble cet écart de surveillance en fournissant une solution de surveillance Kubernetes de bout en bout en un clic pour l'infrastructure sous-jacente, la plate-forme Kubernetes et les applications natives en nuage. Envoyez les données de journal de vos grappes Kubernetes sur place et d'Oracle Cloud Infrastructure Kubernetes Engine (également appelé moteur Kubernetes ou OKE) à Oracle Cloud Infrastructure Logging Analytics pour un examen et une analyse approfondis.

Un environnement basé sur Kubernetes peut être divisé en trois niveaux, chacun composé de nombreux composants en constante évolution, axés sur les besoins de l'entreprise.

  • Niveau d'infrastructure : contient de nombreux composants, notamment les ressources de réseau, les instances de calcul et les hôtes des noeuds Kubernetes.
  • Niveau de plate-forme Kubernetes : Contient les différents services Kubernetes, tels que réseau, service kubelet et DNS, qui alimentent la plate-forme kubernetes.
  • Niveau application : contient les différentes technologies, bases de données et applications.

Architecture

Cette architecture montre comment vous pouvez utiliser Oracle Cloud Infrastructure Logging Analytics pour surveiller une plate-forme Kubernetes et des applications natives en nuage.

Le diagramme suivant présente un exemple de topologie d'une grappe Kubernetes dans une seule région Oracle Cloud Infrastructure (OCI). Il présente le niveau d'infrastructure et le deuxième diagramme met en évidence les niveaux de kubernetes et d'application.

Une description de kubernetes-master-worker-nodes.png suit
Description de l'illustration kubernetes-master-worker-nodes.png

kubernetes-master-worker-nodes-oracle.zip

Le diagramme suivant illustre la surveillance de Kubernetes pour vos grappes Kubernetes sur place et Oracle Cloud Infrastructure Kubernetes Engine (également appelé Moteur Kubernetes ou OKE) avec OCI Logging Analytics. Cette solution offre une collection de divers journaux d'une grappe Kubernetes dans OCI Logging Analytics et offre des analyses riches en plus des journaux collectés. Vous pouvez personnaliser la collection de journaux en modifiant la configuration prête à l'emploi.

Description de k8s-oke-monitoring.png :
Description de l'illustration k8s-oke-monitoring.png

k8s-oke-monitoring-oracle.zip

L'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 Oracle Cloud 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 n'a généralement qu'une seule location.

  • Région

    Une région Oracle Cloud Infrastructure est une zone géographique localisée qui contient un ou plusieurs centres de données, appelés domaines de disponibilité. Les régions sont indépendantes les unes des autres, et de grandes distances peuvent les séparer (dans différents pays ou continents).

  • Compartiment

    Les compartiments sont des partitions logiques inter-régions 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éseau

    Un VCN est un réseau défini par logiciel personnalisable que vous avez configuré dans une région Oracle Cloud Infrastructure. Comme les réseaux en nuage virtuels traditionnels, ils vous offrent un contrôle sur 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é.

  • Équilibreur de charge

    Le service Oracle Cloud Infrastructure Load Balancing permet une répartition automatisée du trafic à partir d'un point d'entrée unique vers plusieurs serveurs dorsaux.

  • Passerelle de service

    La passerelle de service fournit l'accès d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic entre le réseau VCN et le service Oracle circule sur la matrice réseau Oracle et ne passe pas par Internet.

  • Logging Analytics

    Oracle Cloud Infrastructure (OCI) Logging Analytics est un service régional SaaS entièrement géré disponible dans plus de 27 régions qui fournit la collecte, l'indexation, l'enrichissement, l'interrogation, la visualisation et les alertes pour les journaux à partir de tout composant informatique exécuté sur le nuage sur place, OCI ou 3e partie.

  • Source de Logging Analytics

    Logging Analytics Source est une ressource de configuration qui fournit des spécifications pour l'analyse, les extractions, l'étiquetage, le masquage des données et d'autres enrichissements afin de garantir que les journaux sont correctement ingérés et indexés pour l'analyse et la surveillance. Cette architecture utilise plus de 30 sources prédéfinies pour les services, les applications et les objets Kubernetes. Ces sources sont continuellement améliorées afin de fournir des capacités d'analyse plus approfondies.

  • Pods du système Kubernetes

    Les pods du système Kubernetes sont de petites unités de calcul déployables que vous pouvez créer et gérer dans Kubernetes. Un pod est un ou plusieurs conteneurs, avec des ressources de stockage et de réseau partagées, et des règles d'exécution des conteneurs.

  • Pods d'utilisateur

    Applications lancées sur la grappe Kubernetes. Tous les journaux des pods d'application qui écrivent STDOUT/STDERR sont généralement disponibles sous /var/log/containers/. Les applications qui ont des programmes de traitement de journaux personnalisés peuvent acheminer leurs journaux différemment, mais sont généralement disponibles sur le noeud (au moyen d'un volume).

  • Services et pods de plan de contrôle

    Services et modules de réseautage de plan de contrôle de la plate-forme Kubernetes. Le plan de contrôle gère les noeuds de travail et les pods de la grappe Kubernetes. Les noeuds de travail exécutent les applications conteneurisées. Chaque grappe comporte au moins un noeud de travail. Les noeuds de travail hébergent les pods qui sont les composants de la charge de travail de l'application.

  • Services de système d'exploitation de noeud

    Les services Linux s'exécutent sur l'instance sur laquelle Kubernetes est installé. Les journaux sont collectés sur les services de système d'exploitation.

  • Pods de collecte de journaux et d'objets

    Les pods de collecte de journaux et d'objets sont composés de jeux de répliques, de jeux FluentD et de jeux de démons.

    • Agent de recouvrement FluentD

      FluentD est un collecteur de données à code source libre qui fournit une couche de journalisation unifiée entre les sources de données et les systèmes dorsaux. Il permet la collecte et la consommation de données unifiées pour un pipeline de traitement de données de construction. Cette architecture utilise un conteneur FluentD conteneurisé qui s'exécute en tant que jeu de démons et jeu de répliques sur la grappe kubernetes. Il utilise le plugiciel de sortie fluide Logging Analytics pour charger les journaux dans OCI Logging Analytics.

    • Plugiciel FluentD Logging Analytics

      Plugiciel de sortie FluentD qui se connecte au service OCI Logging Analytics dans votre location pour charger ou ingérer les journaux collectés par le collecteur FluentD.

    • Objets Kubernetes

      Les objets Kubernetes sont des entités persistantes dans le système Kubernetes. Kubernetes utilise ces entités pour représenter l'état de votre grappe. Dans cette architecture, les états d'objet kubernetes suivants sont collectés en tant que journaux pour l'analyse historique et le dépannage :

    • Jeu de démons Kubernetes

      Un DaemonSet de Kubernetes est un type de charge de travail qui s'exécute sur Kubernetes et qui garantit que tous (ou certains) noeuds exécutent une copie d'un pod. Au fur et à mesure que des noeuds sont ajoutés au cluster, des pods leur sont ajoutés. Lorsque les noeuds sont supprimés du cluster, ces pods sont collectés.

    • Jeu de répliques Kubernetes

      Un type de charge de travail Kubernetes ReplicaSet s'exécute sur Kubernetes. Il maintient un ensemble stable de répliques de pods en cours d'exécution à tout moment. En tant que tel, il est souvent utilisé pour garantir la disponibilité d'un nombre spécifié de pods identiques.

  • Moteur Kubernetes

    Oracle Cloud Infrastructure Kubernetes Engine pour (Moteur Kubernetes pour OCI 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 dont vos applications ont besoin 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 les grappes d'hôtes.

  • Connecteurs de service

    Service Connector Hub est une plate-forme de bus de messages en nuage. Vous pouvez l'utiliser pour déplacer des données entre des services dans Oracle Cloud Infrastructure. Les données sont déplacées à l'aide des connecteurs de service. Un connecteur de service indique le service source qui contient les données à déplacer, les tâches à effectuer sur les données et le service cible auquel les données doivent être livrées une fois les tâches spécifiées sont terminées. Un connecteur de service est provisionné dans cette architecture pour collecter les journaux de réseau et d'équilibreur de charge.

  • Services OCI

    Les services Oracle Cloud Infrastructure (OCI) sont une plate-forme de services en nuage qui vous permet de créer et d'exécuter une large gamme d'applications dans un environnement hautement disponible et systématiquement haute performance.

  • Journaux du service et de vérification

    Les journaux de service et de vérification sont saisis dans le service de journalisation OCI. Le service de journalisation OCI est un service hautement évolutif et entièrement géré qui est utilisé pour accéder aux journaux du service de VCN et d'équilibreur de charge au moyen du connecteur de service.

Par défaut, les journaux des services de système Kubernetes et les données d'objet Kubernetes sont collectés.

Oracle Cloud Infrastructure Kubernetes Engine comporte des services intégrés où chacun a des responsabilités différentes et s'exécute sur un ou plusieurs noeuds de la grappe, soit en tant que déploiements, soit en tant que DaemonSets.

Services de système Kubernetes Services système Linux Plan de contrôle Kubernetes Objets Kubernetes (valeur par défaut : toutes les 15 minutes) Journaux d'application personnalisés
  • Kube Proxy
  • Kube Flannel
  • Kubelet
  • CoreDNS
  • CSI Node Driver
  • DNS Autoscaler
  • Cluster Autoscaler
  • Proxymux Client
  • Syslog
  • Journaux sécurisés
  • Journaux Cron
  • Envoyer les journaux par courriel
  • Journaux de vérification
  • Journaux Ksplice Uptrack
  • Journaux Yum
  • Kube API Server
  • Kube Scheduler
  • Kube Controller Manager
  • Cloud Controller Manager
  • etcd
  • Nodes
  • Namespaces
  • Pods
  • DaemonSets
  • Deployments
  • ReplicaSets
  • Events
  • Tous les journaux d'application personnalisés exécutant la grappe sont collectés. Voir Recommandations pour personnaliser ce comportement.

Note :

Les journaux de plan de contrôle Kubernetes ne sont pas couverts dans le cadre de la collecte prête à l'emploi, car ces journaux ne sont pas exposés par le moteur Kubernetes pour OCI (également appelé OKE). Vous pouvez activer les journaux de plan de contrôle à partir de grappes Kubernetes non OKE.

Recommandations

Utilisez les recommandations suivantes comme point de départ. Vos exigences peuvent différer de l'architecture décrite ici.

  • Groupes de journaux

    Définissez plusieurs groupes de journaux pour accorder des autorisations d'accès en écriture à différentes équipes et éviter de partager des données sensibles. Les groupes de journaux peuvent être basés sur Oracle E-Business Suite, Database, infrastructure OCI, journaux d'hôte.

  • Gestion des coûts

    Le service Logging Analytics d'Oracle Cloud Infrastructure (OCI) est facturé sur le volume de données dans le stockage actif et le stockage d'archives. Pour permettre le dépannage des problèmes quotidiens et profiter des avantages de la détection d'anomalies, de la détection de modèles et d'autres capacités d'apprentissage automatique, nous recommandons d'utiliser une période de stockage active de 90 jours et de déplacer les journaux de plus de 90 jours vers le stockage d'archives. Les journaux d'archives stockés peuvent être rappelés sur demande rapidement.

  • FluentD Travailleur multiple

    Configurez FluentD en mode multi-travailleur pour les journaux sensibles au temps.

  • Journaux d'application personnalisés

    Cette solution saisit automatiquement tous les journaux générés par les applications exécutées dans une grappe Kubernetes. Par défaut, ces journaux sont mappés à la source de journaux Kubernetes Generic Container Logs. L'analyseur, les sources et l'enrichissement propres aux journaux d'application doivent être créés dans Oracle Cloud Infrastructure Logging Analytics pour extraire les champs obligatoires et associer des étiquettes de problème aux journaux.

  • Authentification

    Cette architecture prend en charge le principal d'instance et l'authentification basée sur un fichier config pour Oracle Cloud Infrastructure. L'authentification basée sur le principal d'instance est recommandée pour Oracle Cloud Infrastructure Kubernetes Engine (OKE).

Points à considérer

Tenez compte des points suivants lors du déploiement de cette architecture de référence.

  • Performance

    La performance des interrogations est basée sur l'intervalle de temps et le nombre d'opérations, telles que les filtres, le regroupement, etc. Pour une meilleure performance d'interrogation, il est recommandé d'enrichir les journaux avec des étiquettes et des champs spécifiques au moment de l'ingestion. Cela fait partie de l'amélioration continue des opérations informatiques.

  • Sécurité et contrôle d'accès basé sur les rôles

    Personnalisez les définitions de source de journaux pour filtrer les données d'identification personnelle et activer l'enrichissement de la géolocalisation.

  • Disponibilité

    Oracle Cloud Infrastructure Logging Analytics est un service SaaS hautement disponible entièrement géré.

Déployez

Les manifestes Kubernetes et les graphiques de commande pour le déploiement d'Oracle Cloud Infrastructure Logging Analytics DaemonSets et ReplicaSets sont disponibles dans GitHub.

  1. Allez à GitHub.
  2. Clonez ou téléchargez le référentiel sur votre ordinateur local.
  3. Suivez les instructions du document README.

Remerciements

Auteur : Kumar Varun

Contributeurs : Zubair Ansari, Kiran Palukuri, Santhosh Vuda