Memecahkan masalah shutdown dan reboot VM


Dokumen ini menjelaskan penyebab umum shutdown dan reboot tidak terduga pada instance mesin virtual (VM) dan cara mencegahnya.

Shutdown dan reboot VM dapat disebabkan oleh peristiwa sistem atau aktivitas admin. Shutdown dan reboot karena peristiwa sistem dihasilkan oleh sistem Google atau sistem operasi VM Anda. Shutdown dan reboot karena aktivitas admin dihasilkan oleh panggilan API yang dibuat oleh pengguna atau akun layanan. Semua shutdown dan reboot dicatat dalam log, kecuali untuk reboot yang dimulai dari dalam VM.

Sebelum memulai

  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. Menetapkan region dan zona default.

Mendiagnosis shutdown dan reboot VM

Untuk mendiagnosis penyebab VM mengalami shutdown atau reboot mendadak, Anda harus mengkueri log VM. Untuk mempercepat pengidentifikasian penyebab shutdown atau reboot VM di masa mendatang, buat dasbor yang berisi log. Setelah Anda mengkueri log ini, tinjau kolom method dan principalEmail untuk menentukan peristiwa apa serta pengguna atau layanan mana yang memulai shutdown atau reboot.

Mengkueri Cloud Audit Logs

Kueri Cloud Audit Logs untuk menampilkan daftar peristiwa sistem dan aktivitas admin yang mungkin menyebabkan shutdown atau reboot.

Konsol

  1. Di Konsol Google Cloud, buka halaman Logs Explorer.

    Buka Logs Explorer

  2. Di kolom Query, masukkan kueri berikut:

    resource.type="gce_instance"
    "VM_NAME"
    logName:("logs/cloudaudit.googleapis.com%2Fsystem_event" OR "logs/cloudaudit.googleapis.com%2Factivity")
    

    Ganti VM_NAME dengan nama VM yang di-shutdown atau di-reboot.

  3. Jika peristiwa yang Anda cari terjadi lebih dari satu jam sebelumnya, tetapkan jangka waktu kustom dengan mengklik simbol jam dan memasukkan rentang kustom.

    Tetapkan jangka waktu kueri.

  4. Klik Jalankan kueri. Hasilnya ditampilkan di bagian Query results.

  5. Klik panah peluas di samping setiap hasil untuk menampilkan informasi mendetail.

  6. Lihat Meninjau Cloud Audit Logs untuk mempelajari lebih lanjut kolom method dan principalEmail yang terkait dengan shutdown dan reboot, dan tindakan yang dapat Anda lakukan untuk mencegahnya.

gcloud

  1. Lihat Cloud Audit Logs menggunakan perintah gcloud logging read:

    gcloud logging read --freshness=TIME 'resource.type="gce_instance" "VM_NAME" logName:("logs/cloudaudit.googleapis.com%2Fsystem_event" OR "logs/cloudaudit.googleapis.com%2Factivity")'
    

    Ganti kode berikut:

    • TIME: lamanya waktu yang Anda ingin kueri. Misalnya, 1h mengkueri entri log dalam satu jam terakhir. Untuk informasi tentang format tanggal dan waktu, lihat gcloud topic datetimes.
    • VM_NAME: nama VM yang di-shutdown atau di-reboot.

    Hasil akan ditampilkan.

  2. Lihat Meninjau Cloud Audit Logs untuk mempelajari lebih lanjut kolom method dan principalEmail yang terkait dengan shutdown dan reboot, dan tindakan yang dapat Anda lakukan untuk mencegahnya.

Meninjau Cloud Audit Logs

Tinjau kolom method dan principalEmail di Cloud Audit Logs untuk mengetahui alasan VM di-shutdown atau di-reboot.

  1. Tinjau kolom method di Cloud Audit Logs dan bandingkan dengan metode yang tercantum dalam tabel berikut.

    Metode Jenis shutdown Deskripsi
    compute.instances.repair.recreateInstance Peristiwa sistem

    Jika VM Anda termasuk dalam grup instance terkelola (MIG), MIG akan membuat ulang VM jika status VM berubah dari RUNNING dan MIG tidak memulai perubahan itu.

    Perubahan status instance yang tidak dimulai oleh MIG meliputi:

    compute.instances.hostError Peristiwa sistem

    Error host (compute.instances.hostError) berarti telah terjadi masalah hardware atau software pada mesin fisik yang menghosting VM Anda yang menyebabkan VM Anda tidak bekerja. Error host yang melibatkan kegagalan hardware total atau masalah hardware lainnya dapat mencegah migrasi langsung VM Anda. Jika VM Anda disetel untuk otomatis memulai ulang, yang merupakan setelan default, Google akan memulai ulang VM Anda, biasanya dalam waktu tiga menit sejak error terdeteksi. Bergantung pada masalahnya, proses mulai ulang mungkin memerlukan waktu hingga 5,5 menit.

    VM dengan disk SSD lokal

    Jika terjadi error host pada VM yang memiliki satu atau beberapa disk SSD Lokal yang terpasang, Compute Engine akan melakukan upaya terbaik untuk menghubungkan kembali ke VM dan mempertahankan SSD Lokal. data. Saat Compute Engine sedang memulihkan disk VM dan SSD Lokal Anda, sistem host dan disk yang mendasarinya tidak responsif.

    Anda dapat menentukan berapa lama waktu yang dihabiskan Compute Engine untuk mencoba memulihkan data SSD Lokal dengan menetapkan waktu tunggu pemulihan SSD Lokal.

    Untuk mengetahui informasi selengkapnya tentang perilaku disk SSD Lokal saat terjadi error host, lihat Persistensi data SSD lokal.

    VM tidak responsif

    Terkadang, VM mungkin menjadi tidak responsif sebelum error host terdeteksi. Anda dapat mengurangi waktu tunggu Compute Engine untuk memulai ulang atau menghentikan VM dengan menetapkan waktu tunggu pemulihan error host (Pratinjau). Untuk mengetahui informasi selengkapnya, lihat Menetapkan kebijakan ketersediaan.

    Kegagalan fisik dan software terkadang dapat terjadi, tetapi jarang terjadi. Untuk melindungi aplikasi dan layanan Anda dari peristiwa sistem yang berpotensi mengganggu ini, tinjau referensi berikut:

    Google juga menawarkan layanan terkelola seperti App Engine dan lingkungan fleksibel App Engine.

    compute.instances.automaticRestart Peristiwa sistem

    Peristiwa ini terjadi setelah peristiwa hostError atau peristiwa terminateOnHostMaintenance jika kebijakan pemeliharaan host automaticRestart VM Anda ditetapkan ke true. Dalam log, entri log hostError atau terminateOnHostMaintenance mendahului log ini.

    Jika ingin mengubah kebijakan pemeliharaan host VM Anda, lihat Memperbarui opsi untuk instance.

    compute.instances.guestTerminate Peristiwa sistem Sistem operasi VM Anda memulai shutdown.
    compute.instances.terminateOnHostMaintenance Peristiwa sistem

    Jika Anda menetapkan kebijakan pemeliharaan host onHostMaintenance VM ke TERMINATE, Compute Engine akan menghentikan VM Anda saat ada peristiwa pemeliharaan di mana Google harus memindahkan VM Anda ke host lain.

    Jika ingin mengubah kebijakan onHostMaintenance VM Anda, lihat Memperbarui opsi untuk instance.

    compute.instances.preempted Peristiwa sistem

    Compute Engine mem-preempt Spot VM atau preemptible VM lama Anda:

    • Saat mem-preempt Spot VM, Compute Engine akan menghentikan atau menghapus Spot VM tersebut berdasarkan tindakan penghentiannya. Spot VM tidak memiliki runtime maksimum.
    • Saat mem-preempt preemptible VM, Compute Engine akan menghentikan VM setelah runtime maksimum, yakni 24 jam. Untuk menghindari batasan ini, gunakan Spot VM.

    Spot VM dan preemptible VM merupakan kapasitas Compute Engine ekstra, sehingga Compute Engine dapat mem-preempt instance tersebut setiap kali kapasitasnya diperlukan di tempat lain. Anda dapat membantu mengurangi dampak preemption dengan mengikuti praktik terbaik. Atau, jika Anda memerlukan VM dengan runtime yang dikontrol pengguna, buat VM standar.

    compute.instances.stop Aktivitas admin

    Pengguna atau akun layanan menghentikan VM Anda.

    Lanjutkan ke langkah berikutnya untuk mengidentifikasi pengguna atau akun layanan yang menghentikan VM Anda. Untuk informasi tentang cara me-restart VM, lihat Memulai ulang instance yang dihentikan.

    compute.instances.delete Aktivitas admin

    Pengguna atau akun layanan menghapus VM Anda.

    Lanjutkan ke langkah berikutnya untuk mengidentifikasi pengguna atau akun layanan yang menghapus VM Anda. Untuk informasi tentang cara membuat VM baru, lihat Membuat dan memulai VM.

    compute.instances.insert Aktivitas admin

    Pengguna atau akun layanan membuat VM Anda.

    Lanjutkan ke langkah berikutnya untuk mengidentifikasi pengguna atau akun layanan yang membuat VM Anda. Untuk informasi tentang cara membuat VM baru, lihat Membuat dan memulai VM.

    compute.instances.reset Aktivitas admin

    Pengguna atau akun layanan mereset VM Anda.

    Lanjutkan ke langkah berikutnya untuk mengidentifikasi pengguna atau akun layanan yang menghentikan VM Anda.

  2. Tinjau kolom principalEmail pada Cloud Audit Logs untuk mengidentifikasi pengguna atau layanan yang memulai shutdown atau reboot. Tabel berikut mencantumkan layanan umum yang dikelola Google yang memulai shutdown atau reboot.

    Email Deskripsi
    system@google.com Peristiwa sistem menyebabkan shutdown atau reboot.
    project-number@cloudservices.gserviceaccount.com

    Akun layanan yang dikelola Google memulai shutdown.

    Untuk menentukan dari project mana layanan memulai shutdown, tinjau project-number akun layanan.

    Untuk menentukan layanan Google mana yang membuat permintaan, tinjau kolom protoPayload.requestMetadata.callerSuppliedUserAgent.

    Jika pengguna memicu shutdown atau reboot, alamat email mereka akan muncul di kolom principalEmail. Contoh, cloudysanfrancisco@gmail.com.

    Administrator dapat mencegah pengguna mengubah status VM project dengan mengubah izin Identity and Access Management di akun pengguna. Untuk mengetahui informasi selengkapnya, lihat Memberikan, mengubah, dan mencabut akses ke resource.

Memantau peristiwa siklus proses VM

Anda dapat memantau peristiwa siklus proses VM (termasuk shutdown, reboot, dan error host) dengan membuat dasbor Cloud Monitoring.

Dasbor ini memungkinkan Anda memvisualisasikan peristiwa sistem dan aktivitas admin yang dijelaskan secara lebih mendetail di bagian Meninjau Cloud Audit Logs dalam dokumen ini.

Dasbor Siklus Proses VM: Peristiwa Stop dan Start Gambar 1. Contoh dasbor yang menampilkan ketersediaan instance dan peristiwa siklus prosesnya seperti instance yang dihentikan.

Membuat metrik berbasis log

Untuk mencatat peristiwa siklus proses VM, buat metrik berbasis log yang ditentukan pengguna. Metrik ini menggunakan Cloud Audit Logs untuk mencatat berapa kali peristiwa siklus proses VM tertentu terjadi.

Untuk mendapatkan izin yang diperlukan guna membuat metrik, minta administrator untuk memberi Anda peran IAM Logs Writer (roles/logging.logWriter) pada proyek. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Buat metrik berbasis log yang ditentukan pengguna dengan melakukan langkah berikut:

  1. Di Konsol Google Cloud, buka halaman Log-based Metrics.

    Buka Log-based Metrics

  2. Klik Create Metric.

Di bagian Metric Type, lakukan hal berikut:

  • Pilih Counter.
  • Biarkan Distribution pada setelan default-nya, yaitu tidak dipilih.

Di bagian Details, masukkan informasi berikut:

  • Log-based metric name: vm-lifecycle-events. Anda harus menggunakan nama persis ini agar dasbor berfungsi dengan benar.
  • Description: Opsional — Masukkan deskripsi untuk metrik ini.
  • Units: 1
  1. Di bagian Filter selection, tentukan berikut ini:

    • Dari menu drop-down Select log scope, pilih: Project logs
    • Di Build filter, masukkan:
      resource.type = "gce_instance" AND
      log_id("cloudaudit.googleapis.com/activity") OR
      log_id("cloudaudit.googleapis.com/system_event")
      operation.first="true"
  2. Di bagian Labels, klik Add label.

  3. Tentukan nilai berikut:

    • Label name: method
    • Label type: STRING
    • Field name: protoPayload.methodName
    • Regular expression:
      (recreateInstance|hostError|automaticRestart|guestTerminate|terminateOnHostMaintenance|preempted|insert|stop|delete|reset|start)
  4. Klik Done

  5. Klik Create Metric

Menggunakan dasbor

Data tidak akan muncul di dasbor hingga VM mengalami peristiwa sistem atau aktivitas admin. Untuk menguji apakah dasbor berfungsi, lakukan aktivitas admin, seperti operasi stop dan start:

  1. Jalankan operasi stop dan start pada VM yang ada, atau buat VM baru untuk tujuan pengujian.

Untuk mendapatkan izin yang diperlukan untuk menggunakan dasbor, minta administrator untuk memberi Anda peran IAM Monitoring Dashboard Viewer (roles/monitoring.dashboardViewer) pada project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

  1. Buka Dashboards di Konsol Google Cloud.

    Buka Dashboards

  2. Dari tab Dashboard List, buka dasbor GCE VM Lifecycle Events Monitoring.

  3. Pilih VM dari menu drop-down Name.

  4. Persempit deret waktu ke jangka waktu yang relevan.

    Untuk mengetahui cara lainnya dalam memfilter dasbor, lihat Menambahkan filter sementara.

Dasbor ini berisi dua diagram yang menampilkan linimasa peristiwa sistem dan aktivitas admin yang terjadi di sebuah VM:

  1. Diagram VM Lifecycle Timeline menampilkan hal berikut:

    • Metrik compute.googleapis.com/instance/uptime yang menunjukkan apakah VM aktif pada titik waktu tertentu atau tidak, di mana 1 adalah aktif dan 0 tidak aktif. Perhatikan bahwa metrik ini mencerminkan ketersediaan sebagai akibat dari aktivitas pengguna serta peristiwa sistem, dan tidak mengindikasikan SLA Compute Engine.
    • Metrik berbasis log vm-lifecycle-events untuk menghitung jumlah tindakan siklus proses, seperti stop atau start yang dilakukan terhadap VM pada titik waktu tertentu.
  2. Diagram Events menunjukkan metrik berbasis log vm-lifecycle-events yang sama, tetapi dalam tampilan yang diperbesar agar lebih mudah dibaca. Perhatikan bahwa meskipun sumbu X sejajar, warnanya tidak sinkron di antara kedua diagram.

Menyelidiki shutdown VM massal di banyak project

Compute Engine dapat mematikan banyak VM yang terhubung ke project host VPC Bersama, jika penagihan project host VPC Bersama tersebut tidak aktif atau dinonaktifkan.

Untuk menentukan apakah VM Anda dimatikan karena permintaan shutdown massal, temukan operasi stop yang dimulai oleh cloud-cluster-manager@prod.google.com.

Memulai instance yang terdampak akan menampilkan error yang mirip dengan berikut ini:

Starting instance(s) INSTANCE_NAME...failed.
ERROR: (gcloud.compute.instances.start) The default network interface [nic0] is frozen.

Untuk menyelesaikan masalah ini, lakukan tindakan berikut:

  1. Identifikasi VPC Bersama yang digunakan oleh VM, dengan menggunakan perintah gcloud compute instances describe:

    gcloud compute instances describe VM_NAME \
       --format="flattened(networkInterfaces[].network)"
    

    Outputnya mirip dengan hal berikut ini:

    networkInterfaces[0].network: https://www.googleapis.com/compute/v1/projects/SHARED_VPC_PROJECT/global/networks/FROZEN_NETWORK
    
  2. Verifikasi di project host VPC Bersama apakah penagihan telah dinonaktifkan.

    resource.type="project"
    protoPayload.request.@type="type.googleapis.com/google.internal.cloudbilling.billingaccount.v1.DisableResourceBillingRequest"
    protoPayload.response.resourceBillingInfo.billingAccountAssignmentType="DISABLED"
    
  3. Jika berlaku, Aktifkan penagihan pada project host.

Untuk menghindari terulangnya masalah ini, baca Mengamankan link antara project dan akun penagihannya.