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
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
- 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
Di Konsol Google Cloud, buka halaman Logs Explorer.
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.Jika peristiwa yang Anda cari terjadi lebih dari satu jam sebelumnya, tetapkan jangka waktu kustom dengan mengklik simbol jam dan memasukkan rentang kustom.
Klik Jalankan kueri. Hasilnya ditampilkan di bagian Query results.
Klik panah peluas
di samping setiap hasil untuk menampilkan informasi mendetail.Lihat Meninjau Cloud Audit Logs untuk mempelajari lebih lanjut kolom
method
danprincipalEmail
yang terkait dengan shutdown dan reboot, dan tindakan yang dapat Anda lakukan untuk mencegahnya.
gcloud
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.
Lihat Meninjau Cloud Audit Logs untuk mempelajari lebih lanjut kolom
method
danprincipalEmail
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.
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:
- Kegagalan hardware.
- Menghentikan preemptible instance.
- Peristiwa pemeliharaan infrastruktur saat instance VM tidak ditetapkan ke live migrate.
- Menghapus instance MIG menggunakan salah satu metode berikut:
- Metode API
instances.delete
- Perintah
gcloud compute instances delete
- Metode API
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:
- Merancang sistem yang kuat
- Pola untuk aplikasi yang skalabel dan tangguh
- Membuat grup instance terkelola
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 peristiwaterminateOnHostMaintenance
jika kebijakan pemeliharaan hostautomaticRestart
VM Anda ditetapkan ketrue
. Dalam log, entri loghostError
atauterminateOnHostMaintenance
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 keTERMINATE
, 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.
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.
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:
Di Konsol Google Cloud, buka halaman Log-based Metrics.
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
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"
Di bagian Labels, klik Add label.
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)
- Label name:
Klik Done
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
:
- Jalankan operasi
stop
danstart
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.
Buka Dashboards di Konsol Google Cloud.
Dari tab Dashboard List, buka dasbor
GCE VM Lifecycle Events Monitoring
.Pilih VM dari menu drop-down Name.
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:
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, sepertistop
ataustart
yang dilakukan terhadap VM pada titik waktu tertentu.
- Metrik
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:
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
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"
Jika berlaku, Aktifkan penagihan pada project host.
Untuk menghindari terulangnya masalah ini, baca Mengamankan link antara project dan akun penagihannya.