

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 EC2 yang tidak dapat dijangkau
<a name="diagnostic-interrupt"></a>

**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.

**Topics**
+ [Tipe instans yang didukung](#diagnostic-interrupt-instances)
+ [Prasyarat](#diagnostic-interrupt-prereqs)
+ [Kirimkan interupsi diagnostik](#diagnostic-interrupt-use)

## Tipe instans yang didukung
<a name="diagnostic-interrupt-instances"></a>

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](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html) dan AWS Graviton.](https://aws.amazon.com/ec2/graviton/)

## Prasyarat
<a name="diagnostic-interrupt-prereqs"></a>

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.

### Instans Linux
<a name="diagnostic-interrupt-prereqs-linux"></a>

**Untuk mengonfigurasi Amazon Linux 2 atau Amazon Linux 2023 untuk menghasilkan crash dump saat terjadi kepanikan kernel**

1. Menghubungkan ke instans Anda.

1. Instal **kexec** dan **kdump**.

   ```
   [ec2-user ~]$ sudo yum install kexec-tools -y
   ```

1. 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 `256MB`, modifikasi file `grub` sebagai berikut:

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="crashkernel=256M 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"
   ```

1. Simpan perubahan Anda dan tutup file `grub`.

1. Membangun kembali file GRUB2 konfigurasi.

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Pada instans yang berbasis prosesor Intel dan AMD, perintah `send-diagnostic-interrupt` mengirimkan *non-maskable interrupt* (NMI) yang tidak dikenal ke instans. Anda harus mengonfigurasi kernel agar mengalami crash saat menerima NMI yang tidak dikenal. Buka file `/etc/sysctl.conf` dengan menggunakan editor teks pilihan Anda dan tambahkan berikut ini.

   ```
   kernel.unknown_nmi_panic=1
   ```

1. Boot ulang dan terhubung kembali ke instans Anda.

1. 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=256M console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0
   ```

1. 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, modifikasi file `/etc/kdump.conf` menggunakan editor teks pilihan Anda.

**Untuk mengonfigurasi SUSE Linux Enterprise, Ubuntu, atau Red Hat Enterprise Linux**  
Pada instans yang berbasis prosesor Intel dan AMD, perintah `send-diagnostic-interrupt` mengirimkan *non-maskable interrupt* (NMI) yang tidak dikenal ke instans. Anda harus mengonfigurasi kernel agar macet ketika menerima NMI yang tidak dikenal dengan menyesuaikan file konfigurasi untuk sistem operasi Anda. Untuk informasi tentang cara mengonfigurasi kernel agar crash, lihat dokumentasi untuk sistem operasi Anda:
+ [SUSE Linux Enterprise](https://www.suse.com/support/kb/doc/?id=3374462)
+ [Ubuntu](https://ubuntu.com/server/docs/kernel-crash-dump)
+ [ Red Hat Enterprise Linux (RHEL)](https://access.redhat.com/solutions/6038)

### Instans Windows
<a name="diagnostic-interrupt-prereqs-windows"></a>

**Untuk mengonfigurasi Windows agar menghasilkan dump memori saat terjadi kesalahan penghentian**

1. Terhubung ke instans Anda.

1. Buka **Panel Kontrol** dan pilih **Sistem**, **Pengaturan sistem lanjutan**.

1. Dalam kotak dialog **Properti Sistem**, pilih tab **Lanjutan**.

1. Di bagian **Startup and Pemulihan**, pilih **Pengaturan...**

1. 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](https://support.microsoft.com/en-us/help/254649/overview-of-memory-dump-file-options-for-windows).

## Kirimkan interupsi diagnostik
<a name="diagnostic-interrupt-use"></a>

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

------
#### [ AWS CLI ]

**Untuk mengirim interupsi diagnostik ke instans Anda**  
Gunakan perintah [send-diagnostic-interrupt](https://docs.aws.amazon.com/cli/latest/reference/ec2/send-diagnostic-interrupt.html).

```
aws ec2 send-diagnostic-interrupt --instance-id i-1234567890abcdef0
```

------
#### [ PowerShell ]

**Untuk mengirim interupsi diagnostik ke instans Anda**  
Gunakan [Send-EC2DiagnosticInterrupt](https://docs.aws.amazon.com/powershell/latest/reference/items/Send-EC2DiagnosticInterrupt.html)cmdlet.

```
Send-EC2DiagnosticInterrupt -InstanceId i-1234567890abcdef0
```

------