Memantau lingkungan dengan Cloud Monitoring

Cloud Composer 1 | Cloud Composer 2

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

Cloud Monitoring memberikan visibilitas pada 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.

Logging merekam log yang dihasilkan oleh container penjadwal dan worker di cluster lingkungan Anda. Log ini berisi informasi dependensi tingkat sistem dan Airflow untuk membantu proses proses debug. Untuk informasi tentang cara melihat log, lihat Melihat log Airflow.

Sebelum memulai

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

    • 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 mengetahui informasi selengkapnya tentang izin dan peran lainnya 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 dalam project Google Cloud Anda. Anda dapat menggunakan filter pengecualian untuk mengurangi volume log, termasuk log yang dihasilkan Cloud Logging untuk Cloud Composer.

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

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

Metrik lingkungan

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

Kesehatan lingkungan

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

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

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

DAG keaktifan disimpan di folder dags/ dan terlihat 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 yang cukup untuk berinteraksi dengan layanan tersebut. Contoh layanan yang diperlukan untuk operasi lingkungan adalah Artifact Registry, Cloud Logging, dan 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 berapa kali 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 berapa kali pemeriksaan izin dilakukan pada layanan yang diperlukan untuk operasi lingkungan.

Kesehatan database

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

Pod pemantauan Airflow akan mem-ping database setiap menit dan melaporkan status kondisi sebagai True jika koneksi SQL dapat dibuat atau False jika tidak.

Metrik database

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

Misalnya, Anda mungkin ingin meningkatkan ukuran lingkungan jika lingkungan Anda mendekati batas resource. 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
Pemakaian 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 dalam mode ketersediaan 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 lingkungan.

Metrik pekerja

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

Metrik ini digunakan untuk secara otomatis menskalakan jumlah pekerja di lingkungan Anda. Horizontal Pod Autoscaler menetapkan metrik ini, lalu komponen lingkungan Airflow Worker Set Controller akan menggunakan metrik ini untuk meningkatkan atau menurunkan jumlah pekerja Airflow, bergantung 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 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 di instance server web Airflow lingkungan Anda.

Misalnya, 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 pengoperasian DAG dan mengidentifikasi tugas yang menyebabkan latensi tinggi, metrik DAG berikut tersedia.

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

Cloud Monitoring hanya menampilkan metrik untuk alur kerja yang telah selesai dan tugas yang dijalankan (keberhasilan atau kegagalan). Tidak Ada Data akan ditampilkan saat tidak ada aktivitas alur kerja serta untuk alur kerja dan tugas yang sedang berlangsung.

Metrik Eksekutor Celery

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

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

Metrik aliran udara

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

Nama API Nama di Airflow Deskripsi
Kode keluar dari tugas seledri selain 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 selery composer.googleapis.com/environment/celery/task_timeout_error_count celery.task_timeout_error Jumlah AirflowTaskTimeout error yang muncul saat memublikasikan Task 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 Berseri dari database.
Error refresh 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 refresh 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> Detik sejak file DAG terakhir diproses.
Jumlah kios DagFileProcessorManager composer.googleapis.com/environment/dag_processing/manager_stall_count dag_processing.manager_stalls Jumlah DagFileProcessorManager proses 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 dimatikan karena memakan waktu 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 diperlukan untuk memindai dan mengimpor semua file DAG satu kali.
Ukuran bagasi DAG saat ini composer.googleapis.com/environment/dagbag_size dagbag_size Jumlah DAG yang ditemukan saat penjadwal menjalankan pemindaian berdasarkan konfigurasinya.
Notifikasi email melewatkan SLA gagal composer.googleapis.com/environment/email/sla_notification_failure_count sla_email_notification_failure Jumlah upaya notifikasi email melewatkan SLA yang gagal.
Buka slot di eksekutor composer.googleapis.com/environment/executor/open_slots executor.open_slots Jumlah slot terbuka di eksekutor.
Tugas yang diantrekan di eksekutor composer.googleapis.com/environment/executor/queued_tasks executor.queued_tasks Jumlah tugas dalam antrean di eksekutor.
Menjalankan tugas pada eksekutor composer.googleapis.com/environment/executor/running_tasks executor.running_tasks Jumlah tugas yang 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.
Tugas yang dimulai/selesai composer.googleapis.com/environment/job/count <job_name>_start, <job_name>_end Jumlah tugas yang dimulai/selesai, seperti SchedulerJob, LocalTaskJob.
Kegagalan heartbeat tugas composer.googleapis.com/environment/job/heartbeat_failure_count <job_name>_heartbeat_failure Jumlah detak jantung yang gagal untuk suatu tugas.
Tugas yang 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 instance tugas yang selesai per operator
Buka slot di kolam renang composer.googleapis.com/environment/pool/open_slots pool.open_slots.<pool_name> Jumlah slot yang terbuka dalam kumpulan.
Slot yang diantrekan di kumpulan composer.googleapis.com/environment/pool/queued_slots pool.queued_slots.<pool_name> Jumlah slot dalam antrean dalam kumpulan.
Slot lari di kolam renang composer.googleapis.com/environment/pool/running_slots pool.running_slots.<pool_name> Jumlah slot berjalan dalam kumpulan.
Tugas kelaparan di kolam composer.googleapis.com/environment/pool/starving_tasks pool.starving_tasks.<pool_name> Jumlah tugas yang kelaparan di kumpulan tugas.
Waktu yang dihabiskan di bagian penting penjadwal composer.googleapis.com/environment/scheduler/critical_section_duration scheduler.critical_section_duration Waktu yang dihabiskan di bagian kritis loop scheduler. Hanya satu penjadwal yang dapat memasuki loop ini pada satu waktu.
Kegagalan penguncian bagian kritis composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count scheduler.critical_section_busy Berapa kali proses penjadwal mencoba mendapatkan kunci pada bagian penting (yang diperlukan untuk mengirim 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 tanpa induk composer.googleapis.com/environment/scheduler/task/orphan_count scheduler.orphaned_tasks.cleared, scheduler.orphaned_tasks.adopted Jumlah tugas tanpa induk yang diselesaikan/diadopsi oleh penjadwal.
Tugas yang berjalan/kehabisan/dapat dijalankan composer.googleapis.com/environment/scheduler/tasks scheduler.tasks.running, scheduler.tasks.starving, scheduler.tasks.executable Jumlah tugas yang berjalan/kehabisan/dapat dieksekusi.
Heartbeat penjadwal composer.googleapis.com/environment/scheduler_heartbeat_count scheduler_heartbeat Penjadwalan heartbeat.
Notifikasi callback SLA gagal composer.googleapis.com/environment/sla_callback_notification_failure_count sla_callback_notification_failure Jumlah upaya notifikasi callback melewatkan SLA yang gagal.
Kegagalan pengecualian penyokupan sensor cerdas composer.googleapis.com/environment/smart_sensor/exception_failures smart_sensor_operator.exception_failures Jumlah kegagalan yang disebabkan oleh pengecualian dalam loop poking sensor smart sebelumnya.
Sensor cerdas mendeteksi kegagalan infrastruktur composer.googleapis.com/environment/smart_sensor/infra_failures smart_sensor_operator.infra_failures Jumlah kegagalan infrastruktur di loop poking sensor smart sebelumnya.
Pengecualian penyokongan sensor smart composer.googleapis.com/environment/smart_sensor/poked_exception smart_sensor_operator.poked_exception Jumlah pengecualian dalam loop poking sensor smart sebelumnya.
Sensor pintar berhasil mendeteksi tugas composer.googleapis.com/environment/smart_sensor/poked_success smart_sensor_operator.poked_success Jumlah tugas yang baru berhasil yang ditusuk oleh sensor smart di loop penyusupan sebelumnya.
Tugas yang dicolokkan sensor cerdas composer.googleapis.com/environment/smart_sensor/poked_tasks smart_sensor_operator.poked_tasks Jumlah tugas yang ditusuk oleh sensor smart pada loop penyok sebelumnya.
Instance tugas yang sebelumnya berhasil composer.googleapis.com/environment/task_instance/previously_succeeded_count previously_succeeded Jumlah instance tugas yang sebelumnya berhasil.
Tugas zombie yang terbunuh composer.googleapis.com/environment/zombie_task_killed_count zombies_killed Jumlah tugas zombie yang terbunuh.
Durasi pengoperasian 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 dari metrik pemeriksaan izin dan dependensi lingkungan serta 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 yang sebenarnya.
Tugas yang sudah selesai composer.googleapis.com/workflow/task_instance/finished_count ti.finish.<dag_id>.<task_id>.<state> Jumlah tugas yang selesai dalam DAG tertentu.
Durasi berjalan 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 dalam DAG tertentu.
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, 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 start_date yang diharapkan dari dagrun.

Menggunakan Monitoring untuk lingkungan Cloud Composer

Konsol

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

  • Resource Lingkungan Cloud Composer berisi metrik untuk lingkungan.

    Untuk 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 kustom serta widget melalui Cloud Monitoring API dan perintah gcloud monitoring dashboards. Untuk informasi lebih lanjut, lihat Mengelola dasbor menurut API.

Untuk mengetahui 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 panel navigasi konsol Google Cloud, pilih Monitoring, lalu pilih  Alerting:

    Buka Alerting

  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 Lingkungan Cloud Composer atau Workflow Cloud Composer.
    3. Pilih Kategori metrik dan Metrik, lalu pilih Terapkan.
  5. Klik Next.
  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 Next.
  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