En esta página, se proporciona información para ayudarte a supervisar las implementaciones y ejecuciones de flujos de trabajo.
Accede a los registros de implementación y eliminación de flujos de trabajo
Puedes acceder a los registros de errores relacionados con la implementación y eliminación de un flujo de trabajo en el Consola de Google Cloud
En la consola de Google Cloud, ve a la página Workflows.
Haz clic en el nombre del flujo de trabajo para mostrar la página Detalles del flujo de trabajo.
Haz clic en la pestaña Registros.
Para filtrar los registros por gravedad, en la lista Predeterminada, selecciona el tipo de registro que se mostrará.
Accede a los resultados de la ejecución del flujo de trabajo
Puedes acceder a los resultados de la ejecución del flujo de trabajo en la consola de Google Cloud o con gcloud CLI.
Console
En la consola de Google Cloud, ve a la página Workflows.
Para acceder a los resultados de la ejecución de un flujo de trabajo, haz clic en su nombre para ir a la página Detalles del flujo de trabajo.
Para obtener detalles sobre una ejecución en particular, en la pestaña Executions, haz clic en el ID de la ejecución en la lista para ir a la página Execution details.
En la pestaña Resumen, cada ejecución tiene la siguiente información:
- Estado de ejecución: Indica el estado final del flujo de trabajo, incluido el paso actual o final del flujo de trabajo.
- Inicio de ejecución: Es el momento en que comenzó la ejecución.
- Finalización de la ejecución: Indica cuándo finalizó la ejecución.
- Duración de la ejecución: Es el tiempo total transcurrido. Esto puede ser un indicador de errores de red o problemas de conectividad.
- Nombre del flujo de trabajo: Es el nombre del flujo de trabajo.
- Revisión del flujo de trabajo: Es la revisión actual en el momento de la ejecución.
- Nivel de registro de llamadas: El nivel de registro de llamadas aplicado durante la ejecución. En este documento, consulta Registro de llamadas.
- Entrada: Son los argumentos del entorno de ejecución que se pasan al flujo de trabajo, si los hay.
- Resultado: Es el resultado del flujo de trabajo. Si la ejecución falla, incluye los que provocó la falla de la ejecución. En este documento, consulta Mensajes de error de ejecución.
Para ver el historial de ejecución del flujo de trabajo como una lista de entradas de pasos, haz clic en la pestaña Pasos. Para obtener más información, consulta Consulta el historial de pasos de la ejecución.
Para ver los registros de la ejecución de un flujo de trabajo, haz clic en la pestaña Registros.
Para filtrar los registros de ejecución, usa el campo Filtro que se encuentra en la parte superior de la tabla. Por ejemplo, para mostrar solo los intentos de ejecución fallidos, ingresa
failed
en el campo de texto del filtro.
gcloud
Para ver una lista completa de las ejecuciones de un flujo de trabajo, ingresa lo siguiente: :
gcloud workflows executions list WORKFLOW_NAME
Reemplaza
WORKFLOW_NAME
por el nombre de tu flujo de trabajo. Copia el ID de la ejecución que te interesa.Para ver los registros de ejecución de un flujo de trabajo, ingresa el siguiente comando:
gcloud workflows executions describe \ --workflow=WORKFLOW_NAME \ EXECUTION_ID
Reemplaza lo siguiente:
WORKFLOW_NAME
: Es el nombre del flujo de trabajo.EXECUTION_ID
: El ID único de la ejecución
Este comando muestra un resultado similar al siguiente:
argument: 'null' endTime: '2022-07-19T12:40:07.070039707Z' error: context: |- The argument of 'in' must be a dict or an array; got: null in step "checkSearchTermInInput", routine "main", line: 12 payload: "{"message":"The argument of 'in' must be a dict or an array; got: null"
,"tags":["TypeError"]}" stackTrace: elements: - position: column: '26' length: '24' line: '12' routine: main step: checkSearchTermInInput name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/17ffc89c-0a27-4d2f-8356-e681d949a3d3 startTime: '2022-07-19T12:40:07.024823663Z' state: FAILED status: currentSteps: - routine: main step: checkSearchTermInInput workflowRevisionId: 000001-ac2argument
: Son los argumentos del entorno de ejecución que se pasan al flujo de trabajo, si los hay.endTime
: Cuando finalizó la ejecuciónerror
: Es el mensaje de error que se genera como parte de la excepción que provocó el error de ejecución.name
: Es el nombre completo de la ejecución, incluido el nombre de la proyecto, la ubicación del flujo de trabajo, el nombre del flujo de trabajo y el ID de ejecuciónstartTime
: cuándo comenzó la ejecuciónstate
: Indica el estado final del flujo de trabajo.status
: Es el paso actual o final del flujo de trabajo de la ejecución.workflowRevisionID
: Es la revisión actual en el momento de la ejecución.
Mapas de errores de ejecución
Cuando un flujo de trabajo arroja un error durante la ejecución que no está capturado en una
bloque try/except
,
ejecución falla y un mapa de errores (un diccionario JSON) que describe el error
que se devuelven.
Los errores arrojados durante la ejecución del flujo de trabajo contienen etiquetas para ayudarte a identificar
causó el error. Por ejemplo, el error que muestra un conector puede tener dos
claves (tags
y message
) similares a las siguientes:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
Puede haber más de una etiqueta. Para verificar si hay una etiqueta específica, puedes usar un expresión. Por ejemplo:
${'SystemError' in e.tags}
Los datos de errores de acceso se muestran como una cadena
Algunos conectores y APIs de HTTP serializan errores como cadenas antes de devolver
los errores. Puedes usar funciones de biblioteca estándar para restablecer una carga útil
error original. Por ejemplo, para convertir una cadena de error en un mapa, puedes usar las funciones json.decode
y text.encode
:
json.decode(text.encode(ERROR_FROM_API))
Etiquetas de error
En la siguiente tabla, se describe el significado de diferentes etiquetas de error.
Etiqueta | Descripción |
---|---|
AuthError | Se genera cuando falla la generación de credenciales para una solicitud HTTP. |
ConnectionError | Se genera cuando se establece correctamente una conexión con el extremo. pero hay un problema con la conexión durante la transferencia de datos. La conexión se cierra antes de que se reciba una respuesta completa y es posible que un mensaje no se haya entregado al extremo. Es posible que los reintentos no sean idempotentes. |
ConnectionFailedError | Se genera cuando no se establece una conexión con el extremo de API. para ejemplo, debido a un nombre de dominio incorrecto, problemas de resolución de DNS u otras problemas de red. Los reintentos son idempotentes. |
HttpError | Se genera cuando un
La solicitud HTTP falla
con un estado de error de HTTP. Cuando se genera esta excepción, la respuesta es un mapa con los siguientes elementos:
|
IndexError | Se genera cuando un subíndice de secuencia es un número entero fuera de rango. |
KeyError | Se genera cuando no se encuentra una clave de mapa en el conjunto de claves existentes. |
OperationError | Se genera cuando una operación de larga duración finaliza sin éxito. |
ParallelNestingError | Se incrementa cuando la cantidad máxima se supera la profundidad con la que se pueden anidar los pasos paralelos. |
RecursionError | Se genera cuando el intérprete detecta que se superó la profundidad máxima de la pila de llamadas. |
ResourceLimitError | Se genera cuando se agota algún límite de recursos. Cuando se genera de forma interna, este tipo de error no se puede detectar y causa una falla de ejecución inmediata. |
ResponseTypeError | Se genera cuando una operación de larga duración muestra una respuesta del tipo incorrecto. |
SystemError | Se genera cuando el intérprete encuentra un error interno. |
TimeoutError | Se genera cuando se agota el tiempo de espera de una función del sistema a nivel del sistema. |
TypeError | Se genera cuando se aplica una operación o función a un objeto de tipo incompatible. El valor asociado es una cadena que proporciona detalles sobre la discrepancia de tipo. |
UnhandledBranchError | Se genera cuando una o más ramas o iteraciones encuentran un error de entorno de ejecución no controlado hasta un cantidad máxima. |
ValueError | Se genera cuando una operación o función recibe un argumento que tiene el tipo correcto, pero un valor incorrecto, y la situación no se describe con una excepción más precisa, como una IndexError . |
ZeroDivisionError | Se genera cuando el segundo argumento de una operación de división o módulo es cero. El valor asociado es una cadena que indica el tipo de los operandos y la operación. |
También puedes generar errores personalizados
mediante la sintaxis raise
.
Verifica el estado de las ejecuciones
Existen varios comandos que te ayudan a verificar el estado de la ejecución de un flujo de trabajo.
Para recuperar una lista de los intentos de ejecución de un flujo de trabajo y sus IDs, ingresa el siguiente comando:
gcloud workflows executions list WORKFLOW_NAME
Reemplaza
WORKFLOW_NAME
por el nombre del flujo de trabajo.El comando muestra un valor
NAME
similar al siguiente:projects/PROJECT_NUMBER/locations/REGION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID
Copia el ID de ejecución para usarlo en el siguiente comando.
Para verificar el estado de un intento de ejecución y esperar a que el intento finaliza, ingresa el siguiente comando:
gcloud workflows executions wait EXECUTION_ID
Reemplaza
EXECUTION_ID
por el ID del intento de ejecución.El comando espera a que finalice el intento de ejecución y, luego, muestra el resultados.
Para esperar hasta que se complete la última ejecución y, luego, mostrar el resultado de la ejecución completada, ingresa el siguiente comando:
gcloud workflows executions wait-last
Si realizaste un intento de ejecución anterior en la misma sesión de
gcloud
, el comando espera a que finalice el intento de ejecución anterior y, luego, muestra los resultados de la ejecución completada. Si no existe ningún intento anterior,gcloud
muestra el siguiente error:ERROR: (gcloud.workflows.executions.wait-last) [NOT FOUND] There are no cached executions available.
Para obtener el estado de la última ejecución, ingresa el siguiente comando:
gcloud workflows executions describe-last
Si realizaste un intento de ejecución anterior en la misma sesión de
gcloud
, el muestra los resultados de la última ejecución, incluso si está en ejecución. Si no existe ningún intento anterior,gcloud
muestra el siguiente error:ERROR: (gcloud.beta.workflows.executions.describe-last) [NOT FOUND] There are no cached executions available.
Filtrar ejecuciones
Puedes aplicar filtros a la lista de ejecuciones de flujos de trabajo que muestra el método workflows.executions.list
.
Puedes filtrar por los siguientes campos:
createTime
disableOverflowBuffering
duration
endTime
executionId
label
startTime
state
stepName
workflowRevisionId
Por ejemplo, para filtrar en una etiqueta (labels."fruit":"apple"
), puedes realizar una solicitud a la API similar a la siguiente:
GET https://workflowexecutions.googleapis.com/v1/projects/MY_PROJECT/locations/MY_LOCATION/workflows/MY_WORKFLOW/executions?view=full&filter=labels.%22fruit%22%3A%22apple%22"
Aquí:
view=full
especifica una vista que define qué campos se deben completar en la ejecuciones devueltas; En este caso, todos los datoslabels.%22fruit%22%3A%22apple%22
es la sintaxis del filtro codificada en URL.
Para obtener más información, consulta Filtrado de AIP-160.
Envía registros a Cloud Logging
Workflows genera automáticamente registros de ejecución para el flujo de trabajo. ejecuciones en Cloud Logging.
También puedes habilitar el registro de llamadas. O bien, puedes crear registros personalizados que usen
la función sys.log
en tu fuente. El registro de llamadas y los registros personalizados te permiten controlar cuándo se envían los registros a Logging durante la ejecución de un flujo de trabajo y pueden ser especialmente útiles cuando depuras tu flujo de trabajo.
Para obtener más detalles, incluidos los archivos de proto de registro engine_call
y executions_system
, consulta este repositorio de GitHub.
Registros de ejecución
Cada ejecución de flujo de trabajo activa automáticamente al menos dos registros de ejecución: una al inicio de una ejecución y otra al final.
Para obtener más información sobre los registros de la plataforma Workflows que están disponibles en Logging, consulta los registros de la plataforma de Google Cloud.
Registro de llamadas
Puedes establecer una marca para que se registre cada paso de llamada durante la ejecución de tu flujo de trabajo y se muestren los nombres de los pasos, los nombres de las funciones, los argumentos de las funciones y las respuestas de las llamadas. También puedes registrar excepciones que se detectan o que detienen una llamada.
Solo se registran los pasos explícitos de la llamada. por ejemplo, llamadas a subflujos de trabajo o
las funciones de biblioteca. Llamadas desde las expresiones o desde la interfaz
funciones de biblioteca (por ejemplo, http.post
en sys.log
) y conectores internos
no se registran.
Los encabezados de solicitud Authorization
HTTP se ocultan de los registros de las llamadas HTTP.
Al aplicar el registro de llamadas a un definición del flujo de trabajo o a la la ejecución de un flujo de trabajo puedes especificar el nivel de registro requerido. El nivel de registro de ejecución tiene prioridad sobre cualquier nivel de registro de flujo de trabajo, a menos que no se especifique el nivel de registro de ejecución (predeterminado). En ese caso, se aplica el nivel de registro del flujo de trabajo.
Ten en cuenta que el límite de tamaño de entrada de registro que establece Cloud Logging también se aplica al registro de llamadas.
Registros personalizados
Para crear una entrada de registro en Logging durante la ejecución de un flujo de trabajo,
Define un paso en el flujo de trabajo que realiza una llamada a la biblioteca estándar sys.log
.
función:
YAML
- step1: assign: - varA: "Hello" - varB: "World" - logStep: call: sys.log args: text: TEXT severity: SEVERITY - step2: return: ${varA + " " + varB}
JSON
[ { "step1": { "assign": [ { "varA": "Hello" }, { "varB": "World" } ] } }, { "logStep": { "call": "sys.log", "args": { "text": "TEXT", "severity": "SEVERITY" } } }, { "step2": { "return": "${varA + " " + varB}" } } ]
Cuando crees una entrada de registro, define lo siguiente:
TEXT
: Obligatorio. El texto que se registrará. Si necesitas Para registrar los valores de un mapa, usa${json.encode_to_string(myMap)}
.SEVERITY
: es opcional. El nivel de gravedad del registro entrada. Por ejemplo,INFO
,WARNING
oCRITICAL
.
Para obtener más información, consulta la referencia de la función sys.log
.
Permisos necesarios
Para aplicar el registro de llamadas o enviar registros personalizados a Logging, un flujo de trabajo
debe estar asociado con una cuenta de servicio que incluya la
permiso logging.logEntries.create
(por ejemplo, roles/logging.logWriter
de seguridad en la nube). Si necesitas cambiar la cuenta de servicio actualizada con tu flujo de trabajo, consulta Actualiza un flujo de trabajo.
Para obtener más información sobre cómo crear cuentas de servicio y asignar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Ver registros del flujo de trabajo
Puedes ver los registros en Flujos de trabajo o en Registro. Para ver los registros de un solo flujo de trabajo, usa la pestaña Registros en Flujos de trabajo. Para obtener una vista agregada de los registros de todos de tus flujos de trabajo, usa la página Explorador de registros en Logging.
Ver registros en Workflows
Para ver los registros de un flujo de trabajo en Workflows, haz lo siguiente:
En la consola de Google Cloud, ve a la página Workflows.
Para acceder a los registros de un flujo de trabajo, haz clic en su nombre para ir a la página Detalles.
Para ver los registros, haz clic en Registros.
Para filtrar los registros por gravedad, en la lista Predeterminada, selecciona el tipo de registro que deseas mostrar. De forma predeterminada, se muestran los registros de todos los niveles de gravedad.
En la pestaña Registros de la página Detalles de un flujo de trabajo, se muestran los siguientes tipos de registros:
Registros enviados a Logging
Registros de auditoría de cualquier operación realizada en el flujo de trabajo, como las actualizaciones de la definición del flujo de trabajo
Visualiza registros en Logging
Para ver los registros en Logging, sigue estos pasos:
En la consola de Google Cloud, ve a la página Explorador de registros:
En el Compilador de consultas, haz clic en Recurso y, luego, ingresa
workflow
. Seleccionar Cloud Workflow en la lista y haz clic en Agregar.Haz clic en Ejecutar consulta.
Para obtener más información sobre la visualización de registros en Logging, consulta Usa el Explorador de registros.