Utiliser les règles d'agent (bêta)

Vous créez et gérez des règles d'agent à l'aide du groupe de commandes gcloud beta compute instances ops-agents policies dans Google Cloud CLI. Les commandes de ce groupe utilisent la suite d'outils VM Manager de Compute Engine pour gérer les règles d'OS, ce qui peut automatiser le déploiement et la maintenance de configurations logicielles comme les agents Google Cloud Observability : l'agent Ops, l'ancien agent de surveillance et l'ancien agent de journalisation.

Créer une règle d'agent

Pour créer une règle d'agent à l'aide de Google Cloud CLI, procédez comme suit :

  1. Si vous ne l'avez pas déjà fait, installez Google Cloud CLI.

    Ce document décrit le groupe de commandes beta permettant de gérer les règles d'agent.

  2. Si vous ne l'avez pas déjà fait, installez le composant beta de gcloud CLI :

    gcloud components install beta
    

    Pour vérifier si le composant beta est installé, exécutez la commande suivante :

    gcloud components list
    

    Si vous avez déjà installé le composant beta, assurez-vous de disposer de la dernière version :

    gcloud components update
    
  3. Utilisez le script suivant pour activer les API et définir les autorisations permettant d'utiliser Google Cloud CLI : set-permissions.sh.

    Pour en savoir plus sur ce script, consultez Le script set-permissions.sh.

  4. Pour créer une règle, utilisez la commande gcloud beta compute instances ops-agents policies create. Pour en savoir plus sur la syntaxe de la commande, consultez la documentation de gcloud beta compute instances ops-agents policies create.

    Pour obtenir des exemples de formats de la commande, consultez la section Exemples de la documentation Google Cloud CLI.

    Pour en savoir plus sur les autres commandes du groupe de commandes et les options disponibles, consultez la documentation de gcloud beta compute instances ops-agents policies.

Bonnes pratiques relatives à l'utilisation des règles d'agent

Pour contrôler l'impact du déploiement sur les systèmes de production, nous vous recommandons de spécifier des étiquettes d'instances et des zones afin de filtrer les instances auxquelles la règle s'applique.

Si vous créez une règle pour l'agent Ops, assurez-vous que l'ancien agent Logging ou Monitoring n'est pas installé sur vos VM. L'exécution de l'agent Ops et des anciens agents sur la même VM peut entraîner l'ingestion de journaux en double ou créer un conflit dans l'ingestion des métriques. Si nécessaire, désinstallez l'agent Monitoring et désinstallez l'agent Logging avant de créer une règle pour installer l'agent Ops.

Voici un exemple de plan de déploiement par étapes pour les VM Debian 11 dans un projet appelé my_project :

Phase 1 : Créez une règle nommée ops-agents-policy-safe-rollout pour installer l'agent Ops sur toutes les VM portant les étiquettes env=test et app=myproduct.

gcloud beta compute instances \
    ops-agents policies create ops-agents-policy-safe-rollout \
    --agent-rules="type=ops-agent,version=current-major,package-state=installed,enable-autoupgrade=true" \
    --os-types=short-name=debian,version=11 \
    --group-labels=env=test,app=myproduct \
    --project=my_project

Pour en savoir plus sur la spécification du système d'exploitation, consultez la page gcloud beta compute instances ops-agents policies create.

Phase 2 : mettez à jour cette règle pour cibler les VM d'une même zone comportant les libellés env=prod et app=myproduct.

gcloud beta compute instances \
    ops-agents policies update ops-agents-policy-safe-rollout \
    --group-labels=env=prod,app=myproduct \
    --zones=us-central1-c \

Phase 3 : mettre à jour cette règle pour effacer le filtre des zones et la déployer globalement.

gcloud beta compute instances \
    ops-agents policies update ops-agents-policy-safe-rollout \
    --clear-zones

Règles sur les VM antérieures à OS Config

Vous devrez peut-être installer et configurer manuellement l'agent OS Config sur les VM antérieures à OS Config. Pour savoir comment installer et valider manuellement l'agent OS Config, consultez la checklist de validation de VM Manager.

Résoudre les problèmes liés aux règles des agents bêta

Cette section fournit des informations pour vous aider à résoudre les problèmes liés aux règles d'agent bêta pour l'agent Ops, l'ancien agent Monitoring et l'ancien agent Logging.

Les commandes ops-agents policy échouent

Lorsqu'une commande gcloud beta compute instances ops-agents policies échoue, la réponse affiche une erreur de validation. Corrigez ces erreurs en corrigeant les arguments de commande et les options, comme indiqué par le message d'erreur.

Outre les erreurs de validation, vous pouvez rencontrer des erreurs indiquant les conditions suivantes :

Les sections suivantes décrivent ces conditions plus en détail.

Autorisation IAM insuffisante

Si une commande gcloud beta compute instances ops-agents policies échoue et affiche une erreur d'autorisation, assurez-vous d'avoir exécuté le script set-permissions.sh comme décrit dans la section Créer une règle d'agent pour configurer les rôles de règle OS Config :

Pour en savoir plus sur le script set-permissions.sh, consultez Le script set-permissions.sh.

L'API OS Config n'est pas activée

Voici un exemple d'erreur :

API [osconfig.googleapis.com] not enabled on project PROJECT_ID.
Would you like to enable and retry (this will take a few minutes)?
(y/N)?

Vous pouvez entrer y pour activer l'API, ou vous pouvez exécuter le script set-permissions.sh, décrit dans la section Créer une règle d'agent, afin d'accorder toutes les autorisations nécessaires. Si vous saisissez y à l'invite du message d'erreur, vous devez quand même exécuter le script set-permissions.sh pour définir les autorisations requises.

Pour vérifier que l'API OS Config est activée pour le projet, exécutez les commandes suivantes :

gcloud services list --project PROJECT_ID | grep osconfig.googleapis.com

Voici le résultat attendu :

osconfig.googleapis.com    Cloud OS Config API

La règle n'existe pas

Voici un exemple d'erreur :

NOT_FOUND: Requested entity was not found

Cette erreur peut signifier que la règle n'a jamais été créée, qu'elle a été supprimée ou que l'ID de règle spécifié est incorrect. Assurez-vous que le POLICY_ID utilisé dans une commande gcloud beta compute instances ops-agents policies describe, update ou delete correspond à une stratégie existante. Pour obtenir la liste des règles d'agent, utilisez la commande gcloud beta compute instances ops-agents policies list.

La règle est créée, mais elle semble n'avoir aucun effet

Les agents OS Config sont déployés sur chaque instance Compute Engine afin de gérer les packages pour les agents Logging et Monitoring. Cette règle peut sembler sans effet si l'agent OS Config sous-jacent n'est pas installé.

Linux

Pour vérifier que l'agent OS Config est installé, exécutez la commande suivante :

gcloud compute ssh instance-id \
    --project project-id \
    -- sudo systemctl status google-osconfig-agent

Voici un exemple de sortie :

    google-osconfig-agent.service - Google OSConfig Agent
    Loaded: loaded (/lib/systemd/system/google-osconfig-agent.service; enabled; vendor preset:
    Active: active (running) since Wed 2020-01-15 00:14:22 UTC; 6min ago
    Main PID: 369 (google_osconfig)
     Tasks: 8 (limit: 4374)
    Memory: 102.7M
    CGroup: /system.slice/google-osconfig-agent.service
            └─369 /usr/bin/google_osconfig_agent

Windows

Pour vérifier que l'agent OS Config est installé, exécutez la commande suivante :

  1. Connectez-vous à votre instance via RDP ou un outil similaire, et connectez-vous à Windows.

  2. Ouvrez un terminal PowerShell, puis exécutez la commande PowerShell suivante. Vous n'avez pas besoin de droits d'administrateur.

    Get-Service google_osconfig_agent
    

Voici un exemple de sortie :

    Status   Name               DisplayName
    ------   ----               -----------
    Running  google_osconfig_a… Google OSConfig Agent

Si l'agent OS Config n'est pas installé, vous utilisez peut-être un système d'exploitation non compatible avec VM Manager. Le document Détails des systèmes d'exploitation de Compute Engine indique les fonctionnalités de VM Manager compatibles avec chaque système d'exploitation Compute Engine.

Si le système d'exploitation est compatible avec VM Manager, vous pouvez installer l'agent OS Config manuellement.

L'agent OS Config est installé, mais il n'installe pas les agents Ops

Pour vérifier si des erreurs se produisent lorsque l'agent OS Config applique des règles, vous pouvez consulter le journal de l'agent OS Config. Vous pouvez le faire à l'aide de l'explorateur de journaux ou en utilisant SSH ou RDP pour vérifier les instances Compute Engine individuelles.

Pour afficher les journaux de l'agent OS Config dans l'explorateur de journaux, utilisez le filtre suivant :

resource.type="gce_instance"
logId(OSConfigAgent)

Pour afficher les journaux de l'agent OS Config, procédez comme suit :

CentOS, RHEL,
SLES, SUSE

Exécutez la commande suivante :

gcloud compute ssh INSTANCE_ID \
    --project PROJECT_ID \
    -- sudo cat /var/log/messages \
       | grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"

Debian, Ubuntu

Exécutez la commande suivante :

gcloud compute ssh INSTANCE_ID \
    --project PROJECT_ID \
    -- sudo cat /var/log/syslog \
       | grep "OSConfigAgent\|google-fluentd\|stackdriver-agent"

Windows

  1. Connectez-vous à votre instance via RDP ou un outil similaire, et connectez-vous à Windows.

  2. Ouvrez l'application Event Viewer, puis sélectionnez Windows Logs > Application (Journaux Windows > Application), et recherchez les journaux pour lesquels Source est égal à OSConfigAgent.

Si une erreur s'est produite lors de la connexion au service OS Config, assurez-vous d'exécuter le script set-permissions.sh comme décrit dans la section Créer une règle d'agent pour configurer les métadonnées OS Config.

Pour vérifier que les métadonnées OS Config sont activées, exécutez la commande suivante :

gcloud compute project-info describe \
    --project PROJECT_ID \
    | grep "enable-osconfig\|enable-guest-attributes" -A 1

Voici le résultat attendu :

- key: enable-guest-attributes
  value: 'TRUE'
- key: enable-osconfig
  value: 'TRUE'

Les agents d'observabilité sont installés, mais ne fonctionnent pas correctement

Pour en savoir plus sur le débogage d'agents spécifiques, consultez les documents suivants :

Activer les journaux de niveau débogage pour l'agent OS Config

Il peut être utile d'activer la journalisation de niveau débogage dans l'agent OS Config lorsque vous signalez un problème.

Vous pouvez définir les métadonnées osconfig-log-level: debug pour activer la journalisation au niveau du débogage pour l'agent OS Config. Les journaux collectés contiennent plus d'informations pour faciliter l'investigation.

Afin d'activer la journalisation au niveau du débogage pour l'ensemble du projet, exécutez la commande suivante :

gcloud compute project-info add-metadata \
    --project PROJECT_ID \
    --metadata osconfig-log-level=debug

Pour activer la journalisation au niveau du débogage sur une VM, exécutez la commande suivante :

gcloud compute instances add-metadata INSTANCE_ID \
    --project PROJECT_ID \
    --metadata osconfig-log-level=debug

Scripts d'aide

Cette section fournit des informations supplémentaires sur les scripts d'assistance décrits dans ce document :

Le script set-permissions.sh

Après avoir téléchargé le script set-permissions.sh, vous pouvez l'utiliser pour effectuer les actions suivantes, en fonction des arguments que vous fournissez :

Les exemples suivants illustrent quelques invocations courantes du script. Pour en savoir plus, consultez les commentaires dans le script lui-même.

Pour activer les API, accorder les rôles nécessaires au compte de service par défaut et activer les métadonnées OS Config pour un projet, exécutez le script comme suit :

bash set-permissions.sh --project=PROJECT_ID

Pour en plus accorder l'un des rôles OS Config à un utilisateur qui ne dispose pas du rôle Propriétaire (roles/owner) sur le projet, exécutez le script comme suit :

bash set-permissions.sh --project=PROJECT_ID \
  --iam-user=USER_EMAIL \
  --iam-permission-role=guestPolicy[Admin|Editor|Viewer]

Pour en plus accorder l'un des rôles OS Config à un compte de service autre que celui par défaut, exécutez le script comme suit :

bash set-permissions.sh --project=PROJECT_ID \
  --iam-service-account=SERVICE_ACCT_EMAIL \
  --iam-permission-role=guestPolicy[Admin|Editor|Viewer]

Le script diagnose.sh

À partir d'un ID de projet, d'un ID d'instance Compute Engine et de l'ID de règle de l'agent, le script diagnose.sh collecte automatiquement les informations nécessaires pour diagnostiquer les problèmes liés à la règle :

  • Version de l'agent OS Config
  • Règle d'invité OS Config sous-jacente
  • Règles applicables à cette instance Compute Engine
  • Dépôts de packages de l'agent, qui sont extraits vers cette instance Compute Engine

Pour appeler le script, exécutez la commande suivante :

bash diagnose.sh --project-id=PROJECT_ID \ 
  --gce-instance-id=INSTANCE_ID \
  --policy-id=POLICY_ID 

Intégration de Terraform

La prise en charge de Terraform repose sur les commandes de Google Cloud CLI. Pour créer une règle d'agent à l'aide de Terraform, suivez les instructions du module Terraform.