Kirim interupsi diagnostik untuk men-debug instans Amazon yang tidak dapat dijangkau EC2 - Amazon Elastic Compute Cloud

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kirim interupsi diagnostik untuk men-debug instans Amazon yang tidak dapat dijangkau EC2

Awas

Interupsi diagnostik ditujukan untuk digunakan oleh pengguna tingkat lanjut. Penggunaan yang salah dapat memengaruhi instans Anda secara negatif. Mengirimkan interupsi diagnostik ke suatu instans dapat memicu crash dan boot ulang pada instans, yang dapat menyebabkan hilangnya data.

Anda dapat mengirim interupsi diagnostik ke instance yang tidak dapat dijangkau atau tidak responsif untuk memicu kepanikan kernel secara manual untuk instance Linux, atau kesalahan berhenti (biasanya disebut sebagai kesalahan layar biru) untuk instance Windows.

Instans Linux

Sistem operasi Linux biasanya akan mengalami crash dan boot ulang ketika kepanikan kernel terjadi. Perilaku khusus dari sistem operasi bergantung pada konfigurasinya. Kepanikan kernel juga dapat digunakan untuk menyebabkan kernel sistem operasi instans melakukan tugas, seperti membuat file dump crash. Anda kemudian dapat menggunakan informasi pada file dump crash tersebut untuk melakukan analisis akar penyebab masalah dan melakukan debug instans. Data dump crash dihasilkan secara lokal oleh sistem operasi pada instans itu sendiri.

Instans Windows

Secara umum, sistem operasi Windows mengalami crash dan melakukan boot ulang ketika terjadi kesalahan penghentian, tetapi perilaku spesifiknya bergantung pada konfigurasinya. Kesalahan penghentian juga dapat menyebabkan sistem operasi menulis informasi debug, seperti dump memori kernel, ke file. Kemudian, Anda dapat menggunakan informasi ini untuk melakukan analisis akar penyebab guna melakukan debug instans. Data dump memori dihasilkan secara lokal oleh sistem operasi pada instans itu sendiri.

Sebelum mengirimkan interupsi diagnostik ke instans Anda, kami sarankan untuk membaca dokumentasi sistem operasi, kemudian membuat perubahan konfigurasi yang diperlukan.

Tipe instans yang didukung

Interupsi diagnostik didukung pada semua jenis instans berbasis Nitro, kecuali yang didukung oleh prosesor AWS Graviton. Untuk informasi lebih lanjut, lihat contoh yang dibangun di atas Sistem AWS Nitro dan AWS Graviton.

Prasyarat

Sebelum menggunakan interupsi diagnostik, Anda harus mengonfigurasi sistem operasi instans. Ini memastikan bahwa ia melakukan tindakan yang Anda butuhkan ketika kepanikan kernel (instance Linux) atau kesalahan berhenti (instance Windows) terjadi.

Untuk mengonfigurasi Amazon Linux 2 agar membuat crash dump saat kepanikan kernel terjadi
  1. Menghubungkan ke instans Anda.

  2. Instal kexec dan kdump.

    [ec2-user ~]$ sudo yum install kexec-tools -y
  3. Konfigurasikan kernel untuk mencadangkan jumlah memori yang sesuai untuk kernel sekunder. Jumlah memori yang disimpan bergantung pada total memori yang tersedia pada instans Anda. Buka file /etc/default/grub menggunakan editor teks pilihan Anda, temukan baris yang dimulai dengan GRUB_CMDLINE_LINUX_DEFAULT, lalu tambahkan parameter crashkernel dalam format berikut: crashkernel=memory_to_reserve. Misalnya, untuk mencadangkan 160MB, modifikasi file grub sebagai berikut:

    GRUB_CMDLINE_LINUX_DEFAULT="crashkernel=160M console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0" GRUB_TIMEOUT=0 GRUB_DISABLE_RECOVERY="true"
  4. Simpan perubahan Anda dan tutup file grub.

  5. Membangun kembali file GRUB2 konfigurasi.

    [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  6. Pada instance berdasarkan Intel dan AMD prosesor, send-diagnostic-interrupt perintah mengirimkan interrupt (NMI) non-maskable yang tidak diketahui ke instance. Anda harus mengonfigurasi kernel agar mogok saat menerima yang tidak diketahuiNMI. Buka file /etc/sysctl.conf dengan menggunakan editor teks pilihan Anda dan tambahkan berikut ini.

    kernel.unknown_nmi_panic=1
  7. Boot ulang dan terhubung kembali ke instans Anda.

  8. Verifikasi bahwa kernel telah dilakukan boot dengan parameter crashkernel yang benar.

    $ grep crashkernel /proc/cmdline

    Contoh output berikut mengindikasikan konfigurasi yang berhasil.

    BOOT_IMAGE=/boot/vmlinuz-4.14.128-112.105.amzn2.x86_64 root=UUID=a1e1011e-e38f-408e-878b-fed395b47ad6 ro crashkernel=160M console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0
  9. Verifikasi bahwa layanan kdump berjalan.

    [ec2-user ~]$ systemctl status kdump.service

    Contoh output berikut menunjukkan hasil jika layanan kdump berjalan.

    kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled) Active: active (exited) since Fri 2019-05-24 23:29:13 UTC; 22s ago Process: 2503 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS) Main PID: 2503 (code=exited, status=0/SUCCESS)
catatan

Secara default, file dump crash disimpan ke /var/crash/. Untuk mengubah lokasi, memodifikasi file /etc/kdump.conf menggunakan editor teks pilihan Anda.

Untuk mengonfigurasi Amazon Linux agar membuat crash dump saat kepanikan kernel terjadi
  1. Terhubung ke instans Anda.

  2. Instal kexec dan kdump.

    [ec2-user ~]$ sudo yum install kexec-tools -y
  3. Konfigurasikan kernel untuk mencadangkan jumlah memori yang sesuai untuk kernel sekunder. Jumlah memori yang disimpan bergantung pada total memori yang tersedia pada instans Anda.

    $ sudo grubby --args="crashkernel=memory_to_reserve" --update-kernel=ALL

    Misalnya, untuk mencadangkan 160MB saat kernel mengalami crash, gunakan perintah berikut.

    $ sudo grubby --args="crashkernel=160M" --update-kernel=ALL
  4. Pada instance berdasarkan Intel dan AMD prosesor, send-diagnostic-interrupt perintah mengirimkan interrupt (NMI) non-maskable yang tidak diketahui ke instance. Anda harus mengonfigurasi kernel agar mogok saat menerima yang tidak diketahuiNMI. Buka file /etc/sysctl.conf dengan menggunakan editor teks pilihan Anda dan tambahkan berikut ini.

    kernel.unknown_nmi_panic=1
  5. Boot ulang dan terhubung kembali ke instans Anda.

  6. Verifikasi bahwa kernel telah dilakukan boot dengan parameter crashkernel yang benar.

    $ grep crashkernel /proc/cmdline

    Contoh output berikut mengindikasikan konfigurasi yang berhasil.

    root=LABEL=/ console=tty1 console=ttyS0 selinux=0 nvme_core.io_timeout=4294967295 LANG=en_US.UTF-8 KEYTABLE=us crashkernel=160M
  7. Verifikasi bahwa layanan kdump berjalan.

    [ec2-user ~]$ sudo service kdump status

    Jika layanan sedang berjalan, perintah tersebut akan mengembalikan respons Kdump is operational.

catatan

Secara default, file dump crash disimpan ke /var/crash/. Untuk mengubah lokasi, modifikasi file /etc/kdump.conf menggunakan editor teks pilihan Anda.

Untuk mengkonfigurasi SUSE Linux Enterprise, Ubuntu, atau Red Hat Enterprise Linux

Pada instance berdasarkan Intel dan AMD prosesor, send-diagnostic-interrupt perintah mengirimkan interrupt (NMI) non-maskable yang tidak diketahui ke instance. Anda harus mengonfigurasi kernel agar macet ketika menerima yang tidak diketahui NMI dengan menyesuaikan file konfigurasi untuk sistem operasi Anda. Untuk informasi tentang cara mengonfigurasi kernel agar macet, lihat dokumentasi untuk sistem operasi Anda:

Untuk mengonfigurasi Windows agar menghasilkan dump memori saat terjadi kesalahan penghentian
  1. Terhubung ke instans Anda.

  2. Buka Panel Kontrol dan pilih Sistem, Pengaturan sistem lanjutan.

  3. Dalam kotak dialog Properti Sistem, pilih tab Lanjutan.

  4. Di bagian Startup and Pemulihan, pilih Pengaturan...

  5. Di bagian Kegagalan sistem, konfigurasikan pengaturan sesuai kebutuhan, lalu pilih OKE.

Untuk informasi selengkapnya tentang mengonfigurasi kesalahan penghentian Windows, lihat Gambaran umum opsi file dump memori untuk Windows.

Kirimkan interupsi diagnostik

Setelah menyelesaikan perubahan konfigurasi yang diperlukan, Anda dapat mengirim interupsi diagnostik ke instans Anda menggunakan AWS CLI atau Amazon EC2API.

AWS CLI
Untuk mengirimkan interupsi diagnostik ke instans Anda (AWS CLI)

Gunakan send-diagnostic-interruptperintah dan tentukan ID instance.

aws ec2 send-diagnostic-interrupt --instance-id i-1234567890abcdef0
PowerShell
Untuk mengirimkan interupsi diagnostik ke instans Anda (AWS Tools for Windows PowerShell)

Gunakan Send-EC2DiagnosticInterruptcmdlt dan tentukan ID instance.

PS C:\> Send-EC2DiagnosticInterrupt -InstanceId i-1234567890abcdef0