Memantau alur kerja

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.

  1. Di konsol Google Cloud, buka halaman Workflows.

    Buka Workflows

  2. Klik nama alur kerja untuk menampilkan halaman Detail alur kerja.

  3. Klik tab Logs.

  4. 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

  1. Di konsol Google Cloud, buka halaman Workflows.

    Buka Workflows

  2. Untuk mengakses hasil eksekusi alur kerja, klik nama alur kerja untuk membuka halaman Detail alur kerja.

  3. Untuk detail tentang eksekusi tertentu, pada tab Executions, klik ID eksekusi dalam daftar untuk membuka halaman Execution details.

  4. 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.
  5. Untuk melihat histori eksekusi alur kerja sebagai daftar entri langkah, klik tab Steps. Untuk informasi selengkapnya, baca Melihat histori langkah eksekusi.

  6. Untuk melihat log eksekusi alur kerja, klik tab Logs.

  7. 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

  1. 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.

  2. 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 kerja
    • EXECUTION_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-ac2
    Output-nya berisi informasi berikut:

    • argument: argumen runtime yang diteruskan ke alur kerja, jika ada
    • endTime: saat eksekusi berakhir
    • error: pesan error yang ditampilkan sebagai bagian dari pengecualian yang menyebabkan kegagalan eksekusi
    • name: nama lengkap eksekusi, termasuk nama project, lokasi alur kerja, nama alur kerja, dan ID eksekusi
    • startTime: saat eksekusi dimulai
    • state: menunjukkan status akhir alur kerja
    • status: langkah alur kerja saat ini atau terakhir dari eksekusi
    • workflowRevisionID: 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:
  • tags—daftar dengan string HttpError
  • message—pesan error yang dapat dibaca manusia
  • code—Kode status respons HTTP
  • headers—header respons
  • body—isi respons
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, atau CRITICAL.

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:

  1. Di konsol Google Cloud, buka halaman Workflows:

    Buka Workflows

  2. Untuk mengakses log alur kerja, klik nama alur kerja untuk membuka halaman Details.

  3. Untuk melihat log, klik Logs.

  4. 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:

  1. Di konsol Google Cloud, buka halaman Logs Explorer:

    Buka Logs Explorer

  2. Di Query builder, klik Resource dan masukkan workflow. Pilih Cloud Workflow dari daftar, lalu klik Add.

    Logging alur kerja

  3. Klik Jalankan kueri.

Untuk mempelajari lebih lanjut cara melihat log di Logging, baca artikel Menggunakan Logs Explorer.

Langkah selanjutnya