Ajuster le débit des journaux


Ce document décrit le débit de journalisation par défaut et comment l'augmenter.

Lorsque la journalisation système est activée, un agent Logging dédié est automatiquement déployé et géré. Il s'exécute sur tous les nœuds GKE d'un cluster pour collecter les journaux, ajoute des métadonnées utiles sur le conteneur, le pod et le cluster, puis envoie les journaux à Cloud Logging à l'aide d'un agent basé sur fluentbit.

L'agent Logging dédié fournit un débit d'au moins 100 Kio par seconde pour les journaux système et de charge de travail. Si un nœud est sous-utilisé, en fonction du type de charge de journal (par exemple, entrées de journal textuelles ou structurées, très peu de conteneurs sur le nœud ou de nombreux conteneurs), l'agent Logging dédié peut fournir un débit jusqu'à 500 Kio par seconde ou plus. De plus, dans les clusters exécutant la version 1.23.13-gke.1000 ou ultérieure du plan de contrôle GKE, l'agent Logging autorise un débit jusqu'à 10 Mio par seconde sur les nœuds comportant au moins deux cœurs de processeur inutilisés. Sachez toutefois qu'à des débits plus élevés, certains journaux peuvent être perdus.

Identifier les nœuds dont le débit de journalisation est plus élevé

Par défaut, les clusters GKE collectent des métriques système. La métrique système kubernetes.io/node/logs/input_bytes fournit le nombre d'octets de journaux générés par seconde sur un nœud. Cette métrique peut vous aider à choisir la variante d'agent de journalisation la plus adaptée à déployer dans votre cluster ou vos pools de nœuds.

Pour afficher l'historique du débit de journalisation pour chaque nœud de votre cluster, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Explorateur de métriques :

    Accéder à l'explorateur de métriques

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.

  2. Dans le champ Sélectionner une métrique, sélectionnez kubernetes.io/node/logs/input_bytes.

  3. Dans le champ Grouper par, sélectionnez project_id, emplacement, cluster_name, et node_name.

  4. Cliquez sur OK.

  5. Triez éventuellement la liste des métriques par ordre décroissant en cliquant sur l'en-tête de colonne Valeur au-dessus de la liste des métriques.

Pour comprendre le volume de journalisation dû aux composants système ou aux charges de travail s'exécutant sur le nœud, vous pouvez également effectuer un regroupement selon le libellé de métrique type.

Activer la journalisation à haut débit

Si l'un des nœuds GKE nécessite un débit de journalisation de plus de 100 Kio par seconde et que votre cluster GKE Standard utilise le plan de contrôle version 1.23.13-gke.1000 ou ultérieure, vous pouvez configurer GKE pour déployer une configuration alternative de l'agent Logging conçue pour maximiser le débit de journalisation. Cette variante avec débit maximal de Logging autorise un débit jusqu'à 10 Mio par seconde et par nœud. Vous pouvez déployer cet agent Logging à haut débit sur tous les nœuds d'un cluster ou sur tous les nœuds d'un pool de nœuds.

Cette configuration à haut débit consommera des ressources de processeur et de mémoire supplémentaires.

CLI gcloud

Pour activer la journalisation à haut débit sur tous les nœuds d'un nouveau cluster:

gcloud container clusters create CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=MAX_THROUGHPUT \
    --machine-type=MACHINE_TYPE

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du nouveau cluster
  • COMPUTE_LOCATION : emplacement Compute Engine du nouveau cluster.
  • MACHINE_TYPE : un type de machine disposant de suffisamment de processeurs pour l'agent Logging, tel que e2-standard-8.

Tous les nouveaux pools de nœuds de ce cluster, y compris le pool de nœuds par défaut, déploieront l'agent Logging à haut débit.

Pour vérifier si la journalisation à haut débit est déjà définie pour un cluster existant, utilisez la commande gcloud container cluster describe:

gcloud container clusters describe CLUSTER_NAME \
   --location=COMPUTE_LOCATION  \
   --format="value(nodePoolDefaults[].loggingConfig.variantConfig.variant)"

Remplacez les éléments suivants :

Pour configurer la journalisation à haut débit pour un cluster existant, utilisez la commande gcloud container clusters update :

gcloud container clusters update CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=MAX_THROUGHPUT

Remplacez les éléments suivants :

Pour créer un pool de nœuds qui utilise l'agent Logging à haut débit, exécutez la commande gcloud container node-pools create:

gcloud container node-pools create NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=MAX_THROUGHPUT

Remplacez les éléments suivants :

  • NODEPOOL_NAME : nom du nouveau pool de nœuds.
  • CLUSTER_NAME : nom du cluster.
  • COMPUTE_LOCATION : emplacement Compute Engine du nouveau cluster.

Pour vérifier si la journalisation à haut débit est déjà définie pour un pool de nœuds existant, utilisez la commande gcloud container node-pools describe:

gcloud container node-pools describe NODEPOOL_NAME \
   --cluster=CLUSTER_NAME \
   --location=COMPUTE_LOCATION  \
   --format="value(config.loggingConfig.variantConfig.variant)"

Remplacez les éléments suivants :

Pour mettre à jour un pool de nœuds existant, utilisez la commande gcloud container node-pools update.

gcloud container node-pools update NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=MAX_THROUGHPUT

Remplacez les éléments suivants :

Terraform

Les blocs de code suivants spécifient comment déclarer des pools de nœuds avec ou sans journalisation à haut débit.

Pour gérer explicitement les pools de nœuds, vous devez spécifier votre cluster sans pool de nœuds par défaut.

resource "google_container_cluster" "with_example_logging_variants" {
  provider           = google
  name               = "CLUSTER_NAME"
  location           = "COMPUTE_LOCATION"
  initial_node_count = 1
  remove_default_node_pool = true # We want to manage our node pools separately.
}

Pour spécifier un pool de nœuds utilisant l'agent à haut débit, utilisez le champ node_config pour spécifier la variante de l'agent Logging en tant que MAX_THROUGHPUT et un type de machine approprié:

resource "google_container_node_pool" "with_example_logging_variant" {
  provider = google
  name     = "example-node-pool-with-htl"
  cluster  = google_container_cluster.with_example_logging_variants.name
  location = "COMPUTE_LOCATION"
  node_config {
    logging_variant = "MAX_THROUGHPUT"
    # Use a machine type with enough CPU to accommodate the high-throughput agent, such as e2-standard-8.
    machine_type = "e2-standard-8"
  }
  node_count = 1
}

Pour spécifier un pool de nœuds utilisant l'agent par défaut, utilisez le champ node_config pour spécifier la variante de l'agent Logging en tant que DEFAULT:

resource "google_container_node_pool" "with_default_logging_variant" {
  provider = google
  name     = "example-node-pool-with-default-logging"
  cluster  = google_container_cluster.with_example_logging_variants.name
  location = "COMPUTE_LOCATION"
  node_config {
    logging_variant = "DEFAULT"
  }
  node_count = 1
}

Désactiver la journalisation à haut débit

Si vous ne souhaitez plus utiliser l'agent Logging à haut débit, déployez l'agent Logging par défaut sur le cluster ou le pool de nœuds.

CLI gcloud

Transmettez l'option --logging-variant=DEFAULT lorsque vous créez ou mettez à jour un cluster ou un pool de nœuds.

Pour utiliser l'agent de journalisation par défaut sur tous les nœuds d'un nouveau cluster:

  gcloud container clusters create CLUSTER_NAME \
      --location=COMPUTE_LOCATION \
      --logging-variant=DEFAULT \
      --machine-type=MACHINE_TYPE

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du nouveau cluster
  • COMPUTE_LOCATION : emplacement Compute Engine du nouveau cluster.
  • MACHINE_TYPE : un type de machine disposant de suffisamment de processeurs pour l'agent Logging, tel que e2-standard-8.

Pour utiliser l'agent de journalisation par défaut sur un cluster existant, utilisez la commande gcloud container clusters update :

gcloud container clusters update CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=DEFAULT

Remplacez les éléments suivants :

Pour utiliser l'agent de journalisation par défaut pour un nouveau pool de nœuds, exécutez la commande gcloud container node-pools create:

gcloud container node-pools create NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=DEFAULT

Remplacez les éléments suivants :

  • NODEPOOL_NAME : nom du nouveau pool de nœuds.
  • CLUSTER_NAME : nom du cluster.
  • COMPUTE_LOCATION : emplacement Compute Engine du nouveau cluster.

Pour mettre à jour un pool de nœuds existant, utilisez la commande gcloud container node-pools update:

gcloud container node-pools update NODEPOOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=COMPUTE_LOCATION \
    --logging-variant=DEFAULT

Remplacez les éléments suivants :

Terraform

Si vous ne souhaitez plus que Terraform crée des pools de nœuds qui utilisent l'agent Logging à haut débit, définissez le champ logging_variant sur DEFAULT.

Étape suivante