Résoudre les problèmes liés aux journaux Apigee manquants dans Cloud Logging

Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Il n'existe pas de documentation Apigee Edge équivalente pour ce sujet.

Symptôme

L'envoi de journaux d'API Apigee à Cloud Logging est un cas d'utilisation courant. Cela se fait généralement via la règle MessageLogging ou la règle ServiceCallout. Dans les deux cas, Apigee utilise l'API Cloud Logging pour écrire les journaux.

Dans certains cas, les journaux d'API Apigee peuvent ne pas s'afficher dans Cloud Logging.

Message d'erreur

Aucun message d'erreur ne s'affiche.

Causes possibles :

Cause Description Instructions de dépannage applicables
L'API Cloud Logging n'est pas activée. Assurez-vous d'avoir activé l'API Cloud Logging dans le projet Google Cloud de votre organisation Apigee. Apigee et Apigee hybride
L'API IAM Service Account Credentials n'est pas activée Assurez-vous d'avoir activé l'API IAM Service Account Credentials dans le projet Google Cloud de votre organisation Apigee. Apigee et Apigee hybride
Compte de service proxy mal configuré. Le compte de service utilisé au moment du déploiement (Apigee) ou dans la configuration de l'environnement d'exécution (Apigee hybrid) a peut-être été supprimé/mal configuré. Apigee et Apigee hybride
Nom de projet incorrect dans la configuration de la règle. Le nom du projet dans la configuration de la règle est différent de celui associé à l'organisation Apigee. Apigee et Apigee hybride
Rôles/autorisations manquants pour le compte de service d'exécution. Pour Apigee hybrid, assurez-vous que le compte de service d'exécution possède le rôle Créateur de jetons du compte de service. Ce rôle est requis pour utiliser l'authentification Google. Apigee hybrid
La taille de l'entrée de journal dépasse la limite Cloud Logging autorisée. Cloud Logging a une limite de taille d'entrée de 256 Ko qui ne peut pas être modifiée. Apigee et Apigee hybride
Épuisement du quota de requêtes d'écriture par minute pour l'API Cloud Logging Assurez-vous de ne pas dépasser la valeur de quota de requêtes d'écriture par minute pour l'API Cloud Logging dans votre projet Google Cloud. Apigee et Apigee hybride

Cause : L'API Cloud Logging n'est pas activée

Diagnostic

Vérifiez que l'API Cloud Logging est activée. Pour savoir comment répertorier les services et les API activés dans la console Google Cloud, consultez la section Répertorier les services activés.

Solution

Si l'API Cloud Logging n'est pas activée, activez-la en suivant les étapes décrites sur la section Activer des services. L'activation de l'API peut prendre quelques minutes.

Si vous ne parvenez pas à résoudre le problème où les journaux ne sont pas affichés dans Cloud Logging en raison de la non activation de l'API Cloud Logging, consultez la section Vous devez collecter des informations de diagnostic.

Cause: L'API IAM Service Account Credentials n'est pas activée

Diagnostic

Vérifiez que l'API d'identifiants de compte de service IAM est activée. Pour savoir comment répertorier les services et les API activés dans la console Google Cloud, consultez la section Répertorier les services activés.

Solution

Si l'API IAM Service Account Credentials n'est pas activée, activez-la en suivant les étapes décrites sur la section Activer des services. L'activation de l'API peut prendre quelques minutes.

Si vous ne parvenez pas à résoudre le problème où les journaux ne sont pas affichés dans Cloud Logging en raison de la non activation de l'API Credentials pour les comptes de service IAM, consultez la section Vous devez collecter des informations de diagnostic.

Cause : Compte de service proxy mal configuré

Diagnostic

Apigee

  1. Recherchez le nom du compte de service.
    1. En utilisant l'UI Apigee, procédez comme suit :
      1. Cliquez sur Develop > API Proxies (Développer > Proxys d'API), puis sur un nom de proxy. Par exemple, TurboBooks.
      2. Sous Deployments (Déploiements), le nom du compte de service (Service Account) s'affiche.

    2. En utilisant l'API Apigee, procédez comme suit :

      Émettez l'appel d'API Apigee suivant :

      curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/PROXY_NAME/revisions/REVISION_NUMBER/deployments"

      Remplacez les éléments suivants :

      • ORG_NAME : nom de votre organisation. Par exemple, apigee-example-org.
      • ENV_NAME : nom de l'environnement. Par exemple, myenv.
      • PROXY_NAME : nom du proxy Par exemple, TurboBooks.
      • REVISION_NUMBER : numéro de révision. Par exemple, 4.

      Par exemple :

      curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/apigee-example-org/environments/myenv/apis/TurboBooks/revisions/4/deployments"

      Un résultat semblable au suivant s'affiche :

      {
        "environment": "myenv",
        "apiProxy": "TurboBooks",
        "revision": "4",
        "deployStartTime": "1687408163394",
        "state": "READY",
        "instances": [
          {
            "instance": "apiginstance",
            "deployedRevisions": [
              {
                "revision": "4",
                "percentage": 100
              }
          .
          .
          .
          .
        "serviceAccount": "projects/-/serviceAccounts/envsa-79@apigee-example-org.iam.gserviceaccount.com"
      }

      serviceAccount est le compte de service associé au proxy d'API.

  2. Vérifiez les éléments suivants pour ce compte de service proxy :
    1. Ce compte de service doit appartenir au même projet Google Cloud que celui que vous avez utilisé pour créer votre organisation Apigee. Par exemple, apigee-example-org.
    2. L'utilisateur qui déploie le proxy dispose de l'autorisation iam.serviceAccounts.actAs sur ce compte de service.
    3. Le compte de service proxy dispose des autorisations nécessaires pour appeler le service Cloud Logging.
      • Pour obtenir la liste des rôles, consultez la section Rôles Logging.
      • Pour savoir comment afficher les autorisations du compte de service proxy, consultez la section Afficher l'accès actuel.

Apigee hybrid

Pour Apigee hybrid, en plus des étapes répertoriées dans la section Apigee, ouvrez votre fichier overrides.yaml et assurez-vous qu'un compte de service est spécifié sous chaque environnement nécessitant l'authentification Google. Par exemple :

envs:
  - name: "ENVIRONMENT_NAME"
    serviceAccountPaths:
      runtime: "KEY_FILE_PATH"

Remplacez les éléments suivants :

  • ENVIRONMENT_NAME : nom de l'environnement. Exemple : myenv.
  • KEY_FILE_PATH : chemin d'accès au fichier de clé du compte de service d'exécution. Vous auriez généralement créé le compte de service à l'étape Créer des comptes de service lors de l'installation.

Solution

  1. Si le compte de service ne se trouve pas dans le même projet Google Cloud que celui que vous avez utilisé pour créer votre organisation Apigee, un compte de service doit être créé dans le même projet Google Cloud, et il doit être utilisé. Ce point est également mentionné dans la page Utiliser l'authentification Google.
  2. Si l'utilisateur qui déploie le proxy ne dispose pas de l'autorisation iam.serviceAccounts.actAs sur ce compte de service, consultez la section Attribuer un rôle unique.
  3. Si le compte de service proxy ne dispose pas des autorisations nécessaires pour appeler le service Cloud Logging, consultez la section Attribuer un rôle unique.

Si les étapes de ce document ne permettent pas de résoudre le problème de configuration du compte de service proxy pour Apigee et Apigee hybrid, consultez la section Vous devez collecter des informations de diagnostic.

Cause : Nom de projet incorrect dans la configuration de la règle

Diagnostic

Si vous utilisez la règle MessageLogging pour envoyer des journaux à Cloud Logging, procédez comme suit :

  1. Dans l'UI Apigee, cliquez sur l'onglet Développer > Proxys d'API > Nom du proxy d'API > Développer.
  2. Dans le volet Code, localisez l'élément <CloudLogging>.
  3. Vérifiez que la valeur <LogName> correspond au nom correct du projet :
    <CloudLogging>
      <LogName>projects/PROJECT_ID/logs/LOG_ID</LogName>
    </CloudLogging>

    Remplacez les éléments suivants :

    • PROJECT_ID : ID de projet Google Cloud. Exemple : apigee-example-org.
    • LOG_ID : ID de journal Cloud Logging. Exemple : apigee-logs.

Solution

Si la valeur de l'élément <LogName> n'est pas correcte, mettez-la à jour.

Si les étapes décrites de ce document ne permettent pas de résoudre le problème, consultez la section Vous devez collecter des informations de diagnostic.

Cause : Rôles/autorisations manquants pour le compte de service d'exécution

Diagnostic

Assurez-vous que l'environnement d'exécution peut emprunter l'identité du compte de service proxy.

Exécutez la commande gcloud suivante pour vérifier si le compte de service d'exécution possède le rôle iam.serviceAccountTokenCreator sur le compte de service proxy :

gcloud iam service-accounts get-iam-policy PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Remplacez les éléments suivants :

  • PROXY_SA_NAME : nom du compte de service proxy. Par exemple, envsa-79.
  • PROJECT_ID : ID de projet Google Cloud. Exemple : apigee-example-org.

Un résultat semblable au suivant s'affiche :

- members:
  - serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
  role: roles/iam.serviceAccountTokenCreator

Remplacez les éléments suivants :

RUNTIME_SA_NAME : ID du compte de service d'exécution. Par exemple, apigee-runtime.

Par exemple :

gcloud iam service-accounts get-iam-policy envsa-79@apigee-example-org.iam.gserviceaccount.com
  bindings:
  - members:
    - user:222larabrown@gmail.com
    role: roles/iam.serviceAccountAdmin
  - members:
    - serviceAccount:apigee-runtime@apigee-example-org.iam.gserviceaccount.com
    role: roles/iam.serviceAccountTokenCreator
  - members:
    - user:222larabrown@gmail.com
    role: roles/iam.serviceAccountUser
  etag: BwX-shcrL3o=
  version: 1

Si vous ne voyez pas le rôle iam.serviceAccountTokenCreator et le membre attendu dans la sortie, suivez les étapes décrites dans la section Résolution pour attribuer les rôles appropriés.

Solution

Attribuez au compte de service d'exécution le rôle iam.serviceAccountTokenCreator sur le compte de service proxy en exécutant la commande gcloud suivante :

gcloud iam service-accounts add-iam-policy-binding \
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
--member=serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator

Remplacez les éléments suivants :

  • PROXY_SA_NAME : nom du compte de service proxy. Par exemple, envsa-79.
  • PROJECT_ID : ID de projet Google Cloud. Par exemple, apigee-example-org.
  • RUNTIME_SA_NAME : ID du compte de service d'exécution. Par exemple, apigee-runtime.

Si les étapes décrites de ce document ne permettent pas de résoudre le problème, consultez la section Vous devez collecter des informations de diagnostic.

Cause : La taille de l'entrée de journal dépasse la limite Logging autorisée

Diagnostic

Si certains des journaux ne s'affichent pas dans Cloud Logging après que vous avez vérifié que les autres causes décrites dans ce document ne sont pas problématiques, il est possible que la taille de certaines entrées de journal envoyées depuis Apigee dépasse 256 Ko, ce qui correspond à la limite stricte pour la taille d'une entrée de journal sur Cloud Logging. Pour en savoir plus, consultez la section Limites d'utilisation pour Logging.

Solution

Il s'agit d'une limite non configurable définie sur Cloud Logging. La seule solution de contournement connue actuellement consiste à maintenir la taille des entrées de journal envoyées depuis Apigee sous 256 Ko. Si vous consignez une charge utile susceptible de dépasser cette limite, ne la consignez pas, ou comprenez bien que certaines transactions ne seront pas consignées une fois la limite atteinte.

Si les étapes décrites de ce document ne permettent pas de résoudre le problème, consultez la section Vous devez collecter des informations de diagnostic.

Cause: Épuisement du quota de requêtes d'écriture par minute pour l'API Cloud Logging

Diagnostic

Il arrive que les clients puissent voir la requête dans la session de débogage, mais qu'elle ne soit pas enregistrée dans l'explorateur de journaux, bien qu'elle soit présente dans les journaux de l'équilibreur de charge.

La perte de messages observée peut être attribuée à l'épuisement des quotas au sein du projet. L'API Cloud Logging applique une limite de débit de 120 000 requêtes d'écriture par minute. Le dépassement de ce quota peut entraîner la suppression de messages. Pour en savoir plus, consultez Afficher et gérer les quotas.

Ces quotas peuvent être augmentés dans la console Google Cloud, et le client peut le faire en suivant les instructions de la documentation sur l'augmentation des quotas.

Solution

Pour augmenter un quota, suivez la procédure ci-dessous :

  1. Sur la page Quotas, cochez les cases pour sélectionner API Cloud Logging, puis cliquez sur Modifier les quotas. Si vous obtenez une erreur Edit is not allowed for this quota, vous pouvez contacter Google Cloud Customer Care pour demander des modifications du quota. Notez également que la facturation doit être activée sur le projet Google Cloud pour que vous puissiez cocher les cases.
  2. Dans le panneau Modifications des quotas, sélectionnez le service pour développer la vue associée, puis renseignez les champs Nouvelle limite et Description de la requête. Cliquez sur Next (Suivant).
  3. Remplissez le formulaire dans le panneau Coordonnées, puis cliquez sur Envoyer la demande.

Pour en savoir plus, consultez la documentation sur les quotas et les limites .

Vous devez collecter des informations de diagnostic

Si le problème persiste, même après avoir suivi les instructions ci-dessus, rassemblez les informations de diagnostic suivantes, puis contactez Google Cloud Customer Care :

  • Organisation Apigee.
  • Environnement et proxy d'API où survient le problème.
  • Session de débogage téléchargée (fournissant toutes les informations ci-dessus).
  • Nom de la règle spécifique dans le proxy d'API qui envoie des journaux à Cloud Logging.
  • Pour Apigee hybrid : fichier overrides.yaml.