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 Anda perlukan 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 pemberian 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
Konfigurasi 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/eventuntuk setiap peristiwa. Anda dapat melakukannya saat menggunakan metode apa pun untuk membuat tugas sebagai bagian dari definisi runnable skrip dan container.
Menjelaskan status runnable
Anda dapat mengonfigurasi peristiwa status kustom yang menjelaskan status runnable dengan
menentukan nama tampilan runnable
(displayName kolom).
Peristiwa status kustom yang dihasilkan sedikit berbeda untuk berbagai jenis runnable:
Jika Anda menentukan nama tampilan untuk runnable container atau runnable skrip, Batch akan otomatis menambahkan dua jenis peristiwa status kustom. Peristiwa status kustom pertama menunjukkan kapan pun tugas memulai runnable ini. Peristiwa status kustom kedua menunjukkan kapan pun tugas menyelesaikan runnable ini dan kode keluar yang sesuai .
Jika Anda menentukan nama tampilan untuk runnable penghalang, Batch akan otomatis menambahkan peristiwa status kustom yang menunjukkan kapan pun tugas mencapai penghalang 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 menjelaskan status setiap runnable dapat memiliki file konfigurasi JSON yang mirip dengan berikut ini:
{
"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 runnable, 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 menjelaskan status setiap runnable dapat memiliki file konfigurasi JSON yang mirip dengan berikut ini:
{
"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 runnable, yang harus unik dalam tugas—misalnya, script 1, barrier 1, dan script 2.
Go
Java
Node.js
Python
Setelah tugas contoh selesai berjalan, peristiwa status kustom yang dihasilkan untuk setiap tugas akan 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 runnable container atau runnable skrip menulis log tugas terstruktur yang menentukan kolom JSON batch/custom/event, peristiwa status kustom akan dihasilkan 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, konfigurasi 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 ini:
{
"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 tugas contoh selesai berjalan, peristiwa status kustom yang dihasilkan untuk setiap tugas akan mirip dengan berikut ini:
statusEvents:
...
- description: EVENT_DESCRIPTION
eventTime: '...'
type: RUNNABLE_CUSTOM_EVENT
...
Langkah berikutnya
- 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.