Memantau lingkungan dengan Cloud Monitoring

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Anda dapat menggunakan Cloud Monitoring dan Cloud Logging dengan Cloud Composer.

Cloud Monitoring memberikan visibilitas terkait performa, waktu beroperasi, dan kondisi keseluruhan aplikasi yang didukung oleh teknologi cloud. Cloud Monitoring mengumpulkan dan menyerap metrik, peristiwa, dan metadata dari Cloud Composer untuk menghasilkan insight di dasbor dan diagram. Anda dapat menggunakan Cloud Monitoring untuk memahami performa dan kondisi lingkungan Cloud Composer dan metrik Airflow Anda.

Logging menangkap log yang dihasilkan oleh scheduler dan worker container di cluster lingkungan Anda. Log ini berisi informasi dependensi Airflow dan level sistem untuk membantu Anda melakukan proses debug. Untuk informasi tentang cara melihat log, lihat Lihat log Airflow.

Sebelum memulai

  • Izin berikut diperlukan untuk mengakses log dan metrik untuk lingkungan Cloud Composer:

    • Akses hanya baca ke log dan metrik: logging.viewer dan monitoring.viewer
    • Akses hanya baca ke log, termasuk log pribadi: logging.privateLogViewer
    • Akses baca/tulis ke metrik: monitoring.editor

    Untuk informasi selengkapnya tentang izin akses dan peran lain untuk Cloud Composer, lihat Kontrol akses.

  • Untuk menghindari logging duplikat, Cloud Logging untuk Google Kubernetes Engine dinonaktifkan.

  • Cloud Logging menghasilkan entri untuk setiap status dan peristiwa yang terjadi di project Google Cloud Anda. Anda dapat menggunakan filter pengecualian untuk mengurangi volume log, termasuk log yang memerlukan untuk Cloud Composer.

    Mengecualikan log dari jobs.py dapat menyebabkan kegagalan health check dan CrashLoopBackOff error. Anda harus menyertakan -jobs.py dalam filter pengecualian untuk mencegahnya dikecualikan.

  • Monitoring tidak dapat memetakan nilai jumlah untuk DAG dan tugas yang dieksekusi lebih dari sekali per menit, dan tidak merencanakan metrik untuk tugas yang gagal.

Metrik lingkungan

Anda dapat menggunakan metrik lingkungan untuk memeriksa penggunaan resource dan respons lingkungan Cloud Composer Anda.

Kesehatan lingkungan

Untuk memeriksa kondisi lingkungan, Anda dapat menggunakan metrik status kesehatan: composer.googleapis.com/environment/healthy.

Cloud Composer menjalankan DAG keaktifan bernama airflow_monitoring, yang berjalan sesuai jadwal dan melaporkan kesehatan lingkungan sebagai berikut:

  • Jika proses DAG keaktifan berhasil diselesaikan, respons statusnya adalah True.
  • Jika DAG keaktifan yang dijalankan gagal, status responsnya adalah False.

DAG keaktifan disimpan di folder dags/ dan dapat dilihat di UI Airflow. Frekuensi dan konten DAG keaktifan tidak dapat diubah dan tidak boleh diubah. Perubahan pada DAG keaktifan tidak akan dipertahankan.

Pemeriksaan dependensi lingkungan

Cloud Composer memeriksa secara berkala apakah lingkungan dapat menjangkau layanan yang diperlukan untuk operasinya dan memiliki izin akses yang cukup untuk berinteraksi dengan mereka. Contoh layanan yang diperlukan untuk adalah Artifact Registry, Cloud Logging, dan konfigurasi di Cloud Monitoring.

Metrik berikut tersedia untuk pemeriksaan dependensi lingkungan:

Metrik dependensi API Deskripsi
Jumlah pemeriksaan dependensi composer.googleapis.com/environment/health/dependency_check_count Metrik ini melacak frekuensi pemeriksaan keterjangkauan dilakukan pada layanan yang diperlukan untuk operasi lingkungan.
Jumlah pemeriksaan izin dependensi composer.googleapis.com/environment/health/dependency_permissions_check_count Metrik ini melacak frekuensi pemeriksaan izin dilakukan layanan yang diperlukan untuk operasi lingkungan.

Kesehatan database

Untuk memeriksa kondisi database, Anda dapat menggunakan perintah berikut metrik status kesehatan: composer.googleapis.com/environment/database_health.

Pod pemantauan Airflow akan melakukan ping ke database setiap menit dan melaporkan kondisi berstatus True jika koneksi SQL dapat dibuat atau False jika tidak.

Metrik database

Metrik lingkungan berikut tersedia untuk metadata Airflow database yang digunakan oleh lingkungan Cloud Composer. Anda dapat menggunakan metrik ini untuk memantau performa dan penggunaan resource instance database lingkungannya masing-masing.

Sebagai contoh, Anda mungkin ingin meningkatkan ukuran lingkungan jika lingkungan mendekati batas sumber daya. Atau, Anda mungkin ingin mengoptimalkan ukuran database dengan melakukan pembersihan database.

Metrik database API Deskripsi
Penggunaan CPU database composer.googleapis.com/environment/database/cpu/usage_time
Core CPU database composer.googleapis.com/environment/database/cpu/reserved_cores
Pemakaian CPU database composer.googleapis.com/environment/database/cpu/utilization
Penggunaan Memori Database composer.googleapis.com/environment/database/memory/bytes_used
Kuota Memori Database composer.googleapis.com/environment/database/memory/quota
Pemakaian Memori Database composer.googleapis.com/environment/database/memory/utilization
Penggunaan Disk Database composer.googleapis.com/environment/database/disk/bytes_used
Kuota Disk Database composer.googleapis.com/environment/database/disk/quota
Pemanfaatan Disk Database composer.googleapis.com/environment/database/disk/utilization
Batas Koneksi Database composer.googleapis.com/environment/database/network/max_connections
Koneksi Database composer.googleapis.com/environment/database/network/connections
Database tersedia untuk failover composer.googleapis.com/environment/database/available_for_failover Adalah True jika instance Cloud SQL lingkungan berada di tinggi dan siap untuk failover.
Jumlah permintaan failover otomatis database composer.googleapis.com/environment/database/auto_failover_request_count Jumlah total permintaan failover otomatis dari instance Cloud SQL.

Metrik pekerja

Metrik lingkungan berikut tersedia untuk pekerja Airflow yang digunakan oleh lingkungan Cloud Composer 2.

Metrik ini digunakan untuk secara otomatis menskalakan jumlah seluruh pekerja di lingkungan Anda. Tujuan Horizontal Pod Autoscaler menetapkan metrik ini, lalu komponen lingkungan Airflow Worker Set Controller menggunakan untuk menskalakan jumlah pekerja Airflow ke atas atau ke bawah, tergantung pada nilai metrik ini.

Metrik pekerja API
Target Faktor Skala composer.googleapis.com/environment/worker/scale_factor_target

Metrik Scheduler

Nama API Deskripsi
Penjadwal aktif composer.googleapis.com/environment/active_schedulers Jumlah instance penjadwal aktif.

Metrik pemicu

Metrik pemicu berikut disediakan secara eksklusif untuk Cloud Composer:

Nama API Deskripsi
Pemicu aktif composer.googleapis.com/environment/active_triggerers Jumlah instance pemicu aktif.

Selain itu, metrik Airflow berikut tersedia melalui Metrik Cloud Composer:

Nama API Nama di Airflow Deskripsi
Jumlah total pemicu yang berjalan composer.googleapis.com/workload/triggerer/num_running_triggers triggers.running Jumlah pemicu yang berjalan per instance pemicu.
Pemicu pemblokiran composer.googleapis.com/environment/trigger/blocking_count triggers.blocked_main_thread Jumlah pemicu yang memblokir thread utama (kemungkinan karena tidak sepenuhnya asinkron).
Pemicu gagal composer.googleapis.com/environment/trigger/failed_count triggers.failed Jumlah pemicu yang gagal dengan error sebelum dapat mengaktifkan peristiwa.
Pemicu yang berhasil composer.googleapis.com/environment/trigger/succeeded_count triggers.succeeded Jumlah pemicu yang telah mengaktifkan setidaknya satu peristiwa.

Metrik server web

Metrik lingkungan berikut tersedia untuk server web Airflow yang digunakan oleh lingkungan Cloud Composer. Anda dapat menggunakan metrik ini untuk memeriksa performa dan penggunaan resource web Airflow lingkungan Anda di instance server tertentu.

Sebagai contoh, Anda mungkin ingin meningkatkan skala server web dan parameter performa jika terus mendekati batas resource.

Nama API Deskripsi
Penggunaan CPU server web composer.googleapis.com/environment/web_server/cpu/usage_time
Kuota CPU server web composer.googleapis.com/environment/web_server/cpu/reserved_cores
Penggunaan memori server web composer.googleapis.com/environment/web_server/memory/bytes_used
Kuota memori server web composer.googleapis.com/environment/web_server/memory/quota
Server web aktif composer.googleapis.com/environment/active_webservers Jumlah instance server web yang aktif.

Metrik DAG

Untuk membantu Anda memantau efisiensi operasi DAG dan mengidentifikasi tugas yang menyebabkan latensi tinggi, DAG berikut metrik ini tersedia.

Metrik DAG API
Jumlah operasi DAG composer.googleapis.com/workflow/run_count
Durasi setiap operasi DAG composer.googleapis.com/workflow/run_duration
Jumlah tugas yang dijalankan composer.googleapis.com/workflow/task/run_count
Durasi setiap operasi tugas composer.googleapis.com/workflow/task/run_duration

Cloud Monitoring hanya menampilkan metrik untuk alur kerja yang diselesaikan dan tugas berjalan (berhasil atau gagal). Tidak Ada Data ditampilkan jika tidak ada alur kerja yang sedang berlangsung dan untuk menjalankan tugas.

Metrik Eksekutor Seledri

Metrik Celery Executor berikut tersedia. Metrik ini dapat membantu Anda menentukan apakah ada sumber daya pekerja yang memadai di lingkungan Anda.

Metrik Celery Executor API
Jumlah tugas dalam antrean composer.googleapis.com/environment/task_queue_length
Jumlah pekerja Seledri online composer.googleapis.com/environment/num_celery_workers

Metrik Airflow

Metrik Airflow berikut tersedia. Metrik ini sesuai dengan metrik yang disediakan oleh Airflow.

Nama API Nama di Airflow Deskripsi
Kode keluar tugas seledri bukan nol composer.googleapis.com/environment/celery/execute_command_failure_count celery.execute_command.failure Jumlah kode keluar bukan nol dari tugas Celery.
Waktu tunggu publikasi tugas seledri composer.googleapis.com/environment/celery/task_timeout_error_count celery.task_timeout_error Jumlah error AirflowTaskTimeout yang muncul saat memublikasikan Tugas ke Celery Broker.
Durasi pengambilan DAG berseri composer.googleapis.com/environment/collect_db_dag_duration collect_db_dags Waktu yang diperlukan untuk mengambil semua DAG Serial dari database.
Error pembaruan DAG composer.googleapis.com/environment/dag_callback/exception_count dag.callback_exceptions Jumlah pengecualian yang muncul dari callback DAG. Jika ini terjadi, berarti callback DAG tidak berfungsi.
Error pembaruan DAG composer.googleapis.com/environment/dag_file/refresh_error_count dag_file_refresh_error Jumlah kegagalan saat memuat file DAG apa pun.
Waktu pemuatan file DAG composer.googleapis.com/environment/dag_processing/last_duration dag_processing.last_duration.<dag_file> Waktu yang diperlukan untuk memuat file DAG tertentu.
Waktu sejak pemrosesan file DAG composer.googleapis.com/environment/dag_processing/last_run_elapsed_time dag_processing.last_run.seconds_ago.<dag_file> Beberapa detik sejak file DAG terakhir diproses.
Jumlah penghentian DagFileProcessorManager composer.googleapis.com/environment/dag_processing/manager_stall_count dag_processing.manager_stalls Jumlah proses DagFileProcessorManager yang terhenti.
Error penguraian DAG composer.googleapis.com/environment/dag_processing/parse_error_count dag_processing.import_errors Jumlah error yang dihasilkan saat mengurai file DAG.
Menjalankan proses penguraian DAG composer.googleapis.com/environment/dag_processing/processes dag_processing.processes Jumlah proses penguraian DAG yang sedang berjalan.
Waktu tunggu prosesor composer.googleapis.com/environment/dag_processing/processor_timeout_count dag_processing.processor_timeouts Jumlah prosesor file yang mati karena terlalu lama.
Waktu yang diperlukan untuk memindai dan mengimpor semua file DAG composer.googleapis.com/environment/dag_processing/total_parse_time dag_processing.total_parse_time Total waktu yang dibutuhkan untuk memindai dan mengimpor semua file DAG sekali.
Ukuran tas DAG saat ini composer.googleapis.com/environment/dagbag_size dagbag_size Jumlah DAG yang ditemukan saat penjadwal menjalankan pemindaian berdasarkan konfigurasinya.
SLA gagal menerima notifikasi email composer.googleapis.com/environment/email/sla_notification_failure_count sla_email_notification_failure Jumlah upaya notifikasi email SLA yang gagal.
Buka slot di eksekutor composer.googleapis.com/environment/executor/open_slots executor.open_slots Jumlah slot terbuka di eksekutor.
Tugas yang mengantre di eksekutor composer.googleapis.com/environment/executor/queued_tasks executor.queued_tasks Jumlah tugas dalam antrean pada eksekutor.
Menjalankan tugas pada eksekutor composer.googleapis.com/environment/executor/running_tasks executor.running_tasks Jumlah tugas yang sedang berjalan pada eksekutor.
Keberhasilan/kegagalan instance tugas composer.googleapis.com/environment/finished_task_instance_count ti_failures, ti_successes Keberhasilan/kegagalan instance tugas secara keseluruhan.
Pekerjaan yang dimulai/selesai composer.googleapis.com/environment/job/count <job_name>_start, <job_name>_end Jumlah tugas yang dimulai/selesai, seperti SchedulerJob, LocalTaskJob.
Kegagalan denyut jantung tugas composer.googleapis.com/environment/job/heartbeat_failure_count <job_name>_heartbeat_failure Jumlah detak jantung yang gagal untuk sebuah tugas.
Tugas dibuat per operator composer.googleapis.com/environment/operator/created_task_instance_count task_instance_created-<operator_name> Jumlah instance tugas yang dibuat untuk operator tertentu.
Eksekusi operator composer.googleapis.com/environment/operator/finished_task_instance_count operator_failures_<operator_name>, operator_successes_<operator_name> Jumlah tugas yang sudah selesai per operator
Buka slot di dalam kumpulan composer.googleapis.com/environment/pool/open_slots pool.open_slots.<pool_name> Jumlah slot yang terbuka dalam kumpulan.
Slot dalam antrean di kumpulan composer.googleapis.com/environment/pool/queued_slots pool.queued_slots.<pool_name> Jumlah slot dalam antrean di kumpulan.
Slot berjalan di dalam kumpulan composer.googleapis.com/environment/pool/running_slots pool.running_slots.<pool_name> Jumlah slot yang berjalan di dalam kumpulan.
Kelaparan di kolam renang composer.googleapis.com/environment/pool/starving_tasks pool.starving_tasks.<pool_name> Jumlah tugas yang kelaparan di kolam renang.
Waktu yang dihabiskan di bagian penting penjadwal composer.googleapis.com/environment/scheduler/critical_section_duration scheduler.critical_section_duration Waktu yang dihabiskan di bagian penting pada loop scheduler. Hanya satu penjadwal yang dapat memasuki loop ini dalam satu waktu.
Kegagalan kunci bagian penting composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count scheduler.critical_section_busy Berapa kali proses penjadwal mencoba mendapatkan kunci di bagian penting (diperlukan untuk mengirimkan tugas ke eksekutor) dan menemukannya terkunci oleh proses lain.
Tugas yang dihentikan secara eksternal composer.googleapis.com/environment/scheduler/task/externally_killed_count scheduler.tasks.killed_externally Jumlah tugas yang dihentikan secara eksternal.
Tugas usang composer.googleapis.com/environment/scheduler/task/orphan_count scheduler.orphaned_tasks.cleared, scheduler.orphaned_tasks.adopted Jumlah tugas usang yang diselesaikan/diadopsi oleh penjadwal.
Tugas berjalan/kelaparan/dapat dijalankan composer.googleapis.com/environment/scheduler/tasks scheduler.tasks.running, scheduler.tasks.starving, scheduler.tasks.executable Jumlah tugas yang berjalan/kelaparan/dapat dijalankan.
Heartbeat scheduler composer.googleapis.com/environment/scheduler_heartbeat_count scheduler_heartbeat Detak jantung penjadwalan.
Notifikasi callback SLA gagal composer.googleapis.com/environment/sla_callback_notification_failure_count sla_callback_notification_failure Jumlah upaya notifikasi callback SLA yang gagal.
Kegagalan pengecualian timbul dari sensor cerdas composer.googleapis.com/environment/smart_sensor/exception_failures smart_sensor_operator.exception_failures Jumlah kegagalan yang disebabkan oleh pengecualian pada loop poking sensor smart sebelumnya.
Kegagalan infrastruktur penyadapan sensor cerdas composer.googleapis.com/environment/smart_sensor/infra_failures smart_sensor_operator.infra_failures Jumlah kegagalan infrastruktur di loop poking sensor smart sebelumnya.
Pengecualian tusuk sensor smart composer.googleapis.com/environment/smart_sensor/poked_exception smart_sensor_operator.poked_exception Jumlah pengecualian di loop sentakan sensor smart sebelumnya.
Sensor smart berhasil menusuk tugas composer.googleapis.com/environment/smart_sensor/poked_success smart_sensor_operator.poked_success Jumlah tugas yang baru berhasil ditekan oleh sensor smart di loop poking sebelumnya.
Tugas sensor smart yang ditekan composer.googleapis.com/environment/smart_sensor/poked_tasks smart_sensor_operator.poked_tasks Jumlah tugas yang ditekan oleh sensor smart pada loop poking sebelumnya.
Instance tugas yang berhasil sebelumnya composer.googleapis.com/environment/task_instance/previously_succeeded_count previously_succeeded Jumlah instance tugas yang sebelumnya berhasil.
Membunuh tugas zombie composer.googleapis.com/environment/zombie_task_killed_count zombies_killed Jumlah tugas zombie yang dibunuh.
Durasi operasi DAG composer.googleapis.com/workflow/dag/run_duration dagrun.duration.success.<dag_id>, dagrun.duration.failed.<dag_id> Waktu yang dibutuhkan DagRun untuk mencapai status berhasil/gagal.
Durasi pemeriksaan dependensi DAG composer.googleapis.com/workflow/dependency_check_duration dagrun.dependency-check.<dag_id> Waktu yang diperlukan untuk memeriksa dependensi DAG. Metrik ini berbeda dengan metrik pemeriksaan izin dan dependensi lingkungan dan berlaku untuk DAG
Penundaan jadwal operasi DAG composer.googleapis.com/workflow/schedule_delay dagrun.schedule_delay.<dag_id> Waktu penundaan antara tanggal mulai DagRun yang dijadwalkan dan tanggal mulai DagRun sebenarnya.
Tugas yang selesai composer.googleapis.com/workflow/task_instance/finished_count ti.finish.<dag_id>.<task_id>.<state> Jumlah tugas yang diselesaikan di DAG tertentu.
Durasi pengoperasian instance tugas composer.googleapis.com/workflow/task_instance/run_duration dag.<dag_id>.<task_id>.duration Waktu yang dibutuhkan untuk menyelesaikan tugas.
Tugas yang dimulai composer.googleapis.com/workflow/task_instance/started_count ti.start.<dag_id>.<task_id> Jumlah tugas yang dimulai di DAG tertentu.
Durasi antrean instance tugas composer.googleapis.com/workflow/task_instance/queued_duration dag.<dag_id>.<task_id>.queued_duration Waktu yang dihabiskan tugas dalam status Antrean sebelum beralih ke status Berjalan.
Tugas dihapus dari DAG composer.googleapis.com/workflow/task/removed_from_dag_count task_removed_from_dag.<dag_id> Jumlah tugas yang dihapus untuk DAG tertentu (yaitu, tugas tidak lagi ada di DAG).
Tugas dipulihkan ke DAG composer.googleapis.com/workflow/task/restored_to_dag_count task_restored_to_dag.<dag_id> Jumlah tugas yang dipulihkan untuk DAG tertentu (yaitu, instance tugas yang sebelumnya dalam status DIHAPUS di DB ditambahkan ke file DAG).
Penundaan jadwal tugas composer.googleapis.com/workflow/task/schedule_delay dagrun.schedule_delay.<dag_id> Waktu yang berlalu antara start_date tugas pertama dan dagrun waktu mulai yang diharapkan.

Menggunakan Monitoring untuk lingkungan Cloud Composer

Konsol

Anda dapat menggunakan Metrics Explorer untuk menampilkan metrik yang terkait dengan lingkungan dan DAG Anda:

  • Resource Cloud Composer Environment berisi metrik untuk lingkungan.

    Guna menampilkan metrik untuk lingkungan tertentu, filter metrik menurut Label environment_name. Anda juga dapat memfilter menurut label lain, seperti lokasi lingkungan atau versi gambar.

  • Resource Alur Kerja Cloud Composer berisi metrik untuk DAG.

    Untuk menampilkan metrik untuk DAG atau tugas tertentu, filter metrik menurut Label workflow_name dan task_name. Anda juga dapat memfilter menurut label lain, seperti status tugas atau nama operator Airflow.

API dan gcloud

Anda dapat membuat dan mengelola dasbor dan widget kustom melalui Cloud Monitoring API dan perintah gcloud monitoring dashboards. Untuk informasi selengkapnya, lihat Mengelola dasbor menurut API.

Untuk informasi selengkapnya tentang resource, metrik, dan filter, lihat referensi untuk Cloud Monitoring API:

Menggunakan pemberitahuan Cloud Monitoring

Anda dapat membuat kebijakan pemberitahuan untuk memantau nilai metrik dan memberi tahu Anda saat metrik tersebut melanggar ketentuan.

  1. Di Konsol Google Cloud, buka Halaman Alerting:

    Buka Alerting

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

  2. ika Anda belum membuat saluran notifikasi dan ingin menerima notifikasi, klik Edit Notification Channels dan tambahkan saluran notifikasi Anda. Kembali ke halaman Alerting setelah menambahkan saluran.
  3. Dari halaman Alerting, pilih Create policy.
  4. Untuk memilih metrik, luaskan menu Pilih metrik, lalu lakukan tindakan berikut:
    1. Untuk membatasi menu pada entri yang relevan, masukkan Cloud Composer ke kolom filter. Jika tidak ada hasil setelah memfilter menu, nonaktifkan tombol Hanya tampilkan resource & metrik aktif.
    2. Untuk Resource type, pilih Cloud Composer Environment atau Cloud Composer Workflow.
    3. Pilih Kategori metrik dan Metrik, lalu pilih Terapkan.
  5. Klik Berikutnya.
  6. Setelan di halaman Konfigurasi pemicu notifikasi menentukan kapan notifikasi dipicu. Pilih jenis kondisi dan, jika perlu, tentukan batasnya. Untuk informasi selengkapnya, lihat Membuat kebijakan pemberitahuan batas metrik.
  7. Klik Berikutnya.
  8. Opsional: Untuk menambahkan notifikasi ke kebijakan pemberitahuan, klik Notification channels. Dalam dialog ini, pilih satu atau beberapa saluran notifikasi dari menu, lalu klik OK.
  9. Opsional: Perbarui Incident autoclose duration. Kolom ini menentukan kapan Monitoring akan menutup insiden jika data metrik tidak ada.
  10. Opsional: Klik Documentation, lalu tambahkan informasi apa pun yang ingin Anda sertakan dalam pesan notifikasi.
  11. Klik Alert name dan masukkan nama untuk kebijakan pemberitahuan itu.
  12. Klik Create Policy.
Untuk mengetahui informasi selengkapnya, lihat Kebijakan pemberitahuan.

Langkah selanjutnya