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
- Si nunca usaste Batch, consulta Cómo comenzar a usar Batch y habilita Batch completando los requisitos previos para proyectos y usuarios.
-
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:
-
Editor de trabajos por lotes (
roles/batch.jobsEditor
) en el proyecto -
Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la cuenta de servicio del trabajo, que, de forma predeterminada, es la cuenta de servicio predeterminada de Compute Engine
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.
-
Editor de trabajos por lotes (
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?
- Si tienes problemas para crear o ejecutar una tarea, consulta Solución de problemas.
- Obtén más información para ver los eventos de estado.
- Obtén más información para escribir registros de tareas.
- Obtén más información sobre las opciones de creación de trabajos.