Halaman ini memberikan informasi untuk membantu Anda memantau deployment dan eksekusi alur kerja.
Mengakses log deployment dan penghapusan alur kerja
Anda dapat mengakses log error yang terkait dengan deployment dan penghapusan alur kerja di Konsol Google Cloud.
Di konsol Google Cloud, buka halaman Workflows.
Klik nama alur kerja untuk menampilkan halaman Detail alur kerja.
Klik tab Logs.
Untuk memfilter log menurut tingkat keparahan, dalam daftar Default, pilih jenis log yang akan ditampilkan.
Mengakses hasil eksekusi alur kerja
Anda dapat mengakses hasil eksekusi alur kerja di Google Cloud Console atau dengan menggunakan gcloud CLI.
Konsol
Di konsol Google Cloud, buka halaman Workflows.
Untuk mengakses hasil eksekusi alur kerja, klik nama alur kerja untuk membuka halaman Detail alur kerja.
Untuk detail tentang eksekusi tertentu, pada tab Executions, klik ID eksekusi dalam daftar untuk membuka halaman Execution details.
Pada tab Ringkasan, setiap eksekusi memiliki informasi berikut:
- Execution state: menunjukkan status akhir alur kerja, termasuk langkah alur kerja saat ini atau akhir.
- Execution start: saat eksekusi dimulai.
- Execution end: saat eksekusi berakhir.
- Durasi eksekusi: total waktu berlalu. Hal ini dapat menjadi indikasi error jaringan atau masalah konektivitas.
- Workflow name: nama alur kerja.
- Revisi alur kerja: revisi saat ini pada saat eksekusi.
- Level logging panggilan: tingkat logging panggilan yang diterapkan selama eksekusi. Dalam dokumen ini, lihat Logging panggilan.
- Input: argumen runtime yang diteruskan ke alur kerja, jika ada.
- Output: output alur kerja. Jika eksekusi gagal, sertakan pengecualian yang menyebabkan kegagalan eksekusi. Dalam dokumen ini, lihat Pesan error eksekusi.
Untuk melihat histori eksekusi alur kerja sebagai daftar entri langkah, klik tab Steps. Untuk informasi selengkapnya, baca Melihat histori langkah eksekusi.
Untuk melihat log eksekusi alur kerja, klik tab Logs.
Untuk memfilter log eksekusi, gunakan kolom Filter di bagian atas tabel. Misalnya, untuk menampilkan hanya upaya eksekusi yang gagal, masukkan
failed
di kolom teks filter.
gcloud
Untuk melihat daftar lengkap eksekusi alur kerja, masukkan perintah berikut:
gcloud workflows executions list WORKFLOW_NAME
Ganti
WORKFLOW_NAME
dengan nama alur kerja Anda. Salin ID eksekusi yang Anda inginkan.Untuk melihat log eksekusi alur kerja, masukkan perintah berikut:
gcloud workflows executions describe \ --workflow=WORKFLOW_NAME \ EXECUTION_ID
Ganti kode berikut:
WORKFLOW_NAME
: nama alur kerjaEXECUTION_ID
: ID unik eksekusi
Perintah ini menampilkan output yang mirip dengan berikut ini:
argument: 'null' endTime: '2022-07-19T12:40:07.070039707Z' error: context: |- The argument of 'in' must be a dict or an array; got: null in step "checkSearchTermInInput", routine "main", line: 12 payload: "{"message":"The argument of 'in' must be a dict or an array; got: null"
,"tags":["TypeError"]}" stackTrace: elements: - position: column: '26' length: '24' line: '12' routine: main step: checkSearchTermInInput name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/17ffc89c-0a27-4d2f-8356-e681d949a3d3 startTime: '2022-07-19T12:40:07.024823663Z' state: FAILED status: currentSteps: - routine: main step: checkSearchTermInInput workflowRevisionId: 000001-ac2argument
: argumen runtime yang diteruskan ke alur kerja, jika adaendTime
: saat eksekusi berakhirerror
: pesan error yang ditampilkan sebagai bagian dari pengecualian yang menyebabkan kegagalan eksekusiname
: nama lengkap eksekusi, termasuk nama project, lokasi alur kerja, nama alur kerja, dan ID eksekusistartTime
: saat eksekusi dimulaistate
: menunjukkan status akhir alur kerjastatus
: langkah alur kerja saat ini atau terakhir dari eksekusiworkflowRevisionID
: revisi saat ini pada saat eksekusi
Peta error eksekusi
Saat alur kerja menampilkan error selama eksekusi yang tidak terperangkap dalam
blok try/except
, eksekusi tersebut akan gagal, dan peta error (kamus JSON) yang menjelaskan error
akan ditampilkan.
Error yang ditampilkan selama eksekusi alur kerja berisi tag untuk membantu Anda mengidentifikasi
penyebab error. Misalnya, error yang ditampilkan dari konektor dapat memiliki dua kunci (tags
dan message
) yang mirip dengan yang berikut ini:
{'tags': ['SystemError'], 'message': 'an error has occurred'}
Bisa ada lebih dari satu tag. Untuk memeriksa tag tertentu, Anda dapat menggunakan ekspresi. Contoh:
${'SystemError' in e.tags}
Mengakses data error yang ditampilkan sebagai string
Beberapa konektor dan HTTP API akan membuat serialisasi error sebagai string sebelum menampilkan
error tersebut. Anda dapat menggunakan fungsi library standar untuk memulihkan payload ke
error asli. Misalnya, untuk mengonversi string error menjadi peta, Anda dapat menggunakan fungsi json.decode
dan text.encode
:
json.decode(text.encode(ERROR_FROM_API))
Tag error
Tabel berikut menjelaskan arti tag error yang berbeda.
Tag | Deskripsi |
---|---|
AuthError | Timbul saat membuat kredensial untuk permintaan HTTP gagal. |
ConnectionError | Dimunculkan saat koneksi berhasil dibuat dengan endpoint, tetapi ada masalah dengan koneksi selama transfer data. Koneksi dihentikan sebelum respons penuh diterima dan pesan mungkin belum dikirimkan ke endpoint. Percobaan ulang mungkin tidak idempoten. |
ConnectionFailedError | Diajukan saat koneksi tidak dibuat dengan endpoint API; misalnya, karena nama domain yang salah, masalah resolusi DNS, atau masalah jaringan lainnya. Percobaan ulang bersifat idempoten. |
HttpError | Muncul saat permintaan HTTP gagal dengan status error HTTP. Jika pengecualian ini dimunculkan, responsnya adalah peta dengan elemen berikut:
|
IndexError | Dinaikkan saat subskrip urutan merupakan bilangan bulat di luar rentang. |
KeyError | Dikeluarkan saat tombol peta tidak ditemukan dalam kumpulan kunci yang sudah ada. |
OperationError | Dinaikkan saat operasi yang berjalan lama selesai tidak berhasil. |
ParallelNestingError | Dinaikkan saat kedalaman maksimum yang dapat disarangkan secara paralel terlampaui. |
RecursionError | Dinaikkan saat penafsir mendeteksi bahwa kedalaman stack panggilan maksimum terlampaui. |
ResourceLimitError | Dinaikkan saat beberapa batas resource habis. Jika dilaporkan secara internal, jenis error ini tidak dapat ditangkap dan menyebabkan kegagalan eksekusi langsung. |
ResponseTypeError | Dimunculkan saat operasi yang berjalan lama menampilkan respons dari jenis yang salah. |
SystemError | Dimunculkan saat penafsir menemukan error internal. |
TimeoutError | Dikeluarkan saat waktu fungsi sistem habis pada tingkat sistem. |
TypeError | Dinaikkan saat operasi atau fungsi diterapkan ke objek dengan jenis yang tidak kompatibel. Nilai terkaitnya adalah string yang memberikan detail tentang ketidakcocokan jenis tersebut. |
UnhandledBranchError | Dieskalasikan saat satu atau beberapa cabang atau iterasi mengalami error runtime yang tidak tertangani hingga mencapai jumlah maksimum. |
ValueError | Dikeluarkan saat operasi atau fungsi menerima argumen yang memiliki
jenis yang benar tetapi nilai salah, dan situasinya tidak dijelaskan
oleh pengecualian yang lebih tepat, seperti IndexError . |
ZeroDivisionError | Muncul saat argumen kedua dari operasi pembagian atau modulo adalah nol. Nilai terkait adalah string yang menunjukkan jenis operand dan operasi. |
Anda juga dapat memunculkan error kustom menggunakan sintaksis raise
.
Memeriksa status eksekusi
Ada beberapa perintah untuk membantu Anda memeriksa status eksekusi alur kerja.
Untuk mengambil daftar upaya eksekusi alur kerja beserta ID-nya, masukkan perintah berikut:
gcloud workflows executions list WORKFLOW_NAME
Ganti
WORKFLOW_NAME
dengan nama alur kerja.Perintah ini menampilkan nilai
NAME
yang mirip dengan berikut ini:projects/PROJECT_NUMBER/locations/REGION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID
Salin ID eksekusi untuk digunakan di perintah berikutnya.
Untuk memeriksa status upaya eksekusi dan menunggu hingga upaya selesai, masukkan perintah berikut:
gcloud workflows executions wait EXECUTION_ID
Ganti
EXECUTION_ID
dengan ID upaya eksekusi.Perintah tersebut menunggu upaya eksekusi selesai, lalu menampilkan hasilnya.
Untuk menunggu hingga eksekusi terakhir selesai lalu menampilkan hasil eksekusi yang telah selesai, masukkan perintah berikut:
gcloud workflows executions wait-last
Jika Anda telah melakukan upaya eksekusi sebelumnya dalam sesi
gcloud
yang sama, perintah akan menunggu hingga upaya eksekusi sebelumnya selesai, lalu menampilkan hasil eksekusi yang telah selesai. Jika tidak ada upaya sebelumnya,gcloud
akan menampilkan error berikut:ERROR: (gcloud.workflows.executions.wait-last) [NOT FOUND] There are no cached executions available.
Untuk mendapatkan status eksekusi terakhir, masukkan perintah berikut:
gcloud workflows executions describe-last
Jika Anda telah melakukan upaya eksekusi sebelumnya dalam sesi
gcloud
yang sama, perintah akan menampilkan hasil eksekusi terakhir meskipun sedang berjalan. Jika tidak ada upaya sebelumnya,gcloud
akan menampilkan error berikut:ERROR: (gcloud.beta.workflows.executions.describe-last) [NOT FOUND] There are no cached executions available.
Mengirim log ke Cloud Logging
Alur kerja otomatis menghasilkan log eksekusi untuk eksekusi alur kerja di Cloud Logging.
Anda juga dapat mengaktifkan logging panggilan. Atau, Anda dapat membuat log kustom yang menggunakan
fungsi sys.log
di sumber Anda. Logging panggilan dan log kustom dapat Anda gunakan untuk mengontrol kapan log dikirim ke Logging selama eksekusi alur kerja, dan dapat sangat membantu saat men-debug alur kerja Anda.
Untuk mengetahui detailnya, termasuk file proto logging engine_call
dan executions_system
, lihat repositori GitHub ini.
Log eksekusi
Setiap eksekusi alur kerja secara otomatis memicu setidaknya dua log eksekusi: satu di awal eksekusi dan satu di akhir.
Untuk informasi selengkapnya tentang log platform Workflows yang tersedia di Logging, lihat Log platform Google Cloud.
Pencatatan panggilan
Anda dapat menetapkan flag sehingga setiap langkah panggilan selama eksekusi alur kerja akan dicatat dalam log, dan nama langkah, nama fungsi, argumen fungsi, dan respons panggilan akan ditampilkan. Atau, Anda dapat mencatat setiap pengecualian yang tertangkap, atau yang menghentikan panggilan.
Hanya langkah panggilan eksplisit yang dicatat ke dalam log; misalnya, panggilan ke sub-alur kerja atau fungsi library. Panggilan dari dalam ekspresi, atau dalam fungsi
library standar (misalnya, http.post
di sys.log
), dan di dalam konektor
tidak dicatat ke dalam log.
Header permintaan Authorization
HTTP disamarkan dari log untuk panggilan HTTP.
Saat menerapkan logging panggilan ke definisi alur kerja atau ke eksekusi alur kerja, Anda dapat menentukan tingkat logging yang diperlukan. Level log eksekusi lebih diutamakan daripada level log alur kerja apa pun, kecuali jika level log eksekusi tidak ditentukan (default); dalam hal ini, level log alur kerja akan berlaku.
Perhatikan bahwa batas ukuran entri log yang ditetapkan oleh Cloud Logging juga berlaku untuk logging panggilan.
Log kustom
Untuk membuat entri log di Logging selama eksekusi alur kerja,
tentukan langkah dalam alur kerja yang melakukan panggilan ke fungsi sys.log
library standar:
YAML
- step1: assign: - varA: "Hello" - varB: "World" - logStep: call: sys.log args: text: TEXT severity: SEVERITY - step2: return: ${varA + " " + varB}
JSON
[ { "step1": { "assign": [ { "varA": "Hello" }, { "varB": "World" } ] } }, { "logStep": { "call": "sys.log", "args": { "text": "TEXT", "severity": "SEVERITY" } } }, { "step2": { "return": "${varA + " " + varB}" } } ]
Saat membuat entri log, tentukan hal-hal berikut:
TEXT
: wajib diisi. Teks yang akan dicatat. Jika Anda perlu mencatat nilai peta ke dalam log, gunakan${json.encode_to_string(myMap)}
.SEVERITY
: optional. Tingkat keparahan entri log. Misalnya,INFO
,WARNING
, atauCRITICAL
.
Untuk mengetahui informasi selengkapnya, lihat referensi fungsi sys.log
.
Izin yang diperlukan
Untuk menerapkan logging panggilan atau mengirim log kustom ke Logging, alur kerja
harus dikaitkan dengan akun layanan yang menyertakan
izin logging.logEntries.create
(misalnya, peran
roles/logging.logWriter
). Jika Anda perlu mengubah akun layanan yang diperbarui dengan alur kerja, lihat
Memperbarui alur kerja.
Untuk mempelajari lebih lanjut cara membuat akun layanan dan menetapkan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Lihat log alur kerja
Anda dapat melihat log di Workflows atau di Logging. Untuk melihat log untuk satu alur kerja, gunakan tab Logs di Alur kerja. Untuk mendapatkan tampilan gabungan log untuk semua alur kerja Anda, gunakan halaman Logs Explorer di Logging.
Melihat log di Workflows
Untuk melihat log alur kerja di Workflows, lakukan hal berikut:
Di konsol Google Cloud, buka halaman Workflows:
Untuk mengakses log alur kerja, klik nama alur kerja untuk membuka halaman Details.
Untuk melihat log, klik Logs.
Untuk memfilter log menurut tingkat keparahan, dalam daftar Default, pilih jenis log yang akan ditampilkan. Secara default, log dari semua tingkat keparahan ditampilkan.
Tab Logs di halaman Details alur kerja menampilkan jenis log berikut:
Log dikirim ke Logging
Log audit operasi apa pun yang dilakukan pada alur kerja, seperti pembaruan pada definisi alur kerja
Lihat log di Logging
Untuk melihat log di Logging, lakukan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Logs Explorer:
Di Query builder, klik Resource dan masukkan
workflow
. Pilih Cloud Workflow dari daftar, lalu klik Add.Klik Jalankan kueri.
Untuk mempelajari lebih lanjut cara melihat log di Logging, baca artikel Menggunakan Logs Explorer.