Mengumpulkan dump inti


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.
  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses yang digunakan untuk memverifikasi identitas Anda agar dapat mengakses Google Cloud layanan dan API. 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:

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Untuk informasi selengkapnya, lihat Mengautentikasi untuk menggunakan REST dalam Google Cloud dokumentasi autentikasi.

Peran yang diperlukan

Untuk memastikan bahwa akun pengguna atau akun layanan Anda memiliki izin yang diperlukan untuk mengirim sinyal NMI ke VM, minta administrator untuk memberi akun 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 ke project, folder, dan organisasi.

Peran yang telah ditentukan ini berisi izin compute.instances.sendDiagnosticInterrupt, yang diperlukan untuk mengirim sinyal NMI ke VM.

Administrator Anda mungkin juga dapat memberikan izin ini kepada akun pengguna atau layanan Anda dengan peran khusus atau peran bawaan lainnya.

Ringkasan

Untuk menggunakan core dump guna membantu men-debug masalah keamanan atau VM yang tidak responsif, Anda harus menyelesaikan langkah-langkah berikut:

  1. Mengonfigurasi VM untuk menghasilkan core dump
  2. Kirim sinyal NMI untuk menghasilkan core dump
  3. 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:

  • Registry menetapkan AlwaysKeepMemoryDump ke 1
  • Disk memiliki ruang kosong lebih dari 25 GB

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 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 dump
  • ZONE: zona tempat VM Anda berada

Outputnya mirip dengan berikut ini:

<Empty Response>

Untuk mengetahui daftar lengkap output, lihat bagian berikutnya dalam dokumen ini tentang "Respons perintah NMI".

REST

  1. Opsional. Jika belum tersedia, buat kunci API. Untuk informasi selengkapnya tentang membuat kunci API, lihat Membuat kunci API.

  2. Untuk mengirim sinyal NMI, buat permintaan POST ke metode sendDiagnosticInterrupt.

    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 dibuat
    • ZONE: zona tempat VM Anda berada
    • VM_NAME: ID instance atau nama VM tempat Anda ingin mengumpulkan core dump
    • API_KEY: Kunci API Anda

    Outputnya mirip dengan 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:
  • Pastikan bahwa VM dikonfigurasi dengan benar. Lihat Mengonfigurasi VM.
  • Tunggu dan coba lagi permintaan SendDiagnosticInterrupt.
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/.