Dokumen ini menjelaskan cara mengonfigurasi peristiwa status kustom, yang menjelaskan runnable tugas, saat Anda membuat dan menjalankan tugas Batch. Untuk mempelajari peristiwa status, lihat Melihat histori tugas melalui peristiwa status.
Peristiwa status kustom memungkinkan Anda memberikan detail tambahan dalam histori tugas tentang progres runnable-nya, yang dapat membantu mempermudah analisis dan pemecahan masalah tugas. Misalnya, Anda dapat mengonfigurasi peristiwa status kustom yang menjelaskan kapan runnable dimulai, runnable berakhir, runnable penghalang tercapai, atau peristiwa penting terjadi selama progres kode Anda.
Sebelum memulai
- Jika belum pernah menggunakan Batch, baca Mulai menggunakan Batch dan aktifkan Batch dengan menyelesaikan prasyarat untuk project dan pengguna.
-
Untuk mendapatkan izin yang diperlukan untuk membuat tugas, minta administrator untuk memberi Anda peran IAM berikut:
-
Batch Job Editor (
roles/batch.jobsEditor
) di project -
Pengguna Akun Layanan (
roles/iam.serviceAccountUser
) di akun layanan tugas, yang secara default adalah akun layanan Compute Engine default
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Batch Job Editor (
Mengonfigurasi peristiwa status kustom
Konfigurasikan peristiwa status kustom menggunakan satu atau beberapa opsi berikut saat Anda membuat tugas:
Jelaskan status runnable dengan menentukan nama tampilannya. Anda dapat melakukannya saat membuat tugas menggunakan gcloud CLI atau Batch API.
Tunjukkan peristiwa runtime penting dengan menulis log tugas terstruktur dengan kolom
batch/custom/event
untuk setiap peristiwa. Anda dapat melakukannya saat menggunakan metode apa pun untuk membuat tugas sebagai bagian dari definisi skrip dan runnable penampung.
Menjelaskan status runnable
Anda dapat mengonfigurasi peristiwa status kustom yang mendeskripsikan status runnable dengan
menentukan nama tampilan runnable
(kolom displayName
).
Peristiwa status kustom yang dihasilkan sedikit berbeda untuk berbagai jenis
runnable:
Jika Anda menentukan nama tampilan untuk penampung yang dapat dijalankan atau skrip yang dapat dijalankan, Batch akan otomatis menambahkan dua jenis peristiwa status kustom. Peristiwa status kustom pertama menunjukkan setiap kali tugas memulai yang dapat dijalankan ini. Peristiwa status kustom kedua menunjukkan setiap kali tugas menyelesaikan perintah yang dapat dijalankan ini dan kode keluar yang sesuai.
Jika Anda menentukan nama tampilan untuk barrier runnable, Batch akan otomatis menambahkan peristiwa status kustom yang menunjukkan setiap kali tugas mencapai batasan ini.
Untuk membuat dan menjalankan tugas dengan peristiwa status kustom yang menjelaskan
status runnable, tentukan kolom displayName
untuk satu atau beberapa
runnable menggunakan gcloud CLI, Batch API, atau
library.
gcloud
Gunakan Google Cloud CLI untuk
membuat tugas yang
menyertakan kolom displayName
dalam satu atau beberapa definisi runnables
dalam file JSON:
...
"runnables": [
{
"displayName":DISPLAY_NAME,
...
}
]
...
Misalnya, tugas dengan peristiwa status kustom yang mendeskripsikan setiap status yang dapat dijalankan dapat memiliki file konfigurasi JSON yang mirip dengan berikut:
{
"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"
}
}
Ganti DISPLAY_NAME1
,
DISPLAY_NAME2
, dan
DISPLAY_NAME3
dengan nama yang dapat dijalankan, yang
harus unik dalam tugas—misalnya, script 1
, barrier 1
, dan
script 2
.
API
Gunakan REST API untuk
membuat tugas yang
menyertakan kolom displayName
dalam satu atau beberapa definisi runnables
dalam file JSON:
...
"runnables": [
{
"displayName":DISPLAY_NAME,
...
}
]
...
Misalnya, tugas dengan peristiwa status kustom yang mendeskripsikan setiap status yang dapat dijalankan dapat memiliki file konfigurasi JSON yang mirip dengan berikut:
{
"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"
}
}
Ganti DISPLAY_NAME1
,
DISPLAY_NAME2
, dan
DISPLAY_NAME3
dengan nama yang dapat dijalankan, yang
harus unik dalam tugas—misalnya, script 1
, barrier 1
, dan
script 2
.
Go
Java
Node.js
Python
Setelah contoh tugas selesai berjalan, peristiwa status kustom yang dihasilkan untuk setiap tugas mirip dengan berikut ini:
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
...
Menunjukkan peristiwa runtime penting
Anda dapat mengonfigurasi peristiwa status kustom yang menunjukkan kapan peristiwa penting terjadi saat runnable berjalan dengan mengonfigurasi runnable tersebut untuk menulis log tugas terstruktur yang menentukan string untuk kolom peristiwa status kustom Batch (batch/custom/event
).
Jika penampung yang dapat dijalankan atau skrip yang dapat dijalankan menulis log tugas terstruktur
yang menentukan kolom JSON batch/custom/event
, penampung atau skrip tersebut akan menghasilkan
peristiwa status kustom pada saat itu. Meskipun Anda dapat mengonfigurasi log tugas terstruktur untuk menyertakan kolom tambahan, peristiwa status kustom hanya menyertakan string untuk kolom batch/custom/event
.
Untuk membuat dan menjalankan tugas dengan peristiwa status kustom yang menunjukkan kapan peristiwa penting terjadi, konfigurasikan satu atau beberapa runnable untuk menulis log terstruktur dengan mencetak JSON dan menentukan kolom batch/custom/event
sebagai bagian dari log.
...
"runnables": [
{
...
"echo '{\"batch/custom/event\":\"EVENT_DESCRIPTION\"}'"
...
}
]
...
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
...
Misalnya, tugas dengan peristiwa status kustom yang menunjukkan kapan peristiwa penting terjadi dapat memiliki file konfigurasi JSON yang mirip dengan berikut:
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "sleep 30; echo '{\"batch/custom/event\": \"EVENT_DESCRIPTION\"}'; sleep 30"
}
}
]
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Ganti EVENT_DESCRIPTION
dengan deskripsi untuk peristiwa status kustom, misalnya, halfway done
.
Setelah contoh tugas selesai berjalan, peristiwa status kustom yang dihasilkan untuk setiap tugas mirip dengan berikut ini:
statusEvents:
...
- description: EVENT_DESCRIPTION
eventTime: '...'
type: RUNNABLE_CUSTOM_EVENT
...
Langkah selanjutnya
- Jika Anda mengalami masalah saat membuat atau menjalankan tugas, lihat Pemecahan masalah.
- Pelajari cara melihat peristiwa status.
- Pelajari cara menulis log tugas.
- Pelajari opsi pembuatan tugas lainnya.