Configura eventos de estado personalizados para describir los ejecutables

En este documento, se explica cómo configurar eventos de estado personalizados, que describen los ejecutables de un trabajo, cuando creas y ejecutas un trabajo por lotes. Para obtener más información sobre los eventos de estado, consulta Ver el historial de un trabajo a través de eventos de estado.

Los eventos de estado personalizados te permiten proporcionar detalles adicionales en el historial de una tarea sobre el progreso de sus elementos ejecutables, lo que puede ayudar a que una tarea sea más fácil de analizar y solucionar problemas. Por ejemplo, puedes configurar eventos de estado personalizados que describen cuándo comienza un ejecutable, termina un ejecutable, una barrera alcanzable o un evento importante durante la progresión del tu código.

Antes de comenzar

  1. Si nunca usaste Batch, consulta Cómo comenzar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
  2. A fin de obtener los permisos que necesitas para crear un trabajo, solicita a tu administrador que te otorgue el los siguientes roles de IAM:

    Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

    También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Configura eventos de estado personalizados

Configura eventos de estado personalizados usando una o más de las siguientes opciones cuando creas un trabajo:

  • Describir el estado de un ejecutable definiendo su nombre visible. Puedes hacerlo cuando creas un trabajo con gcloud CLI o la API de Batch.

  • Indicar eventos de entorno de ejecución importantes escribiendo un registro estructurado de tareas con el campo batch/custom/event para cada evento. Puedes hacerlo cuando uses cualquier método para crear un trabajo. como parte de las definiciones de ejecutables del contenedor y la secuencia de comandos.

Describir el estado de un ejecutable

Puedes configurar eventos de estado personalizados que describan el estado de un elemento ejecutable si defines su nombre visible (campo displayName). Los eventos de estado personalizados resultantes varían ligeramente según los diferentes tipos de ejecutables:

  • Si defines un nombre visible para un contenedor ejecutable o una secuencia de comandos ejecutable, Luego, Batch agrega automáticamente dos tipos de eventos de estado personalizados. El primer evento de estado personalizado indica cada vez que una tarea inicia esta ejecutable. El segundo evento de estado personalizado indica cada vez que finaliza una tarea. este ejecutable código de salida.

  • Si defines un nombre visible para un ejecutable de barrera Luego, Batch agrega automáticamente un evento de estado personalizado que indica cuando una tarea alcanza esa barrera.

Para crear y ejecutar un trabajo con eventos de estado personalizados que describan un runnable, define el campo displayName para uno o más ejecutables con gcloud CLI o la API de Batch.

...
"runnables": [
  {
    "displayName":DISPLAY_NAME,
    ...
  }
]
...

Por ejemplo, un trabajo con eventos de estado personalizados que describen el estado de cada elemento ejecutable puede tener un archivo de configuración JSON similar al siguiente:

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "displayName":"DISPLAY_NAME1",
            "script": {
              "text": "echo Hello world from script 1 for task ${BATCH_TASK_INDEX}"
            }
          },
          {
            "displayName":"DISPLAY_NAME2",
            "barrier": {}
          },
          {
            "displayName":"DISPLAY_NAME3",
            "script": {
              "text": "echo Hello world from script 2 for task ${BATCH_TASK_INDEX}"
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

Reemplaza DISPLAY_NAME1: DISPLAY_NAME2 y DISPLAY_NAME3 por el nombre del ejecutable, que debe ser único dentro del trabajo, por ejemplo, script 1, barrier 1 y script 2

Una vez que se haya ejecutado el trabajo de ejemplo, los eventos de estado personalizados resultantes para cada tarea serán similares a los siguientes:

statusEvents:
  ...
  - description: 'script at index #0 with display name [DISPLAY_NAME1] started.'
    eventTime: '...'
    type: RUNNABLE_EVENT
  - description: 'script at index #0 with display name [DISPLAY_NAME1] finished with exit
      code 0.'
    eventTime: '...'
    type: RUNNABLE_EVENT
  - description: 'barrier at index #2 with display name [DISPLAY_NAME2] reached.'
    eventTime: '...'
    type: BARRIER_REACHED_EVENT
  - description: 'script at index #2 with display name [DISPLAY_NAME3] started.'
    eventTime: '...'
    type: RUNNABLE_EVENT
  - description: 'script at index #2 with display name [DISPLAY_NAME3] finished with exit
      code 0.'
    eventTime: '...'
    type: RUNNABLE_EVENT
  ...

Indica eventos importantes del entorno de ejecución

Puedes configurar eventos de estado personalizados para indicar cuándo ocurre un evento importante que ocurre mientras se ejecuta un ejecutable a través de la configuración de ese ejecutable registro estructurado de tareas que define una cadena para el procesamiento campo de evento de estado personalizado (batch/custom/event).

Si un contenedor ejecutable o una secuencia de comandos ejecutable escribe un registro estructurado de tareas que define el campo JSON batch/custom/event, produce un evento de estado personalizado en ese momento. Aunque puedes configurar el registro de tareas estructurado para que incluya campos adicionales, el evento de estado personalizado solo incluye la cadena del campo batch/custom/event.

Para crear y ejecutar un trabajo con eventos de estado personalizados que indiquen cuándo se cuando ocurra un evento importante, configura uno o más ejecutables Escribe un registro estructurado mediante la impresión de JSON y define el campo batch/custom/event como parte del registro.

...
"runnables": [
  {
    ...
    "echo '{\"batch/custom/event\":\"EVENT_DESCRIPTION\"}'"
    ...
  }
]
...
"logsPolicy": {
  "destination": "CLOUD_LOGGING"
}
...

Por ejemplo, un trabajo con eventos de estado personalizados que indican cuándo se evento importante puede tener un archivo de configuración JSON similar por lo siguiente:

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "sleep 30; echo '{\"batch/custom/event\": \"EVENT_DESCRIPTION\"}'; sleep 30"
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}

Reemplaza EVENT_DESCRIPTION por una descripción de evento de estado personalizado, por ejemplo, halfway done.

Cuando el trabajo de ejemplo termine de ejecutarse, el evento de estado personalizado resultante para cada tarea es similar a lo siguiente:

statusEvents:
  ...
  - description: EVENT_DESCRIPTION
    eventTime: '...'
    type: RUNNABLE_CUSTOM_EVENT
  ...

¿Qué sigue?