Gunakan core dump untuk menganalisis penyebab instance mesin virtual (VM) yang tidak responsif.
Untuk mengumpulkan dump core di Compute Engine, Anda harus mengonfigurasi VM untuk menerima sinyal Non-Maskable Interrupt (NMI), lalu menjalankan perintah SendDiagnosticInterrupt
untuk meminta kernel panic atau layar biru di sistem operasi Anda. Kernel panik atau layar biru memulai pengumpulan dump
inti oleh sistem operasi tamu. Selanjutnya, dump inti ini dapat digunakan untuk
tujuan proses debug, terutama dalam skenario yang sulit direproduksi, seperti
pembekuan kernel.
Sebelum memulai
- Pengiriman sinyal NMI dihitung dalam kuota API Kueri default. Untuk informasi selengkapnya, lihat Batas kapasitas API.
-
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:
gcloud
-
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
- Menetapkan region dan zona default.
REST
Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.
Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:
gcloud init
-
Peran yang diperlukan
Guna memastikan bahwa pengguna atau akun layanan Anda memiliki izin yang diperlukan untuk mengirim sinyal NMI ke VM, minta administrator untuk memberi pengguna atau akun layanan Anda peran IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1
) di project Anda.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.
Peran yang telah ditentukan ini berisi izin compute.instances.sendDiagnosticInterrupt
, yang diperlukan untuk mengirim sinyal NMI ke VM.
Administrator Anda mungkin juga dapat memberi pengguna atau akun layanan izin ini dengan peran khusus atau peran standar lainnya.
Ringkasan
Untuk menggunakan core dump guna membantu men-debug masalah keamanan atau VM yang tidak responsif, Anda harus menyelesaikan langkah-langkah berikut:
- Mengonfigurasi VM untuk menghasilkan core dump
- Kirim sinyal NMI untuk menghasilkan core dump
- Meninjau core dump
Batasan
Untuk VM yang mengaktifkan Booting Aman, Anda harus menonaktifkan Booting Aman sebelum mengirim sinyal gangguan NMI. Untuk mengetahui petunjuknya, baca Mengubah opsi Shielded VM pada instance VM.
Mengonfigurasi VM
Respons VM saat menerima sinyal gangguan NMI bergantung pada konfigurasi sistem operasi VM.
Setiap sistem operasi menulis log dump intinya di lokasi yang berbeda. Misalnya,
dalam sistem operasi Ubuntu, file error dump disimpan ke
/var/crash/
secara default.
Untuk mengonfigurasi OS tamu agar menghasilkan error dump saat sinyal NMI diterima, tinjau dokumentasi untuk sistem operasi yang didukung.
Sistem operasi | Link ke petunjuk | Catatan tambahan |
---|---|---|
Ubuntu | Ubuntu: File dump error kernel | Untuk VM Linux, Anda harus mengonfigurasi kernel agar mengalami error saat menerima sinyal interupsi NMI. Untuk mengonfigurasi kernel agar tidak bekerja, tambahkan baris berikut ke file konfigurasi Anda: kernel.unknown_nmi_panic=1 |
SUSE Linux Enterprise Server (SLES) | Mengonfigurasi memori errorkernel untuk analisis dump inti kernel | |
Red Hat Enterprise Linux (RHEL) | Gunakan kedua dokumen berikut: |
|
Container-Optimized OS (COS) | Mengaktifkan Kernel Crash Dump pada Instance COS GCE | Hanya COS 93 dan yang lebih baru yang mendukung pembuatan kdump menggunakan sinyal NMI. |
Windows | Menghasilkan kernel atau seluruh error dump | VM klien Windows tidak menyimpan file memory dump kecuali jika file tersebut merupakan anggotadomain AD atau hal berikut berlaku:
Untuk informasi selengkapnya, lihat Penyimpanan dump Kernel dan perilaku pembersihan di Windows 7 |
Mengirim NMI untuk menghasilkan core dump
Setelah mengonfigurasi VM, Anda dapat mengirim sinyal NMI ke VM dengan menggunakan Google Cloud CLI, atau REST.
gcloud
Untuk mengirim sinyal NMI, gunakan perintah instances send-diagnostic-interrupt
.
gcloud compute instances send-diagnostic-interrupt VM_NAME \ --zone=ZONE
Ganti kode berikut:
VM_NAME
: ID instance atau nama VM tempat Anda ingin mengumpulkan core dumpZONE
: zona tempat VM Anda berada
Outputnya mirip dengan hal berikut ini:
<Empty Response>
Untuk mengetahui daftar lengkap output, lihat bagian berikutnya dalam dokumen ini tentang "Respons perintah NMI".
REST
Opsional. Jika belum tersedia, buat kunci API. Untuk informasi selengkapnya tentang membuat kunci API, lihat Membuat kunci API.
Untuk mengirim sinyal NMI, buat permintaan
POST
ke metodesendDiagnosticInterrupt
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/sendDiagnosticInterrupt?key=API_KEY
Misalnya, Anda dapat menggunakan perintah
curl
untuk membuat permintaan sebagai berikut:curl --request POST 'https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/sendDiagnosticInterrupt?key=API_KEY' \ --header 'Authorization: Bearer $(gcloud auth print-access-token)' \ --header 'Accept: application/json' \ --compressed
Ganti kode berikut:
PROJECT_ID
: ID project tempat VM akan dibuatZONE
: zona tempat VM Anda beradaVM_NAME
: ID instance atau nama VM tempat Anda ingin mengumpulkan core dumpAPI_KEY
: Kunci API Anda
Outputnya mirip dengan hal berikut ini:
<Empty Response>
Untuk mengetahui daftar lengkap output, baca bagian selanjutnya dalam dokumen ini tentang "respons perintah NMI".
Respons perintah NMI
Salah satu respons berikut ditampilkan saat Anda mencoba mengirim sinyal NMI.
Status | Isi | Catatan |
---|---|---|
BERHASIL | <Empty Response> |
SUCCESS menunjukkan bahwa sinyal NMI dikirim ke
sistem operasi. Tindakan ini tidak menjamin bahwa core dump dikumpulkan, atau
bahwa VM dinonaktifkan atau dimulai ulang. Perilaku ini ditentukan oleh konfigurasi sistem operasi. |
GAGAL | UNSUPPORTED_OPERATION
|
Ini terjadi ketika sistem operasi gagal menerima sinyal NMI. Ada beberapa alasan untuk hal ini. Skenario umumnya adalah VM sedang
dimigrasikan langsung atau VM
tidak dikonfigurasi dengan benar untuk menerima sinyal NMI.
Untuk mengatasi hal ini, Anda dapat mencoba langkah berikut:
|
GAGAL | Required 'compute.instances.sendDiagnosticInterrupt' permission for [..]
|
Perintah gagal karena pengguna yang mengajukan permintaan tidak memiliki
izin yang memadai. Untuk mengatasi hal ini, Anda dapat menetapkan peran kepada pengguna yang berisi izin compute.instances.sendDiagnosticInterrupt . |
Meninjau dump inti
Tinjau file dump error di lokasi yang dikonfigurasi atau default untuk sistem operasi Anda.
Misalnya, dalam sistem operasi Ubuntu, secara default, file dump error disimpan ke /var/crash/
.