Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Für dieses Thema gibt es keine entsprechende Apigee Edge-Dokumentation.
Symptom
Ein häufiger Anwendungsfall ist das Senden von Apigee API-Logs an Cloud Logging. Dies erfolgt im Allgemeinen über die Richtlinie MessageLogging oder die Richtlinie ServiceCallout. In beiden Fällen verwendet Apigee die Cloud Logging API, um die Logs zu schreiben.
In einigen Fällen werden die Apigee API-Logs in Cloud Logging nicht angezeigt.
Fehlermeldung
Es wird keine Fehlermeldung angezeigt.
Mögliche Ursachen
Ursache | Beschreibung | Anleitungen zur Fehlerbehebung gelten für |
---|---|---|
Cloud Logging API ist nicht aktiviert | Achten Sie darauf, dass die Cloud Logging API im Google Cloud-Projekt Ihrer Apigee-Organisation aktiviert ist. | Apigee und Apigee Hybrid |
Falsch konfiguriertes Proxy-Dienstkonto | Das zum Zeitpunkt der Bereitstellung (Apigee) oder der Laufzeitkonfiguration (Apigee Hybrid) verwendete Dienstkonto wurde möglicherweise gelöscht/falsch konfiguriert. | Apigee und Apigee Hybrid |
Falscher Projektname in der Richtlinienkonfiguration | Der Projektname in der Richtlinienkonfiguration ist nicht mit dem Projektnamen der Apigee-Organisation identisch. | Apigee und Apigee Hybrid |
Fehlende Rollen/Berechtigungen für das Laufzeitdienstkonto | Achten Sie bei Apigee Hybrid darauf, dass das Laufzeitdienstkonto die Rolle Ersteller von Dienstkonto-Tokens hat. Dies erfordert die Google-Authentifizierung. | Apigee Hybrid |
Logeintragsgröße überschreitet das zulässige Cloud Logging-Limit | In Cloud Logging gilt eine Größenbeschränkung von 256 KB, die nicht geändert werden kann. | Apigee und Apigee Hybrid |
Erschöpfung des Kontingents für Schreibanfragen pro Minute für die Cloud Logging API | Achten Sie darauf, dass Sie das Kontingent für Schreibanfragen pro Minute für die Cloud Logging API in Ihrem Google Cloud-Projekt nicht überschreiten. | Apigee und Apigee Hybrid |
Ursache: Cloud Logging API ist nicht aktiviert
Diagnose
Prüfen Sie, ob die Cloud Logging API aktiviert ist. Eine Anleitung zum Auflisten aktivierter APIs und Dienste in der Google Cloud Console finden Sie unter Aktivierte Dienste auflisten.
Lösung
Wenn die Cloud Logging API nicht aktiviert ist, aktivieren Sie sie mithilfe der Schritte unter Dienste aktivieren. Es kann einige Minuten dauern, bis die API aktiviert wird.
Wenn Sie das Problem, bei dem Logs in Cloud Logging nicht angezeigt werden, weil die Cloud Logging API nicht aktiviert ist, nicht beheben können, lesen Sie den Abschnitt Diagnoseinformationen müssen erfasst werden.
Ursache: Falsch konfiguriertes Proxy-Dienstkonto
Diagnose
Apigee
- Suchen Sie nach dem Namen des Dienstkontos.
- Apigee-Benutzeroberfläche verwenden:
- Klicken Sie auf Entwickeln > API-Proxys und dann auf einen Proxynamen. Beispiel: TurboBooks.
-
Unter Deployments wird der Name Dienstkonto angezeigt.
-
Führen Sie den folgenden Apigee API-Aufruf aus:
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"
Ersetzen Sie Folgendes:
- ORG_NAME: Der Name Ihrer Organisation. Beispiel:
apigee-example-org
. - ENV_NAME: Der Name der Umgebung. Beispiel:
myenv
. - PROXY_NAME: Der Name des Proxys. Beispiel:
TurboBooks
. - REVISION_NUMBER: Die Überarbeitungsnummer. Beispiel:
4
.
Beispiel:
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"
Es wird in etwa Folgendes zurückgegeben:
{ "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" }
Dabei ist
serviceAccount
das Dienstkonto, das dem API-Proxy zugeordnet ist. - ORG_NAME: Der Name Ihrer Organisation. Beispiel:
- Apigee-Benutzeroberfläche verwenden:
- Prüfen Sie Folgendes für dieses Proxy-Dienstkonto:
-
Dieses Dienstkonto muss sich im selben Google Cloud-Projekt befinden, mit dem Sie Ihre Apigee-Organisation erstellt haben. Beispiel:
apigee-example-org.
. -
Der Nutzer, der den Proxy bereitstellt, hat die Berechtigung
iam.serviceAccounts.actAs
für dieses Dienstkonto.- Eine Liste der Rollen finden Sie unter Dienstkontenrollen.
- Eine Anleitung zum Aufrufen der Rollen eines bestimmten Nutzers finden Sie unter Aktuellen Zugriff ansehen.
-
Das Proxy-Dienstkonto hat die erforderlichen Berechtigungen zum Aufrufen des Cloud Logging-Dienstes.
- Eine Liste der Rollen finden Sie unter Logging-Rollen.
- Eine Anleitung zum Aufrufen der Proxydienstkonto-Berechtigungen finden Sie unter Aktuellen Zugriff ansehen.
-
Dieses Dienstkonto muss sich im selben Google Cloud-Projekt befinden, mit dem Sie Ihre Apigee-Organisation erstellt haben. Beispiel:
Apigee hybrid
Öffnen Sie für Apigee Hybrid zusätzlich zu den in Apigee aufgeführten Schritten Ihre overrides.yaml
-Datei und prüfen Sie, ob unter jeder Umgebung ein Dienstkonto angegeben ist, das eine Google-Authentifizierung erfordert.
Beispiel:
envs:
- name: "ENVIRONMENT_NAME"
serviceAccountPaths:
runtime: "KEY_FILE_PATH"
Ersetzen Sie Folgendes:
-
ENVIRONMENT_NAME: Der Name der Umgebung. Beispiel:
myenv
. - KEY_FILE_PATH: Der Pfad zur Schlüsseldatei des Laufzeitdienstkontos. Sie haben das Dienstkonto normalerweise während der Installation unter Dienstkonten erstellen erstellt.
Lösung
- Wenn sich das Dienstkonto nicht im selben Google Cloud-Projekt befindet, das Sie zum Erstellen Ihrer Apigee-Organisation verwendet haben, muss ein Dienstkonto im selben Google Cloud-Projekt erstellt und verwendet werden. Dies wird auch unter Google-Authentifizierung verwenden erwähnt.
-
Wenn der Nutzer, der den Proxy bereitstellt, nicht die Berechtigung
iam.serviceAccounts.actAs
für dieses Dienstkonto hat, finden Sie weitere Informationen unter Einzelne Rolle zuweisen. - Wenn das Proxy-Dienstkonto nicht die Berechtigungen hat, die zum Aufrufen des Cloud Logging-Dienstes erforderlich sind, finden Sie weitere Informationen unter Einzelne Rolle zuweisen.
Wenn die Schritte in diesem Dokument das Problem nicht beheben, bei dem das Proxydienstkonto für Apigee und Apigee hybrid falsch konfiguriert ist, finden Sie weitere Informationen unter Erfassen von Diagnoseinformationen.
Ursache: Falscher Projektname in der Richtlinienkonfiguration
Diagnose
Wenn Sie die MessageLogging-Richtlinie verwenden, um Logs an Cloud Logging zu senden:
- Klicken Sie in der Apigee-Benutzeroberfläche auf Entwickeln > API-Proxys > API-Proxy-Name > Entwickeln.
-
Suchen Sie im Bereich Code nach dem Element
<CloudLogging>
. -
Prüfen Sie, ob der Wert
<LogName>
der richtige Projektname ist:<CloudLogging> <LogName>projects/PROJECT_ID/logs/LOG_ID</LogName> </CloudLogging>
Ersetzen Sie Folgendes:
-
PROJECT_ID: die Google Cloud-Projekt-ID. Beispiel:
apigee-example-org
. - LOG_ID: die Cloud Logging-Log-ID. Beispiel:
apigee-logs
.
-
PROJECT_ID: die Google Cloud-Projekt-ID. Beispiel:
Lösung
Wenn der Wert im Element <LogName>
nicht den richtigen Wert hat, aktualisieren Sie ihn mit dem richtigen Wert.
Wenn das Problem durch die Schritte in diesem Dokument nicht behoben wird, lesen Sie den Abschnitt Erfassen von Diagnoseinformationen erforderlich.
Ursache: Fehlende Rollen/Berechtigungen für das Laufzeitdienstkonto
Diagnose
Prüfen Sie, ob die Laufzeit die Identität des Proxydienstkontos übernehmen kann.
Führen Sie folgenden gcloud-Befehl aus, um zu prüfen, ob das Laufzeitdienstkonto die Rolle iam.serviceAccountTokenCreator für das Proxydienstkonto hat:
gcloud iam service-accounts get-iam-policy PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
Ersetzen Sie Folgendes:
- PROXY_SA_NAME: der Name des Proxy-Dienstkontos.
Beispiel:
envsa-79
. - PROJECT_ID: die Google Cloud-Projekt-ID. Beispiel:
apigee-example-org
.
Es wird in etwa Folgendes zurückgegeben:
- members: - serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com role: roles/iam.serviceAccountTokenCreator
Ersetzen Sie Folgendes:
RUNTIME_SA_NAME: die ID des Laufzeitdienstkontos.
Beispiel: apigee-runtime
.
Beispiel:
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
Wenn die Rolle iam.serviceAccountTokenCreator
und das erwartete Mitglied in der Ausgabe nicht angezeigt werden, führen Sie die Schritte unter Lösung aus, um die richtigen Rollen zuzuweisen.
Lösung
Weisen Sie dem Laufzeitdienstkonto mit dem folgenden
gcloud-Befehl die Rolle iam.serviceAccountTokenCreator
für das Proxydienstkonto zu:
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
Ersetzen Sie Folgendes:
-
PROXY_SA_NAME: der Name des Proxy-Dienstkontos. Beispiel:
envsa-79
. -
PROJECT_ID: die Google Cloud-Projekt-ID. Beispiel:
apigee-example-org
. -
RUNTIME_SA_NAME: die ID des Laufzeitdienstkontos. Beispiel:
apigee-runtime
.
Wenn das Problem durch die Schritte in diesem Dokument nicht behoben wird, lesen Sie den Abschnitt Erfassen von Diagnoseinformationen erforderlich.
Ursache: Logeintragsgröße überschreitet das zulässige Logging-Limit
Diagnose
Wenn einige der Logs in Cloud Logging nicht angezeigt werden, nachdem Sie sichergestellt haben, dass die anderen in diesem Dokument beschriebenen Ursachen nicht das Problem sind, ist es möglich, dass die Größe einiger der von Apigee gesendeten Protokolleinträge 256 KB überschreitet. Weitere Informationen finden Sie unter Nutzungslimits für Cloud Logging.
Lösung
Dies ist ein nicht konfigurierbares Limit für Cloud Logging. Die einzige Problemumgehung besteht derzeit darin, die von Apigee gesendete Logeintragsgröße unter 256 KB zu halten. Wenn Sie eine Nutzlast protokollieren, die dieses Limit überschreiten kann, sollten Sie diese Nutzlast entweder nicht protokollieren oder verstehen, dass einige Transaktionen nicht protokolliert werden, sobald das Limit erreicht wurde.
Wenn die Schritte in diesem Dokument das Problem nicht beheben, finden Sie weitere Informationen unter Erfassen von Diagnoseinformationen.
Ursache: Erschöpfung des Kontingents für Schreibanfragen pro Minute für die Cloud Logging API
Diagnose
Manchmal sehen Kunden die Anfrage in der Debug-Sitzung, sie wird aber nicht im Log-Explorer protokolliert, obwohl sie in den Load Balancer-Logs vorhanden ist.
Der beobachtete Nachrichtenverlust könnte auf eine Kontingenterschöpfung innerhalb des Projekts zurückzuführen sein. Die Cloud Logging API erzwingt eine Ratenbegrenzung von 120.000 Schreibanfragen pro Minute. Das Überschreiten dieses Kontingents kann dazu führen, dass Nachrichten nicht zugestellt werden. Weitere Informationen finden Sie unter Kontingente aufrufen und verwalten.
Diese Kontingente können in der Google Cloud Console erhöht werden und dies kann vom Kunden selbst durchgeführt werden. Folgen Sie dazu der Dokumentation zur Kontingenterhöhung.
Lösung
So erhöhen Sie ein Kontingent:
- Klicken Sie auf der Seite Kontingente auf das Kästchen für die Cloud Logging API. Klicken Sie dann auf Kontingente bearbeiten.
Wenn die Fehlermeldung
Edit is not allowed for this quota
ausgegeben wird, können Sie sich an Google Cloud Customer Care wenden, um Änderungen am Kontingent anzufordern. Beachten Sie auch, dass die Abrechnung für das Google Cloud-Projekt aktiviert sein muss, damit die Kästchen angeklickt werden können. - Wählen Sie im Feld „Kontingentänderungen“ den Dienst aus, um die Ansicht zu maximieren. Füllen Sie dann die Felder Neues Limit und Beschreibung der Anfrage aus. Klicken Sie auf Weiter.
- Füllen Sie das Formular im Feld Kontaktdetails aus und klicken Sie auf Anfrage senden.
Weitere Informationen finden Sie in dieser Dokumentation zu Kontingenten und Limits.
Erfassen von Diagnoseinformationen erforderlich
Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen und wenden Sie sich dann an den Google Cloud Customer Care:
- Apigee-Organisation
- Umgebung und API-Proxy, wo das Problem auftritt
- Heruntergeladene Debug-Sitzung (enthält alle oben genannten Informationen)
- Der spezifische Richtlinienname im API-Proxy, der Logs an Cloud Logging sendet.
- Für Apigee Hybrid: Die Datei
overrides.yaml
.