Surveillance des données de journal Kubernetes avec OCI Logging Analytics

Kubernetes fournit une plate-forme extrêmement robuste et personnalisable pour la gestion du déploiement et de l'évolutivité automatiques des charges de travail en conteneur. La création d'un système de surveillance et de dépannage pour l'ensemble de cet environnement est une tâche très difficile, qui peut prendre un temps précieux aux équipes de développement et informatiques. 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 déployable automatiquement. Oracle Cloud Infrastructure Logging Analytics comble ce fossé en matière 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 cloud natives. Envoyez les données de journal de vos clusters Kubernetes sur site et d'Oracle Cloud Infrastructure Kubernetes Engine (également appelé Kubernetes Engine 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 comprenant des composants nombreux et en constante évolution répondant aux besoins de l'entreprise.

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

Architecture

Cette architecture montre comment utiliser Oracle Cloud Infrastructure Logging Analytics pour surveiller une plate-forme Kubernetes et des applications natives du cloud.

Le diagramme suivant est un exemple de topologie d'un cluster 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 kubernetes et application.

Description de kubernetes-master-worker-nodes.png
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 clusters Kubernetes sur site et Oracle Cloud Infrastructure Kubernetes Engine (également appelé Kubernetes Engine ou OKE) avec OCI Logging Analytics. Cette solution offre un ensemble de différents journaux d'un cluster Kubernetes dans OCI Logging Analytics et propose des analyses enrichies en plus des journaux collectés. Vous pouvez personnaliser la collection de journaux en modifiant la configuration prête à l'emploi.

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

k8s-oke-monitoring-oracle.zip

L'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 Oracle Cloud 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 précise, incluant 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 (entre pays, voire continents).

  • Compartiment

    Les compartiments sont des partitions logiques inter-régionales au sein d'une location Oracle Cloud Infrastructure. Utilisez des compartiments afin d'organiser, de contrôler l'accès et de définir des quotas d'utilisation pour les 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é.

  • Equilibreur de charge

    Le service Oracle Cloud Infrastructure Load Balancing fournit une répartition de trafic automatique à partir d'un seul point d'entrée vers plusieurs serveurs dans le back-end.

  • Passerelle de service

    La passerelle de service fournit un accès à partir d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic entre le VCN et le service Oracle passe par la structure du réseau Oracle et ne traverse pas 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, la requête, la visualisation et les alertes pour les journaux de n'importe quel composant informatique exécuté sur un cloud sur site, OCI ou 3e partie.

  • Source de Logging Analytics

    La source Logging Analytics 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 pour fournir des fonctionnalités d'analyse plus approfondies.

  • Pods système Kubernetes

    Les pods 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 un stockage partagé et des ressources réseau, ainsi que des règles d'exécution des conteneurs.

  • Pods utilisateur

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

  • Services de plan de contrôle et pods

    Services de plan de contrôle et pods de plate-forme Kubernetes. Le plan de contrôle gère les noeuds de processus actif et les pods dans le cluster Kubernetes. Les noeuds de processus actif exécutent les applications en conteneur. Chaque cluster comporte au moins un noeud de processus actif. Les noeuds de processus actif hébergent les pods qui sont les composants de la charge globale de l'application.

  • Services de système d'exploitation de noeud

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

  • Pods de collecteur de journaux et d'objets

    Les pods de collecteur de journaux et d'objets sont constitués d'ensembles de répliques, d'ensembles FluentD et de démon.

    • FluentD Collecteur

      FluentD est un collecteur de données open source qui fournit une couche de journalisation unifiée entre les sources de données et les systèmes back-end. Il permet une collecte et une consommation unifiées des données pour la création de pipelines de traitement des données. Cette architecture utilise un conteneur FluentD en conteneur qui s'exécute en tant qu'ensemble de démon et de réplication sur le cluster kubernetes. Il utilise le module d'extension de sortie fluentd d'analyse de journalisation pour télécharger les journaux vers OCI Logging Analytics.

    • Module d'extension FluentD Logging Analytics

      Module d'extension de sortie FluentD qui se connecte au service OCI Logging Analytics dans votre location pour télécharger ou assimiler 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 cluster. Dans cette architecture, les états d'objet kubernetes suivants sont collectés en tant que journaux pour l'analyse historique et le dépannage :

    • Ensemble de démons Kubernetes

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

    • Ensemble de répliques Kubernetes

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

  • 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.

  • Connecteurs de service

    Service Connector Hub est une plate-forme de bus de messages cloud. 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 de connecteurs de service. Un connecteur de service spécifie 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 fournies une fois les tâches spécifiées 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 cloud qui vous permettent de créer et d'exécuter un large éventail d'applications dans un environnement hautement disponible et constamment hautes performances.

  • Journaux de service et d'audit

    Les journaux de service et d'audit sont capturés dans le service OCI Logging. OCI Logging est un service hautement évolutif et entièrement géré qui est utilisé pour accéder aux journaux de service VCN et Load Balancer via le connecteur de service.

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

Oracle Cloud Infrastructure Kubernetes Engine dispose de services intégrés dans lesquels chacun a des responsabilités différentes et s'exécute sur des noeuds du cluster en tant que déploiements ou DaemonSets.

Services système Kubernetes Services système Linux Plan de contrôle Kubernetes Objets Kubernetes (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
  • Secure logs
  • Journaux CRON
  • Journaux de messagerie
  • Journaux d'audit
  • 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 le cluster sont collectés. Reportez-vous à Recommandations pour personnaliser ce comportement.

Remarques :

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 OCI Kubernetes Engine (également appelé OKE). Vous pouvez activer les journaux de plan de contrôle à partir de clusters Kubernetes autres que 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, OCI Infrastructure, Hosts Logs.

  • Gestion des coûts

    Le service Oracle Cloud Infrastructure (OCI) Logging Analytics est facturé sur le volume de données dans le stockage actif et d'archivage. Pour permettre le dépannage des problèmes quotidiens et bénéficier des avantages de la détection d'anomalies, de la détection de modèles et d'autres fonctionnalités de machine learning, nous vous 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'archivage. Les journaux d'archivage stockés peuvent être rappelés à la demande rapidement.

  • FluentD Multi-salariés

    Configurez FluentD en mode multiprocesseur pour les journaux sensibles au temps.

  • Journaux d'application personnalisés

    Cette solution capture automatiquement tous les journaux générés par les applications exécutées dans un cluster Kubernetes. Par défaut, ces journaux sont mis en correspondance avec la source de journal 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 afin d'extraire les champs requis et d'attacher des libellés de problème aux journaux.

  • Authentification

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

Points à prendre en compte

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

  • Performances

    Les performances des requêtes sont basées sur la plage horaire et le nombre d'opérations, telles que les filtres, le regroupement, etc. Pour de meilleures performances de requête, il est recommandé d'enrichir les journaux avec des libellés et des champs spécifiques au moment de l'assimilation. 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 (RBAC)

    Personnalisez les définitions de source de journal pour filtrer les informations d'identification personnelle et activer l'enrichissement par 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 barre pour le déploiement d'Oracle Cloud Infrastructure Logging Analytics DaemonSets et ReplicaSets sont disponibles dans GitHub.

  1. Accédez à 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