Résoudre les problèmes d'identifiants

Ce document fournit des informations pour vous aider à résoudre les problèmes d'autorisation et d'identification de l'agent Ops sur vos instances de VM Compute Engine.

Si l'agent OPS signale des erreurs d'accès ou d'autorisation, ou si l'agent semble fonctionner normalement mais qu'il n'y a pas de données, ou que vos règles d'alerte ne fonctionnent pas comme prévu, vérifiez que les identifiants de l'instance de VM sont corrects et qu'ils se rapportent au bon projet :

  • Si vous utilisez une instance de VM Compute Engine avec des identifiants standards (sans clé privée), il est peu probable que les données se trouvent dans le mauvais projet. Toutefois, vos identifiants risquent de ne pas être suffisants. Pour en savoir plus sur les identifiants, consultez la section Autoriser l'agent Ops. Pour valider vos identifiants, consultez la section Valider les identifiants Compute Engine.

  • Si vous utilisez des identifiants de clé privée sur votre instance Compute Engine, ils peuvent ne pas être valides ou provenir du mauvais projet. Pour en savoir plus sur les identifiants, consultez la section Autoriser l'agent Ops. Pour valider vos identifiants, consultez la section Valider les identifiants de clé privée.

Vérifier les identifiants Compute Engine

Utilisez la page Instances de VM Compute Engine de la console Google Cloud pour vérifier que votre instance de VM Compute Engine dispose des identifiants adéquats pour l'agent Ops. Les identifiants sont généralement ajoutés dans le compte de service par défaut de toutes les nouvelles instances de VM Compute Engine, mais il est possible d'écraser ces valeurs par défaut lors de la création d'une instance.

Dans le panneau de navigation de la console Google Cloud, sélectionnez Compute Engine, puis Instances de VM :

Accéder à la page Instances de VM

  1. Si nécessaire, modifiez le projet Google Cloud actuel pour qu'il soit associé à votre instance de VM Compute Engine. Par exemple, si vous êtes invité à activer la facturation, cela signifie que le projet en cours ne contient aucune instance de VM Compute Engine.
  2. Sur la page Instances de VM, cliquez sur le nom de votre instance de VM. La page des détails relatifs à votre instance de VM s'affiche.
  3. Sur la page Informations sur l'instance de VM, regardez sous l'en-tête Niveaux d'accès aux API Cloud :
    • Si "Autoriser l'accès complet à l'ensemble des API Cloud" s'affiche, vous disposez des identifiants appropriés.
    • Si vous voyez à côté de API Stackdriver Monitoring, un nom plus ancien pour l'API Cloud Monitoring, l'autorisation Écriture seule ou Complète, vous disposez des identifiants appropriés.
    • Dans tous les autres cas, le compte de service par défaut de votre instance ne dispose pas des identifiants requis par l'agent. Pour utiliser l'agent sur votre instance, vous devez ajouter des identifiants de clé privée pour votre compte de service. Pour savoir comment procéder, consultez la section Ajouter des identifiants.

Si vous disposez des identifiants par défaut corrects, passez à l'étape Effectuer l'installation sous Linux et Windows.

Vérifier les identifiants de clé privée

Pour vérifier que des identifiants de clé privée valides sont installés sur votre instance de VM, assurez-vous d'abord que le fichier d'identifiants existe à l'emplacement prévu, puis que les informations contenues dans le fichier d'identifiants sont valides. Il est possible de révoquer des identifiants précédemment valides sous la section IAM et administration > Comptes de service de la console Google Cloud. En cas d'absence d'identifiants valides, consultez la section Ajouter des identifiants pour remplacer les identifiants existants ou en ajouter de nouveaux.

Des identifiants sont-ils présents ?

Pour voir si des identifiants de clé privée pour votre compte de service sont présents dans votre instance, exécutez les commandes Linux suivantes sur celle-ci :

sudo cat $GOOGLE_APPLICATION_CREDENTIALS
sudo cat /etc/google/auth/application_default_credentials.json

Si l'une des commandes affiche un fichier comme celui présenté ci-dessous, votre instance peut contenir des identifiants de clé privée valides. Si les deux commandes affichent un fichier, le fichier indiqué par GOOGLE_APPLICATION_CREDENTIALS est celui qui sera utilisé.

{
  "type": "service_account",
  "project_id": "{your-project-id}",
  "private_key_id": "{your-private-key-id}",
  "private_key": "{your-private-key}",
  "client_email": "{your-project-number}-{your-key}@developer.gserviceaccount.com",
  "client_id": "{your-client-id}",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "{x509-cert-url}",
  "client_x509_cert_url": "{client-x509-cert-url}"
}

Si aucun fichier d'identifiants n'est présent, reportez-vous à la section Ajouter des identifiants.

Les identifiants sont-ils valides ?

Dans le fichier d'identifiants, le champ project_id correspond à votre projet Google Cloud, client_email identifie le compte de service dans le projet et private_key_id identifie la clé privée dans le service compte. Faites correspondre ces informations avec celles affichées dans la section IAM et administration > Comptes de service de la console Google Cloud.

Le fichier d'identifiants n'est pas valide si l'une des conditions suivantes est remplie :

  • Vous êtes en train de vérifier une instance de VM Compute Engine, mais le projet Google Cloud spécifié dans le fichier d'identifiants n'est pas celui qui contient votre instance.
  • Le compte de service répertorié n'existe pas. Il a peut-être été supprimé.
  • Les rôles appropriés n'ont pas été activés pour le compte de service répertorié. Celui-ci doit comporter au moins les rôles roles/monitoring.metricWriter (Rédacteur de métriques de surveillance) pour la collecte de métriques et roles/logging.logWriter (Rédacteur de journaux) pour l'écriture des journaux.
  • La clé privée n'existe pas. Elle a peut-être été révoquée.

Si le compte de service est correct, mais que la clé privée a été révoquée, vous pouvez créer une nouvelle clé privée et la copier sur votre instance. Sinon, vous devez créer un nouveau compte de service comme indiqué à la section Ajouter des identifiants.

Générer des identifiants

Si les identifiants ne sont pas valides, procédez comme suit :

  1. Pour chaque projet connecté contenant des instances devant être autorisées avec une clé privée (instances Compute Engine créées sans inclure le niveau d'accès https://www.googleapis.com/auth/monitoring.write) : Créer un compte de service et générer une clé privée, s'ils n'existent pas déjà. Suivez les instructions ci-dessous :
    1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Monitoring, puis  Paramètres de Monitoring :

      Accéder à la page Paramètres de Monitoring

    2. Sélectionnez l'onglet Résumé. Identifiez le projet contenant les ressources Compute Engine concernées et accédez à la console Google Cloud.
    3. Accédez à la page Comptes de service IAM de la console Google Cloud, sélectionnez votre projet Google Cloud, créez un compte de service, puis générez une nouvelle clé privée pour ce compte de service.

      Pour effectuer ces étapes, effectuez l'une des opérations suivantes :

      • Accédez à la page Comptes de service IAM, sélectionnez votre projet Google Cloud, puis suivez les étapes décrites dans la section Créer un compte de service :

        Accéder à la page Comptes de service IAM

      • Cliquez sur le bouton suivant, puis sélectionnez votre projet Google Cloud :

        Créer un compte de service et télécharger la clé

        Le bouton précédent automatise le processus de création et de téléchargement d'une clé sur votre système local pour le compte de service spécifique à l'agent. Si nécessaire, le processus crée également le compte de service requis et s'assure qu'il dispose des autorisations appropriées. Les comptes de service spécifiques à l'agent portent un nom semblable à stackdriver-1234@PROJECT_ID.iam.gserviceaccount.com. Vous êtes informé de l'achèvement de ces actions avec une boîte de dialogue semblable à celle-ci :

        Bannière indiquant à l'utilisateur qu'un compte de service et une clé ont été créés.

  2. Remplacez la clé privée sur les instances correspondant au compte de service en question.

    • Sous Linux, remplacez la clé privée située dans /etc/google/auth/application_default_credentials.json.
    • Sous Windows, remplacez la clé privée située dans C:\ProgramData\Google\Auth\application_default_credentials.json. Pour en savoir plus, consultez la section Copier la clé privée sur l'instance.
  3. Redémarrer l'agent

    • Sous Linux, exécutez sudo service stackdriver-agent restart.
    • Sous Windows, accédez à la console de gestion du service et redémarrez le service Cloud Monitoring.

Si vous avez plusieurs projets nécessitant de nouvelles clés privées, répétez cette procédure pour chacun d'eux.

Pour vérifier que la clé privée est correcte, consultez la section Des identifiants sont-ils présents ?, et, à savoir :

  • Lisez le fichier JSON de clé privée sur l'instance, par exemple (sous Linux) : sudo cat /etc/google/auth/application_default_credentials.json
  • assurez-vous que la valeur du champ project_id correspond à celle du projet surveillé pour lequel vous venez de générer des identifiants.