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 describan cuándo se inicia un elemento ejecutable, cuándo finaliza, cuándo se alcanza un elemento ejecutable de barrera o cuándo ocurre un evento importante durante la progresión de tu código.
Antes de comenzar
- Si nunca usaste Batch, revisa Comienza a usar Batch y habilitar Batch completando el requisitos previos para los proyectos y usuarios.
-
Para obtener los permisos que necesitas para crear un trabajo, pídele a tu administrador que te otorgue 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 contener ejecutable o una secuencia de comandos ejecutable, 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, la API de Batch o
biblioteca.
gcloud
Usa Google Cloud CLI para
crear un trabajo que
incluya el campo displayName
en una o más definiciones de runnables
en el archivo JSON:
...
"runnables": [
{
"displayName":DISPLAY_NAME,
...
}
]
...
Por ejemplo, un trabajo con eventos de estado personalizados que describe cada el estado de runnable 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 de la tarea, por ejemplo, script 1
, barrier 1
y
script 2
.
API
Usa la API de REST para
crear una tarea que
incluya el campo displayName
en una o más definiciones de runnables
en el archivo JSON:
...
"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 de la tarea, por ejemplo, script 1
, barrier 1
y
script 2
.
Go
Java
Node.js
Python
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 escriben un registro de tareas estructurado que define el campo JSON batch/custom/event
, se produce un evento de estado personalizado en ese momento. Aunque puedes configurar una estructura
registro de tareas para incluir campos adicionales, el evento de estado personalizado solo incluye
la cadena para el 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 imprimiendo 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 ocurre un evento importante puede tener un archivo de configuración JSON similar al 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
.
Una vez que se termina de ejecutar la tarea de ejemplo, el evento de estado personalizado resultante para cada tarea es similar al siguiente:
statusEvents:
...
- description: EVENT_DESCRIPTION
eventTime: '...'
type: RUNNABLE_CUSTOM_EVENT
...
¿Qué sigue?
- Si tienes problemas para crear o ejecutar un trabajo, consulta Solución de problemas.
- Obtén más información para ver los eventos de estado.
- Obtén más información sobre cómo escribir registros de tareas.
- Obtén más información sobre las opciones de creación de trabajos.