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
-
Jika Anda belum melakukannya, siapkan autentikasi.
Autentikasi adalah
proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud.
Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
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.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.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 terjadi masalah hardware atau software pada mesin fisik atau infrastruktur pusat data yang menghosting instance komputasi Anda yang menyebabkan instance Anda error. Error host yang melibatkan kegagalan hardware total atau masalah hardware lainnya dapat mencegah migrasi langsung instance Anda. Jika instance Anda disetel untuk otomatis memulai ulang, yang merupakan setelan default, Compute Engine akan memulai ulang instance Anda, biasanya dalam waktu tiga menit sejak error terdeteksi. Bergantung pada masalahnya, proses mulai ulang mungkin memerlukan waktu hingga 5,5 menit.Terkadang, instance komputasi mungkin menjadi tidak responsif sebelum error host diberi sinyal. Anda dapat mengurangi waktu tunggu Compute Engine untuk memulai ulang atau menghentikan instance 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
Agen layanan memulai shutdown.
Untuk menentukan dari project mana layanan memulai shutdown, tinjau
project-number
agen 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.
Di Konsol Google Cloud, buka halaman Log-based Metrics.
Klik Buat Metrik.
- Pilih
Counter
. - Biarkan Distribution pada setelan default-nya, yaitu tidak dipilih.
- 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 Select project or log bucket, 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
- Jalankan operasi
stop
danstart
pada VM yang ada, atau buat VM baru untuk tujuan pengujian. 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.
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.Identifikasi VPC Bersama yang digunakan oleh VM, dengan menggunakan perintah
gcloud compute instances describe
:gcloud compute instances describe VM_NAME \ --format="flattened(networkInterfaces[].network)"
Output-nya mirip dengan 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.
- Shutdown dan mulai ulang yang dipicu peristiwa sistem: Mengidentifikasi penghentian yang dimulai oleh sistem Google Cloud internal karena peristiwa pemeliharaan sistem, kegagalan hardware normal, batasan resource.
- Shutdown/reboot yang dipicu aktivitas admin sistem: Investigasi penghentian yang disebabkan oleh tindakan langsung, seperti panggilan API yang dilakukan oleh pengguna atau akun layanan. Tindakan ini dapat mencakup penonaktifan manual, mulai ulang, atau proses otomatis yang memengaruhi status VM.
- Pembuatan teks RCA tidak resmi: Memberikan teks Analisis Akar Masalah yang mendetail, yang menguraikan penyebab penghentian yang diidentifikasi, sistem atau aktivitas yang terlibat, dan rekomendasi untuk mencegah terjadinya masalah serupa di masa mendatang jika berlaku.
- Selesaikan, lalu salin perintah berikut.
- Buka konsol Google Cloud dan aktifkan Cloud Shell. Buka Cloud Console
- Tempel perintah yang disalin.
- Jalankan perintah
gcpdiag
, yang mendownload image dockergcpdiag
, lalu melakukan pemeriksaan diagnostik. Jika berlaku, ikuti petunjuk output untuk memperbaiki pemeriksaan yang gagal. - Salin dan jalankan perintah berikut di workstation lokal Anda.
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- Jalankan perintah
gcpdiag
../gcpdiag runbook gce/vm-termination \ --parameter project_id=PROJECT_ID \ --parameter name=VM_NAME \ --parameter zone=ZONE
- PROJECT_ID: ID project yang berisi resource
- VM_NAME: Nama VM target dalam project Anda.
- ZONE: Zona tempat VM target Anda berada.
--universe-domain
: Jika berlaku, domain Trusted Partner Sovereign Cloud yang menghosting resource--parameter
atau-p
: Parameter runbook
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
danprincipalEmail
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
gcloud
Meninjau Cloud Audit Logs
Tinjau kolom
method
danprincipalEmail
di Cloud Audit Logs untuk mengetahui alasan VM di-shutdown atau di-reboot.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 Log Audit 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 project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.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 bagian Metric Type, lakukan hal berikut:
Di bagian Details, masukkan informasi berikut:
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
danstart
: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 ke project, folder, dan organisasi.Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Dasbor ini berisi dua diagram yang menampilkan linimasa peristiwa sistem dan aktivitas admin yang terjadi di sebuah VM:
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:
Untuk membantu mencegah terulangnya masalah ini, baca Mengamankan link antara project dan akun penagihannya.
Menyelidiki masalah penghentian VM dengan gcpdiag
gcpdiag
adalah alat open source. Ini bukan produk Google Cloud yang didukung secara resmi. Anda dapat menggunakan alatgcpdiag
untuk membantu mengidentifikasi dan memperbaiki masalah project Google Cloud. Untuk mengetahui informasi selengkapnya, lihat project gcpdiag di GitHub.Runbook gcpdiag ini menyelidiki masalah penghentian VM, dengan memeriksa area berikut:Konsol Google Cloud
gcpdiag runbook gce/vm-termination \ --parameter project_id=PROJECT_ID \ --parameter name=VM_NAME \ --parameter zone=ZONE
Docker
Anda dapat menjalankan
gcpdiag
menggunakan wrapper yang memulaigcpdiag
dalam penampung Docker. Docker atau Podman harus diinstal.Lihat parameter yang tersedia untuk runbook ini.
Ganti kode berikut:
Flag yang berguna:
Untuk mengetahui daftar dan deskripsi semua flag alat
gcpdiag
, lihat petunjuk penggunaangcpdiag
.Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2024-12-22 UTC.
-