Soluciona problemas

Conoce estrategias útiles para solucionar problemas si tienes problemas con flujos de trabajo.

Solucionar errores de implementación

Cuando se implementa un flujo de trabajo, Workflow verifica que el código fuente no tenga errores y coincida con la sintaxis de lenguaje. Los flujos de trabajo muestran un error si se encuentra uno. Los tipos de errores de implementación más comunes son los siguientes:

  • Haz referencia a una variable, un paso o un subflujo de trabajo indefinido
  • Sintaxis incorrecta
    • Sangría incorrecta
    • {, }, ", - o : faltantes o irrelevantes

Por ejemplo, el siguiente código fuente genera un error de implementación porque la declaración de muestra hace referencia a una variable no definida: varC:

- step1:
    assign:
    - varA: "Hello"
    - varB: "World"
- step2:
    return: ${varC + varB}

Este código fuente incorrecto se usará en los siguientes ejemplos de Cloud Console y SDK de Cloud.

Console

Cuando se produce un error de implementación, Workflows muestra el mensaje de error en un banner rojo sobre el código fuente del flujo de trabajo:

Error en la implementación

El mensaje de error marca el problema en el código fuente y especifica dónde se originó el error cuando sea posible:

Could not deploy workflow: failed to build: error in step step2: error
evaluating return value: symbol 'varC' is neither a variable nor a
sub-workflow name (Code: 3)

gcloud

Cuando ejecutas el comando gcloud workflows deploy, los flujos de trabajo muestran un mensaje de error en la línea de comandos si la implementación falla. El mensaje de error marca el problema en el código fuente y especifica dónde se originó el error cuando sea posible:

ERROR: (gcloud.beta.workflows.deploy) [INVALID_ARGUMENT] failed to build:
error in step step2: error evaluating return value: symbol 'varC' is neither
a variable nor a sub-workflow name

Edita el código fuente del flujo de trabajo para solucionar el problema. En este caso, actualiza la referencia a varC a varA en su lugar.

Accede a los registros de implementación y eliminación de flujo de trabajo

Puedes acceder a los registros de errores relacionados con la implementación y eliminación de un flujo de trabajo en Cloud Console.

  1. Ve a la página de flujos de trabajo en Google Cloud Console:
    Ir a la página de flujos de trabajo

  2. A fin de ver los registros de un flujo de trabajo, haz clic en su nombre para ir a la página de Detalles.

  3. Selecciona la pestaña Registros.

  4. Para filtrar los registros por gravedad, selecciona el menú desplegable Predeterminado y, luego, selecciona los tipos de errores que se mostrarán.

Accede a los resultados de ejecución de flujos de trabajo

Puedes acceder a los resultados de la ejecución del flujo de trabajo en Cloud Console o mediante el SDK de Cloud.

Console

  1. Ve a la página de flujos de trabajo en Google Cloud Console:
    Ir a la página de flujos de trabajo

  2. A fin de acceder a los resultados de ejecución de un flujo de trabajo, haz clic en el nombre para ir a la página Detalles (Details).

  3. Para obtener detalles sobre una ejecución en particular, haz clic en el ID de la ejecución en la lista. Cada ejecución tiene la siguiente información:

    • Estado de ejecución: indica el estado final del flujo de trabajo.
    • Inicio de ejecución: Indica cuándo comenzó la ejecución.
    • Finalización de la ejecución: cuando finalizó la ejecución.
    • Duración de la ejecución: Tiempo total transcurrido. Esto puede indicar errores de red o de conectividad.
    • Resultado: el resultado del flujo de trabajo. Si la ejecución falla, incluye la excepción que lleva a la falla de la ejecución. Consulta la sección Mensajes de error de ejecución para obtener más detalles.
    • Entrada: Los argumentos del entorno de ejecución que se pasaron al flujo de trabajo, si los hay.
  4. Si deseas ver los registros de todas las ejecuciones de un flujo de trabajo, haz clic en Registros para abrir la pestaña Registros.

  5. Para filtrar los registros de ejecución, usa el campo Filtro 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.

    Filtrar registros de ejecución

gcloud

  1. Para ver una lista completa de las ejecuciones de un flujo de trabajo, ingresa el siguiente comando:

    gcloud workflows executions list [WORKFLOW-NAME]
    

    Reemplaza [WORKFLOW-NAME] con el nombre de tu flujo de trabajo. Copia el ID de ejecución de la ejecución que te interesa.

  2. 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]: el nombre del flujo de trabajo
    • [EXECUTION-ID]: El ID único de la ejecución.

Este comando muestra un resultado similar al siguiente:

argument: '{"message":"I love it so much!"}'
endTime: '2020-07-21T17:48:16.438109757Z'
error: 'in step "sentimentCheck": {"message":"KeyError: key not found: messaage","tags":["KeyError","LookupError"]}'
name: projects/********/locations/us-central1/workflows/sentimentCheck/executions/e8103c53-72ba-4af7-8996-f5a8337c2a7
startTime: '2020-10-12T17:48:16.342177302Z'
state: FAILED
workflowRevisionId: '000009-e6d'

El resultado contiene la información siguiente:

  • argument: Los argumentos del entorno de ejecución que se pasaron al flujo de trabajo, si los hay.
  • endTime: Cuando la ejecución finalizó.
  • error: El mensaje de error que se muestra como parte de la excepción que provocó la falla de la ejecución.
  • name: El nombre completo de la ejecución, incluido el nombre del proyecto, la ubicación del flujo de trabajo, el nombre del flujo de trabajo y el ID de ejecución.
  • startTime: Cuando comenzó la ejecución.
  • state: indica el estado final del flujo de trabajo.
  • workflowRevisionID: La revisión actual en el momento de la ejecución.

Mensajes de error de ejecución

Cuando un flujo de trabajo genera una excepción durante la ejecución que no está detectada en un bloque de prueba/excepto, la ejecución falla y se muestra un diccionario de error.

Los errores generados durante la ejecución del flujo de trabajo contienen etiquetas que te ayudan a identificar la causa del error. En la siguiente tabla, se describe el significado de diferentes etiquetas de error.

Etiqueta de error Descripción
TypeError Se genera cuando una operación o función se aplica a un objeto de tipo incompatible. El valor asociado es una string que brinda detalles sobre la falta de coincidencia del tipo.
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 un "IndexError".
IndexError. Se genera cuando una subsecuencia de secuencia es un número entero fuera del rango.
ErrorError Se genera cuando no se encuentra una clave de diccionario en el conjunto de claves existentes.
RecursionError Se genera cuando el intérprete detecta que se supera la profundidad máxima de la recursión.
ZeroDivisionError Se genera cuando el segundo argumento de una operación de división o módulo es cero. El valor asociado es una string que indica el tipo de operandos y la operación.
ErrorError del sistema Se genera cuando el intérprete encuentra un error interno.
Tiempo de espera Se genera cuando una función del sistema agota el tiempo de espera en el nivel del sistema.
ResourceLimitError. Se genera cuando se agota un límite de recursos. Cuando se genera de forma interna, este tipo de error no se puede detectar y provoca una falla inmediata de la ejecución.
HttpError. Se genera cuando una solicitud HTTP falla con un estado de error HTTP. Cuando se genera esta excepción, la respuesta es un diccionario con los siguientes elementos:
* mensaje: mensaje de error de lenguaje natural * Código - código de estado de respuesta HTTP * encabezados: encabezados de respuesta * cuerpo - cuerpo de la respuesta

También puedes generar excepciones personalizadas con la sintaxis raise:. Ten en cuenta que las excepciones definidas por el usuario pueden reemplazar elementos en el diccionario de errores existente.

Enviar registros a Cloud Logging

Los flujos de trabajo no generan registros de forma automática para las ejecuciones del flujo de trabajo en Cloud Logging. En cambio, puedes controlar cuándo se envían los registros a Logging durante la ejecución del flujo de trabajo. Los registros que eliges enviar a Logging se denominan registros personalizados.

Permisos necesarios para el registro

Para enviar registros personalizados a Logging, se debe asociar un flujo de trabajo con una cuenta de servicio que tenga la función roles/logging.logWriter. 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 funciones, consulta Cómo otorgar, cambiar y revocar el acceso a los recursos.

Crea entradas de registro durante la ejecución

Para crear una entrada de registro en Logging durante una ejecución del flujo de trabajo, define un paso en el flujo de trabajo que realice una llamada al subflujo de trabajo sys.log incorporado:

- step1:
    assign:
        - varA: "Hello"
        - varB: "World"
- logStep:
    call: sys.log
    args:
        text: TEXT
        severity: SEVERITY 
- step2:
    return: ${varA + " " + varB}

Cuando creas una entrada de registro, define lo siguiente:

  • TEXT: Obligatorio. Texto que se registrará Si necesitas registrar los valores de un diccionario, usa ${json.encode_to_string(myDictionary)}.
  • SEVERITY: Opcional El nivel de gravedad de la entrada de registro. Por ejemplo, INFO, WARNING o CRITICAL. Para ver una lista completa de los niveles de gravedad, consulta la referencia de Logging.

Visualiza registros de flujo de trabajo personalizados

Puedes ver registros personalizados en flujos de trabajo o en Logging. Para ver los registros personalizados de un solo flujo de trabajo, usa la pestaña Registros en flujos de trabajo. Para obtener una vista agregada de los registros personalizados de todos tus flujos de trabajo, usa la página Explorador de registros en Logging.

Cómo ver registros en flujos de trabajo

Para ver los registros personalizados de un flujo de trabajo en flujos de trabajo, haz lo siguiente:

  1. Ve a la página de flujos de trabajo en Google Cloud Console:
    Ir a la página de flujos de trabajo

  2. A fin de acceder a los registros personalizados de un flujo de trabajo, haz clic en el nombre para ir a la página Detalles (Details).

  3. Para ver los registros personalizados, haz clic en Registros.

  4. Para filtrar los registros por gravedad, haz clic en el menú desplegable Predeterminada y, luego, selecciona la gravedad de los registros que deseas ver. De forma predeterminada, se muestran los registros de todos los niveles de gravedad.

La pestaña Registros en la página Detalles de un flujo de trabajo muestra los siguientes tipos de registros:

  • Registros personalizados enviados a Logging

  • Registros de auditoría de las operaciones realizadas en el flujo de trabajo, como las actualizaciones de la definición del flujo de trabajo

Visualiza registros en Logging

Para ver registros personalizados en Logging, haz lo siguiente:

  1. Ve a la página Explorador de registros en Cloud Console:
    Ir al Explorador de registros

  2. En laCompilador de consultas , clicRecurso y, luego, ingresa "flujo de trabajo". Luego, seleccionaFlujo de trabajo de la lista y haga clic enAgrega para crear el adjunto de VLAN de supervisión.

    Registro del flujo de trabajo

  3. Haga clic en Run query.

Para obtener más información sobre cómo ver registros en Logging, consulta Usa el Explorador de registros.