Auf dieser Seite wird gezeigt, wie Sie Probleme mit Cloud Scheduler beheben.
Cloud Scheduler veröffentlicht Logs zu Beginn und am Ende jeder Jobausführung. Sie können die Logs für einen bestimmten Job abrufen, ansehen und analysieren, einschließlich der Audit-Logs, die für Cloud Scheduler verfügbar sind. Weitere Informationen finden Sie unter Logs ansehen.
Wenn ein Cloud Scheduler-Job keine Bestätigung von seinem Zieldienst (dem Jobanfrage-Handler) erhält, gilt der Job standardmäßig als fehlgeschlagen. Cloud Scheduler wiederholt den Job gemäß dem von Ihnen konfigurierten exponentiellen Backoff.
Informationen zu Vorfällen, die sich auf Google Cloud -Dienste auswirken, finden Sie im Google Cloud Service Health-Dashboard und unter Alle für Cloud Scheduler gemeldeten Vorfälle.
Job schlägt aufgrund eines Problems mit einem nachgelagerten Dienst fehl
Ein Jobfehler kann auf ein Problem in einem nachgelagerten Dienst zurückzuführen sein, auf den Cloud Scheduler abzielt, z. B. Cloud Run, und nicht auf Cloud Scheduler selbst. Sie können ein Problem mit einem nachgelagerten Dienst vermuten, wenn die folgenden Bedingungen erfüllt sind:
- Die Berechtigungen für Cloud Scheduler sind korrekt eingerichtet.
- Cloud Scheduler kann den Zieldienst erfolgreich erreichen.
- Fehlermeldungen in den Cloud Scheduler-Ausführungslogs stammen vom nachgelagerten Dienst.
So beheben Sie das Problem:
- Downstream-Dienst direkt aufrufen: Prüfen Sie, ob der Downstream-Dienst ohne Cloud Scheduler erfolgreich aufgerufen werden kann. Ein erfolgreicher Aufruf weist darauf hin, dass Cloud Scheduler wahrscheinlich die Ursache des Problems ist. Wenn der Aufruf nicht erfolgreich ist, muss der nachgelagerte Dienst weiter debuggt werden.
- Ziel-Dienstprotokolle prüfen: Prüfen Sie die Protokolle für den Ziel-Dienst, ermitteln Sie die ausgegebenen Fehler und priorisieren Sie sie entsprechend.
- Nach Vorgängen mit langer Ausführungszeit suchen: Wenn Cloud Scheduler bei Vorgängen mit langer Ausführungszeit (mehr als 30 Minuten) einen HTTP-
504-Fehler zurückgibt, prüfen Sie in den Logs des Zieldienstes, ob die Ausführung erfolgreich war oder fehlgeschlagen ist, da der Zieldienst möglicherweise ein längeres Zeitlimit für Anfragen hat. In einem solchen Szenario kommt es bei Cloud Scheduler zu einer Zeitüberschreitung, beim Zieldienst jedoch nicht.
Job schlägt mit einem Berechtigungsfehler fehl
Berechtigungen steuern, welche Hauptkonten auf Ressourcen zugreifen können und welche Vorgänge zulässig sind. Falsch konfigurierte Berechtigungen können die Jobausführung stören und zu Fehlern vom Typ „Berechtigung verweigert“ führen. Audit-Logs enthalten eine detaillierte Aufzeichnung aller Berechtigungsänderungen, sodass Sie die Ursache dieser Probleme ermitteln können.
Wenn Ihr Cloud Scheduler-Job aufgrund eines Berechtigungsfehlers fehlschlägt, wird in den Ausführungslogs möglicherweise eine Meldung wie "debugInfo":"URL_ERROR-ERROR_OTHER. Original HTTP response code number = 403" angezeigt.
Führen Sie eine oder mehrere der folgenden Bestätigungen durch, um dieses Problem zu beheben:
IAM-Rollen prüfen, die dem Dienst-Agent zugewiesen wurden: Der Cloud Scheduler-Dienst-Agent benötigt die Rolle Cloud Scheduler-Dienst-Agent (
roles/cloudscheduler.serviceAgent). Ohne diese Rolle schlagen Cloud Scheduler-Jobs fehl. Sie können die Rolle Ihrem Cloud Scheduler-Dienst-Agent manuell zuweisen. Eine manuelle Zuweisung ist nur erforderlich, wenn Sie die Cloud Scheduler API vor dem 19. März 2019 aktiviert oder die Rolle „Cloud Scheduler-Dienst-Agent“ entfernt haben. Weitere Informationen finden Sie unter Rolle „Cloud Scheduler-Dienst-Agent“ zuweisen.Dienstkontoberechtigungen prüfen: Achten Sie darauf, dass das mit Ihrem Job verknüpfte Dienstkonto die richtigen Berechtigungen und den richtigen Bereich hat, um den Zieldienst aufzurufen. Dies umfasst Szenarien, in denen sich das Ziel in einem anderen Projekt befindet oder das endgültige Ziel eines Vermittlungsdienstes ist. Wenn sich Ihr Ziel in Google Cloudbefindet, prüfen Sie, ob Sie Ihrem Dienstkonto die erforderlichen Rollen zugewiesen haben. Jeder Dienst in Google Cloud erfordert eine bestimmte Rolle und der empfangende Dienst überprüft das generierte Token automatisch. Für Cloud Run und Cloud Run Functions müssen Sie beispielsweise die Rolle
Cloud Run Invokerzuweisen. Wenn sich Ihr Ziel außerhalb von Google Cloudbefindet, muss der empfangende Dienst das Token manuell prüfen. Weitere Informationen finden Sie unter Bei Cloud Scheduler authentifizieren und Authentifizierung mit HTTP-Zielen verwenden.VPC Service Controls-Verstöße prüfen: VPC Service Controls ist ein Google Cloud-Feature, mit dem Sie einen sicheren Perimeter einrichten können, der vor Daten-Exfiltration schützt. Damit Sie feststellen können, ob ein Fehler mit VPC Service Controls zusammenhängt, müssen Sie prüfen, ob Sie VPC Service Controls aktiviert und auf die Projekte und Dienste angewendet haben, die Sie verwenden möchten. Wenn Sie prüfen möchten, ob die Projekte und Dienste durch VPC Service Controls geschützt sind, sehen Sie sich die VPC Service Controls-Richtlinie auf dieser Ebene der Ressourcenhierarchie an.
Um den Umfang eines Problems zu verstehen, können Sie VPC Service Controls-Fehler aus Audit-Logs abrufen.
-
Rufen Sie in der Google Cloud Console das und die Seite Log-Explorer auf:
Wenn Sie diese Seite über die Suchleiste suchen, wählen Sie das Ergebnis mit der Zwischenüberschrift Logging aus.
Fragen Sie die Audit-Logs nach den folgenden Kriterien ab:
severity="ERROR" AND protoPayload.status.details.violations.type="VPC_SERVICE_CONTROLS"
Fehlermeldungen können insbesondere den folgenden Text enthalten:
Request is prohibited by organization's policyRequest violates VPC Service Controls
Weitere Informationen zu Problemen, die bei der Konfiguration von VPC Service Controls auftreten können, finden Sie unter Häufige Probleme beheben.
-
Private Endpunkte prüfen: Cloud Scheduler kann nur bestimmte private Endpunkte wie Cloud Run, Cloud Run Functions und Google Cloud -APIs innerhalb eines VPC Service Controls-Perimeters aufrufen. Prüfen Sie die Einstellungen für eingehenden Traffic für Ihren Zieldienst (siehe z. B. Eingehenden Netzwerktraffic für Cloud Run einschränken) und die Berechtigungen des angehängten Dienstkontos. Möglicherweise erhalten Sie die Fehlermeldung
URL_ERROR-ERROR_DNS. Weitere Informationen finden Sie in diesem Dokument unter Job schlägt aufgrund eines nicht erreichbaren Ziels fehl.
Job schlägt aufgrund eines nicht erreichbaren Ziels fehl
Dieses Problem tritt auf, wenn Ihr Cloud Scheduler-Job fehlschlägt, weil das Ziel nicht erreichbar ist. In den Ausführungslogs werden Fehler angezeigt, die mit URL_ERROR oder URL_UNREACHABLE beginnen.
Führen Sie je nach Fehlermeldung eine der folgenden Prüfungen aus, um das Problem zu beheben:
URL_ERROR-ERROR_AUTHENTICATION: Ein HTTP-401 (Unauthorized)- oder HTTP-407 (Proxy Authentication Required)-Fehler wird zurückgegeben. Das Ziel erfordert eine Authentifizierung. Die Cloud Scheduler-Anfrage enthält jedoch kein gültiges Authentifizierungstoken. Beispielsweise fehlt in der Anfrage ein Autorisierungsheader oder die Anmeldedaten sind ungültig. Prüfen Sie die Authentifizierungseinstellungen Ihres Jobs. Wenn Ihr Zielendpunkt einen API-Schlüssel im Anfrageheader erfordert, muss der Headername mit dem übereinstimmen, was Ihr Zieldienst erwartet, z. B.x-api-keyoderX-Goog-Api-Key, und nichtapi_key. Weitere Informationen finden Sie unter Bei Cloud Scheduler authentifizieren und Authentifizierung mit HTTP-Zielen verwenden.URL_ERROR-ERROR_DNS: Gibt an, dass ein URL-Abruf fehlgeschlagen ist, weil der Hostname nicht über das Domain Name System (DNS) aufgelöst werden konnte. Das kann beispielsweise daran liegen, dass der Hostname nicht existiert oder keine zugehörige IP-Adresse hat. Die Fehlermeldung enthält möglicherweise den TextOriginal HTTP response code number = 0. Prüfen Sie die Gültigkeit des Hostnamens. Wenn Sie einen privaten Endpunkt aufrufen, achten Sie darauf, dass er von Cloud Scheduler unterstützt wird, und prüfen Sie die Einstellungen für eingehenden Traffic.URL_ERROR-ERROR_NOT_FOUND: Der Webserver gibt einen HTTP-404 Not Found-Fehler zurück. Prüfen Sie, ob die Ziel-URL korrekt ist und die Ressource vorhanden ist.URL_ERROR-ERROR_OTHER: Dies bezieht sich auf einen allgemeinen HTTP-4xx-Fehler, der zuvor nicht im Detail beschrieben wurde. Prüfen Sie die Logs, um den ursprünglichen HTTP-Antwortcode abzurufen. Wenn Sie einen HTTP-403-Fehler erhalten, lesen Sie in diesem Dokument den Abschnitt Job schlägt mit Berechtigungsfehler fehl.URL_UNREACHABLE-UNREACHABLE_5xx: Das Ziel gibt einen HTTP-Fehler5xxoder429zurück. Dies kann ein vorübergehender Zustand sein, z. B. ein überlasteter Server. Prüfen Sie die Logs des Ziels, um das Problem zu beheben.URL_UNREACHABLE-UNREACHABLE_CONNECTION_RESET: Die Verbindung wurde vom Peer zurückgesetzt. Prüfen Sie, ob auf dem externen Server ein Problem vorliegt.URL_UNREACHABLE-UNREACHABLE_ERROR: Dies weist auf einen Netzwerkfehler hin. Prüfen Sie, ob die Ziel-URL korrekt ist und ob Firewallregeln den Zugriff blockieren.
Nicht unterstütztes Ziel bei Verwendung eines sicheren Perimeters
Wenn Cloud Scheduler ein eingeschränkter Dienst in einem VPC Service Controls-Perimeter ist, schlägt jeder Versuch, einen Job mit einem nicht unterstützten Ziel zu erstellen oder zu aktualisieren, mit dem Fehlercode TARGET_TYPE_NOT_PERMITTED_FOR_VPC fehl. Weitere Informationen finden Sie unter Cronjobs mit VPC Service Controls sichern.
Probleme bei der Jobausführung
Cloud Scheduler-Jobs werden zu festgelegten Zeiten oder in regelmäßigen Intervallen ausgeführt. Die folgenden Probleme können während der Ausführung eines Jobs auftreten.
Ein Job, der zuvor funktioniert hat, wird nicht mehr ausgeführt.
Dieses Problem tritt auf, wenn ein Cloud Scheduler-Job, der zuvor erfolgreich ausgeführt wurde, nicht mehr ausgeführt wird, weil die Cloud Scheduler API deaktiviert ist. Sie können den Zeitpunkt der Deaktivierung der API bestätigen, indem Sie die Audit-Logs nach den folgenden Kriterien abfragen:
resource.type="audited_resource" AND protoPayload.serviceName="cloudscheduler.googleapis.com" AND operation.producer="serviceusage.googleapis.com" AND protoPayload.authorizationInfo.permission="serviceusage.services.disable"
Aktivieren Sie die Cloud Scheduler API, um dieses Problem zu beheben.
Nachfolgende Jobausführungen werden nicht gestartet
Dieses Problem tritt auf, wenn ein Job noch ausgeführt wird oder auf eine Antwort von seinem Ziel wartet. Andere geplante Ausführungen des Jobs werden übersprungen, bis die aktuelle Ausführung abgeschlossen ist oder ein Zeitüberschreitungsfehler auftritt.
Suchen Sie in den Logeinträgen nach dem neuesten type.googleapis.com/google.cloud.scheduler.logging.AttemptStarted-Eintrag und dem entsprechenden type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished-Eintrag. Wenn der Eintrag AttemptFinished fehlt oder nach der nächsten geplanten Ausführung des Jobs angezeigt wird, werden andere ausstehende Ausführungen blockiert und nicht gestartet. Je nach Zeitplan des Jobs kann dies verhindern, dass mehrere Jobausführungen gestartet werden. Prüfen Sie zur weiteren Untersuchung das Zeitlimit für das Ziel des Jobs und ob bei diesem Ziel Probleme aufgetreten sind.
Beachten Sie, dass jeweils nur eine einzelne Instanz eines Jobs ausgeführt werden sollte. In seltenen Fällen können mehrere Instanzen desselben Jobs angefordert werden. Daher sollte Ihr Anfrage-Handler idempotent sein und Ihr Code sollte sicherstellen, dass in diesem Fall keine schädlichen Nebenwirkungen auftreten.
Die Ausführung eines Jobs wird aufgrund der Sommerzeit unregelmäßig.
Wenn Sie einen Cloud Scheduler-Job mit der Google Cloud Console erstellen, müssen Sie eine Zeitzone angeben. Wenn Sie die Google Cloud CLI verwenden, können Sie optional mit dem Flag --time-zone eine Zeitzone angeben. Andernfalls wird die Standardzeitzone „Coordinated Universal Time“ oder UTC verwendet.
Dieses Problem tritt auf, wenn ein Job mit einer Zeitzone konfiguriert ist, die nicht UTC ist, und die Ausführung aufgrund von Sommerzeitänderungen unregelmäßig wird. Dieses Verhalten ist normal.
Wenn Ihr Job eine sehr genaue Taktung erfordert, sollten Sie eine Zeitzone ohne Sommerzeit wählen. Konfigurieren Sie Ihren Jobzeitplan so, dass die UTC-Zeitzone verwendet wird, um das Problem vollständig zu vermeiden.
Weitere Informationen finden Sie unter Format und Zeitzone für Cronjobs.
Nächste Schritte
Wenn Sie in der Cloud Scheduler-Dokumentation keine Lösung für Ihr Problem finden, haben Sie folgende Möglichkeiten:
- Sie können sich an die Community wenden, indem Sie Fragen auf Stack Overflow stellen oder mit dem Tag
google-cloud-schedulernach ähnlichen Problemen suchen. - Öffnen Sie eine Supportanfrage, indem Sie sich an den Google Cloud -Kundenservice wenden.
- Öffnen Sie einen Fehler oder eine Featureanfrage über die öffentliche Problemverfolgung.
Weitere Informationen finden Sie unter Cloud Scheduler-Support.