Loading...
Loading...
Diagnoses failed, stuck, or silent Google Cloud Application Integration runs and Integration Connectors tasks using the REST API, Cloud Logging, and Cloud Monitoring. Use when an integration fails, returns HTTP 200 without doing the expected work, hangs in a suspended or retry state, or hits IAM, run-as service account, connector health, or quota errors. Do not use for initial region provisioning (use application-integration-basics) or building and deploying versions (use application-integration-authoring).
npx skill4agent add google/skills application-integration-troubleshootinggcloud integrationscurlgcloud auth print-access-tokengoogleapiclient.discovery.build("integrations", "v1")build("connectors", "v1")pip install "google-api-python-client>=2.100.0,<3" "google-auth>=2.20.0,<3"gcloudgcloud authgcloud servicesgcloud projects get-iam-policygcloud iam service-accounts get-iam-policygcloud logging readLOCATIONus-central1application-integration-basicsapplication-integration-authoring:execute:scheduleexecutions.listsuspensions.listconnections.getconnectionSchemaMetadataactions.listentityTypes.listgcloud logging readv2executions:troubleshoot# Verify active identity and project
gcloud config get-value account
gcloud config get-value project
# Check that required APIs are enabled on PROJECT_ID
gcloud services list --enabled --project="PROJECT_ID" \
--filter="config.name:(integrations.googleapis.com OR connectors.googleapis.com OR secretmanager.googleapis.com)"gcloud services enable integrations.googleapis.com connectors.googleapis.com secretmanager.googleapis.com --project="PROJECT_ID"PROJECT_IDpip install "google-api-python-client>=2.100.0,<3" "google-auth>=2.20.0,<3"ApplicationIntegrationToolsetgcloud auth application-default logingcloud auth application-default set-quota-project PROJECT_ID:executeintegrations:testTestIntegrationsRequest.clientId:executeexecutions.list?filter=execution_id="EXECUTION_ID"executionDetails.statetaskExecutionStateErrorInforesponseParametersexecutionFailed"doNotPropagateError": true:executeexecutionIdrequestId:execute:scheduleIGNORENONESUCCEEDED-INTEGRATION_NAMEorderBy=create_timeCreateTimestamppageTokencurl -sS -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://integrations.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/integrations/INTEGRATION_NAME/executions?pageSize=10&orderBy=create_time&snapshotMetadataWithoutParams=true"EXECUTION_IDExecutionDetailsfiltersnapshotMetadataWithoutParams=truereadMaskexecutions.listtruncateParamsfilterParams.*curl -sS -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://integrations.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/integrations/INTEGRATION_NAME/executions?filter=execution_id%3D%22EXECUTION_ID%22"executions.liststate=!=ExecutionDetails.statefilter=state=FAILEDfilter=state!=SUCCEEDEDfilter=state=CANCELLEDfilter=state=FAILED OR state=CANCELLEDfilter=state%3DFAILEDfilter=state%3DFAILED%20OR%20state%3DCANCELLEDstateeventExecutionStateevent_execution_stateexecution_idstateupdate_timeworkflow_nametrigger_idCreateTimestampparameter_typeexecutionIdexecutions.list| Cause | Symptom | What to verify |
|---|---|---|
| Wrong region | Empty list in | Check |
| API trigger 403 | Caller got HTTP 403 | API trigger auth denials fail before execution creation; nothing is written to execution logs. Check caller IAM and |
| API trigger payload > 8 MB | Caller got an error | Cumulative API trigger input variables exceed the 8 MB limit, so the integration does not start. |
| Local logging disabled | Integration ran, but logs are empty | Check |
Version not | Trigger never fires | Only an |
ExecutionDetails.stateTaskExecutionDetails.taskExecutionState | Console status | Meaning and next step |
|---|---|---|
| Failed | Check |
| Succeeded | If expected work did not happen, inspect |
| Canceled | User canceled the run, a new integration version was published while the run was suspended, a SYNC run hit the 2-minute timeout, or a replayed run hit the 10-minute deadline. |
| Suspended | Waiting on an Approval task (resolvable in the Cloud console UI or via |
| Retry on hold | A task or integration failed with a temporary error and is waiting in the backoff retry queue. |
| In process | Currently running. Check whether an ASYNC run is approaching the 10-minute timeout. |
| On hold | Scheduled or temporarily paused and waiting to be triggered. |
integrations.executions.getcurl -sS -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://integrations.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/integrations/INTEGRATION_NAME/executions/EXECUTION_ID:troubleshoot"gcloud logging read \
'resource.type="integrations.googleapis.com/IntegrationVersion" AND jsonPayload.executionId="EXECUTION_ID"' \
--project="PROJECT_ID" --limit=20 --format=jsonconnections.getGET .../connections/CONNECTION_NAME/connectionSchemaMetadatastateerrorMessageGET .../v2/.../connections/CONNECTION_NAME/actions.../entityTypesconnectionSchemaMetadata:listActions:listEntityTypesfiltercurl -sS -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://connectors.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/connections/CONNECTION_NAME?view=FULL"runAsServiceAccountrunAsServiceAccountrunAsServiceAccountroles/iam.serviceAccountUserApplicationIntegrationToolsetconnections.getview=FULLstatus.statestatus.statusstatus.stateERRORAUTHORIZATION_REQUIREDhttps://console.cloud.google.com/connectors/connectionsservice-PROJECT_NUMBER@gcp-sa-connectors.iam.gserviceaccount.comroles/iam.serviceAccountTokenCreatorstatus.stateACTIVErunAsServiceAccountservice-PROJECT_NUMBER@gcp-sa-integrations.iam.gserviceaccount.comroles/connectors.invokerroles/connectors.adminEXPONENTIAL_BACKOFFgcloud logging read \
'resource.type="connectors.googleapis.com/Connection" AND jsonPayload.integration_connectors_trace_id="EXECUTIONID_TASKID_ATTEMPTNUMBER"' \
--project="PROJECT_ID" --limit=20 --format=jsonSUSPENDEDtaskExecutionDetailsintegrations.suspensions.listroles/integrations.suspensionResolverSUSPENSION_IDtaskIdroles/integrations.suspensionResolverintegrations.executions.listintegrations.executions.getexecutions.list:troubleshoottaskExecutionDetails:troubleshootroles/integrations.integrationViewer# Read-only: list suspensions on EXECUTION_ID
curl -sS -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://integrations.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/integrations/INTEGRATION_NAME/executions/EXECUTION_ID/suspensions"POST https://integrations.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/integrations/INTEGRATION_NAME/executions/EXECUTION_ID/suspensions/SUSPENSION_ID:resolve{"suspension": {"eventExecutionInfoId": "EXECUTION_ID", "integration": "INTEGRATION_NAME", "taskId": "TASK_ID", "state": "LIFTED"}}"REJECTED"integrations.suspensions.resolveroles/integrations.suspensionResolverroles/integrations.integrationEditorroles/iam.serviceAccountUserrunAsServiceAccountroles/iam.serviceAccountUser:liftintegrations.suspensions.liftroles/integrations.suspensionResolverroles/iam.serviceAccountUserrunAsServiceAccountPOST .../executions/EXECUTION_ID/suspensions/SUSPENSION_ID:liftsuspensionResultPERMISSION_DENIEDroles/integrations.integrationInvokerroles/integrations.integrationEditorroles/integrations.integrationDeployerroles/integrations.integrationEditorrunAsServiceAccountroles/iam.serviceAccountUserrunAsServiceAccountroles/iam.serviceAccountUserrunAsServiceAccountrunAsServiceAccountroles/iam.serviceAccountUser:cancel:replay:lift:resolve:cancelintegrations.executions.cancel:replayintegrations.executions.replayroles/integrations.integrationInvokerroles/integrations.integrationEditorroles/integrations.integrationAdminroles/integrations.suspensionResolverroles/integrations.integrationViewerroles/integrations.suspensionResolverSUSPENDED:replayFAILED_PRECONDITION"Test runs cannot be replayed."REPLAY_MODE_POINT_OF_FAILUREdatabasePersistencePolicy: DATABASE_PERSISTENCE_DISABLEDREPLAY_MODE_FROM_BEGINNING:replaymodifiedParametersupdateMaskupdateMaskupdateMaskmodifiedParametersupdateMaskmodifiedParameters# Cancel an execution in PENDING (console "On hold"), RETRY_ON_HOLD, or SUSPENDED state (requires integrations.executions.cancel)
# (Cannot cancel executions in PROCESSING state [console "In process"], completed runs [SUCCEEDED, FAILED, CANCELLED], or Schedule-trigger runs; approvers with only roles/integrations.suspensionResolver cannot cancel a stuck SUSPENDED run)
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{"cancelReason": "Canceling stuck execution after investigation"}' \
"https://integrations.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/integrations/INTEGRATION_NAME/executions/EXECUTION_ID:cancel"
# Replay a SUCCEEDED, FAILED, or CANCELLED execution on a published integration (Preview; requires integrations.executions.replay; test-case runs and Schedule-trigger runs cannot be replayed)
# replayMode: REPLAY_MODE_FROM_BEGINNING or REPLAY_MODE_POINT_OF_FAILURE (failed runs only; refused with FAILED_PRECONDITION if databasePersistencePolicy was DATABASE_PERSISTENCE_DISABLED—use REPLAY_MODE_FROM_BEGINNING in that case)
# Optional modifiedParameters/updateMask: list every overridden key in updateMask; without updateMask, all original inputs are discarded and only modifiedParameters are used; a key in updateMask missing from modifiedParameters is an error
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{"replayReason": "Replay after fixing downstream permission", "replayMode": "REPLAY_MODE_POINT_OF_FAILURE"}' \
"https://integrations.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/integrations/INTEGRATION_NAME/executions/EXECUTION_ID:replay"ExecutionDetails.stateTaskExecutionDetails.taskExecutionStateexecutions.list:cancel:replayintegrations.googleapis.com/*connectors.googleapis.com/*ApplicationIntegrationToolsetConnectionStatus.stateEventingStatus.stateconnectionSchemaMetadatasuspensions.list:lift:resolveroles/iam.serviceAccountUser