Journalisation et surveillance

Anthos GKE On-Prem inclut plusieurs options de journalisation et de surveillance des clusters, y compris des services gérés basés dans le cloud et des outils Open Source, mais aussi une compatibilité validée avec des solutions commerciales tierces. Cette page décrit ces options et fournit des conseils de base pour sélectionner la solution adaptée à votre environnement.

Présentation

Vous disposez de plusieurs options de journalisation et de surveillance pour vos clusters GKE On-Prem :

  • Cloud Logging et Cloud Monitoring, activés par les agents de cluster déployés avec GKE On-Prem
  • Prometheus et Grafana, activés par défaut dans les nouveaux clusters
  • Configurations validées avec des solutions tierces

Cloud Logging et Cloud Monitoring

Stackdriver est la solution d'observabilité intégrée pour Google Cloud. Elle offre une solution de journalisation entièrement gérée, la collecte de métriques, la surveillance, la création de tableaux de bord et les alertes. Stackdriver surveille les clusters GKE On-Prem de la même manière que les clusters GKE basés dans le cloud.

Les agents Stackdriver peuvent être configurés avec deux niveaux différents de journalisation et de surveillance :

  • Composants système uniquement (mode par défaut)
  • Stackdriver désactivé (avant la désactivation, consultez la page d'assistance pour savoir comment Stackdriver est utilisé à des fins d'assistance)

Stackdriver est une solution idéale pour les clients qui recherchent une solution unique et facile à configurer, puissante et basée sur le cloud. Stackdriver est vivement recommandé lorsque vous exécutez des charges de travail uniquement sur GKE On-Prem ou sur GKE et GKE On-Prem. Pour les applications avec des composants s'exécutant sur une infrastructure standard traditionnelle sur site et GKE On-Prem, vous pouvez envisager d'autres solutions pour une vue de bout en bout de ces applications.

  • Consultez la section Stackdriver pour en savoir plus sur l'architecture, la configuration et les données répliquées par défaut dans votre projet Google Cloud pour GKE On-Prem.
  • Pour plus d'informations sur ces services, consultez les pages dédiées à Cloud Logging et Cloud Monitoring.

Prometheus et Grafana

Prometheus et Grafana sont deux produits de surveillance Open Source populaires :

  • Prometheus recueille des métriques sur les applications et le système.
  • Alertmanager gère l'envoi d'alertes à l'aide de différents mécanismes.
  • Grafana est un outil de création de tableaux de bord.

Par défaut, Prometheus et Grafana s'exécutent sur chaque cluster d'administrateur et cluster d'utilisateur. Prometheus et Grafana sont recommandés pour les équipes d'application ayant déjà une expérience de ces produits, ou pour les équipes opérationnelles qui préfèrent conserver les métriques d'application dans le cluster à des fins de dépannage des problèmes de connexion réseau.

Solutions tierces

Google a collaboré avec plusieurs fournisseurs de solutions tierces de journalisation et de surveillance pour faire en sorte que leurs produits fonctionnent bien avec GKE On-Prem. Ces fournisseurs incluent notamment Datadog, Elastic et Splunk. D'autres solutions tierces validées seront ajoutées ultérieurement.

Les guides de solution suivants sont disponibles pour utiliser des solutions tierces avec GKE On-Prem :

Fonctionnement de Stackdriver pour GKE On-Prem

Cloud Logging et Cloud Monitoring sont installés et activés dans chaque cluster dès la création d'un cluster d'administrateur ou d'utilisateur.

Les agents Stackdriver incluent plusieurs composants sur chaque cluster :

  • Opérateur Stackdriver (stackdriver-operator-*) : gère le cycle de vie de tous les autres agents Stackdriver déployés sur le cluster.
  • Stackdriver Custom Resource créée automatiquement dans le cadre du processus d'installation de GKE On-Prem. Les utilisateurs peuvent modifier la ressource personnalisée pour mettre à jour les valeurs telles que l'ID du projet, le nom du cluster et l'emplacement du cluster à tout moment.
  • Stackdriver Log Aggregator (stackdriver-log-aggregator-*), un objet StatefulSet Fluentd qui envoie des journaux à l'API Cloud Logging. Si les journaux ne peuvent pas être envoyés, l'agrégateur de journaux met en mémoire tampon les entrées de journal, jusqu'à 200 Go, et tente de les renvoyer pendant 24 heures au maximum. Si le tampon est plein ou si l'agrégateur de journaux ne parvient pas à accéder à l'API Logging pendant plus de 24 heures, les journaux sont supprimés.
  • Agent de transfert de journaux Stackdriver (stackdriver-log-forwarder-*) : DaemonSet Fluentbit qui transfère les journaux de chaque machine vers l'agrégateur de journaux Stackdriver.
  • Collecteur de métriques Stackdriver (stackdriver-prometheus-k8s-) : objet Prometheus et Stackdriver Prometheus Sidecar StatefulSet qui envoie les métriques Prometheus à l'API Cloud Logging.
  • Collecteur de métadonnées Stackdriver (stackdriver-metadata-agent-) : déploiement qui envoie des métadonnées pour des ressources Kubernetes telles que des pods, des déploiements, des nœuds, etc… à l'API Stackdriver Resource Metadata. Ces données sont utilisées pour enrichir les requêtes de métriques en vous permettant d'effectuer des requêtes par nom de déploiement, nom de nœud ou même nom de service Kubernetes.

Vous pouvez afficher tous les agents installés par Stackdriver en exécutant la commande suivante :

  kubectl -n kube-system get pods | grep stackdriver

La sortie de la commande ressemble à ceci :

stackdriver-log-aggregator-0                  1/1     Running   0   4h31m
stackdriver-log-aggregator-1                  1/1     Running   0   4h28m
stackdriver-log-forwarder-bpf8g               1/1     Running   0   4h31m
stackdriver-log-forwarder-cht4m               1/1     Running   0   4h31m
stackdriver-log-forwarder-fth5s               1/1     Running   0   4h31m
stackdriver-log-forwarder-kw4j2               1/1     Running   0   4h29m
stackdriver-metadata-agent-cluster-level...   1/1     Running   0   4h31m
stackdriver-operator-76ddb64d57-4tcj9         1/1     Running   0   4h37m
stackdriver-prometheus-k8s-0                  2/2     Running   0   4h31m

Configurer des agents Stackdriver pour GKE On-Prem

Les agents Stackdriver installés avec GKE On-Prem collectent des données sur les composants système, en fonction de vos paramètres et de votre configuration, dans le but de résoudre les problèmes de clusters GKE On-Prem, dans l'un des modes suivants :

Composants système uniquement (mode par défaut)

Lors de l'installation, les agents Stackdriver sont configurés par défaut pour collecter les journaux et les métriques, y compris les détails des performances (par exemple, l'utilisation du processeur et de la mémoire) et les métadonnées similaires pour les composants système fournis par Google, y compris toutes les charges de travail du cluster d'administrateur et, pour les clusters d'utilisateur, les charges de travail dans les espaces de noms kube-system, gke-system, gke-connect, istio-system et config-management-system.

Stackdriver désactivé

Vous pouvez désactiver complètement les agents Stackdriver en supprimant la ressource personnalisée Stackdriver. Avant de désactiver Stackdriver, consultez la page d'assistance pour en savoir plus sur les conséquences que cela peut avoir sur les contrats de niveau de service de l'assistance Google Cloud.

Pour désactiver Stackdriver pour GKE On-Prem, procédez comme suit :

kubectl -n kube-system delete Stackdriver stackdriver

Les agents Stackdriver capturent les données stockées localement, suivant votre configuration de stockage et de conservation. Les données sont dupliquées dans le projet Google Cloud spécifié lors de l'installation, à l'aide d'un compte de service autorisé à écrire des données dans ce projet. Les agents Stackdriver peuvent être désactivés à tout moment comme décrit ci-dessus, et les données collectées par les agents Stackdriver peuvent être gérées et supprimées comme n'importe quelle autre métrique ou élément de données de journal, comme décrit dans la documentation de Stackdriver.

Configuration requise pour Stackdriver

Plusieurs éléments de configuration sont requis pour activer Stackdriver avec GKE On-Prem. Ces étapes sont incluses dans la section Préparer l'installation et sont répertoriées ci-dessous.

  1. Un espace de travail Cloud Logging doit être créé dans le projet Google Cloud. Pour ce faire, cliquez sur Monitoring dans la console Google Cloud et suivez le workflow.
  2. Vous devez activer les API Stackdriver suivantes :
    1. API Stackdriver
    2. API Cloud Monitoring
    3. API Cloud Logging
  3. Vous devez attribuer les rôles IAM suivants au compte de service utilisé par les agents Stackdriver :
    1. logging.logWriter
    2. monitoring.metricWriter
    3. stackdriver.resourceMetadata.writer

Tarifs

Anthos inclut une attribution gratuite supplémentaire pour Cloud Logging en plus de l'attribution gratuite standard pour Cloud Logging.

Pour plus d'informations et pour en savoir plus sur l'attribution de crédits pour les métriques Cloud Logging, contactez le service commercial au sujet des tarifs.

Fonctionnement de Prometheus et Grafana pour GKE On-Prem

Chaque cluster GKE On-Prem est créé avec une instance Prometheus et Grafana déployée par défaut.

Le serveur Prometheus est mis en place avec une configuration haute disponibilité comprenant deux instances dupliquées qui s'exécutent sur deux nœuds distincts. Les besoins en ressources sont ajustés pour accepter les clusters exécutant jusqu'à cinq nœuds, chacun gérant jusqu'à 30 pods qui diffusent des métriques personnalisées. Prometheus dispose d'un objet PersistentVolume dédié avec un espace disque préalloué afin de recevoir les données pour une période de conservation de quatre jours, plus un tampon de sécurité supplémentaire.

Le plan de contrôle d'administrateur et chaque cluster d'utilisateur disposent d'une pile de surveillance dédiée que vous pouvez configurer indépendamment. Chaque cluster d'administrateur et d'utilisateur inclut une pile de surveillance qui fournit un ensemble complet de fonctionnalités : Prometheus Server pour la surveillance, Grafana pour l'observabilité et Prometheus Alertmanager pour les alertes.

Tous les points de contrôle de surveillance, les données de métriques transférées et les API de surveillance sont sécurisés à l'aide de composants Istio utilisant des règles mTLS et RBAC. L'accès aux données de surveillance est limité aux administrateurs de cluster.

Métriques collectées par Prometheus

Prometheus collecte les métriques et métadonnées suivantes à partir du plan de contrôle d'administrateur et des clusters d'utilisateur :

  • Utilisation des ressources, telles que l'utilisation du processeur sur les pods et les nœuds
  • Métriques du plan de contrôle Kubernetes
  • Métriques des modules complémentaires et des composants système Kubernetes s'exécutant sur des nœuds, tels que kubelet
  • État du cluster, comme par exemple l'état des pods lors d'un déploiement
  • Métriques des applications.
  • Métriques des machines, comme par exemple réseau, entropie et inodes.

Surveillance multicluster

L'instance Prometheus et Grafana installée sur le cluster d'administration est spécialement configurée pour fournir des informations sur l'intégralité de l'instance GKE On-Prem, y compris sur le cluster d'administration et sur chacun des clusters d'utilisateur. Ainsi, vous pouvez effectuer les opérations suivantes :

  • Utiliser un tableau de bord Grafana pour accéder aux métriques de tous les clusters d'utilisateur et d'administrateur.
  • Afficher les métriques de clusters d'utilisateur individuels dans les tableaux de bord Grafana. Les métriques sont disponibles pour des requêtes directes en résolution complète.
  • Accéder aux métriques de niveau nœud et charge de travail des clusters d'utilisateur pour les requêtes agrégées, les tableaux de bord et les alertes (les métriques de charge de travail sont limitées aux charges de travail exécutées dans l'espace de noms kube-system).
  • Configurer des alertes pour des clusters spécifiques.