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
- Recherchez le nom du compte de service.
- En utilisant l'UI Apigee, procédez comme suit :
- Cliquez sur Develop > API Proxies (Développer > Proxys d'API), puis sur un nom de proxy. Par exemple, TurboBooks.
-
Sous Deployments (Déploiements), le nom du compte de service (Service Account) s'affiche.
-
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" }
Où
serviceAccount
est le compte de service associé au proxy d'API. - ORG_NAME : nom de votre organisation. Par exemple,
- En utilisant l'UI Apigee, procédez comme suit :
- Vérifiez les éléments suivants pour ce compte de service proxy :
-
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.
-
L'utilisateur qui déploie le proxy dispose de l'autorisation
iam.serviceAccounts.actAs
sur ce compte de service.- Pour obtenir la liste des rôles, consultez la section Rôles des comptes de service.
- Pour savoir comment afficher les rôles d'un utilisateur spécifique, consultez la section Afficher l'accès actuel.
-
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.
-
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 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
- 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.
-
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. - 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 :
- Dans l'UI Apigee, cliquez sur l'onglet Développer > Proxys d'API > Nom du proxy d'API > Développer.
-
Dans le volet Code, localisez l'élément
<CloudLogging>
. -
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
.
-
PROJECT_ID : ID de projet Google Cloud. Exemple :
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 :
- 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. - 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).
- 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
.