Alat diagnostik dan log

Anda melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Topik ini membahas alat jaringan, alat JVM, dan log diagnostik yang dapat Anda gunakan untuk memecahkan masalah terkait jaringan dan JVM di Apigee Edge.

Utilitas TCP/IP packet sniffer (tcpdump)

Alat tcpdump adalah alat packet sniffer command line yang memungkinkan Anda menangkap atau memfilter paket TCP/IP yang diterima atau ditransfer melalui jaringan. Alat ini tersedia di sistem operasi berbasis Linux/Unix. Anda dapat menginstal utilitas ini menggunakan yum sebagai berikut:

yum install tcpdump

Alat tcpdump berguna untuk memecahkan masalah terkait jaringan atau SSL. Contoh:

  • Error 502 Bad Gateway (disebabkan oleh EOF Exception)
  • Error 503 Layanan Tidak Tersedia
  • Kegagalan Handshake SSL

Untuk memecahkan masalah ini, Anda harus menentukan terlebih dahulu pasangan komponen yang menyebabkan error. Dalam kasus Edge, pasangan komponen tersebut dapat berupa salah satu pasangan berikut:

  • Aplikasi klien dan Router
  • Router dan Message Processor
  • Message Processor dan server Backend

Setelah mengidentifikasi pasangan komponen yang bermasalah, Anda dapat menangkap paket jaringan menggunakan tcpdump pada satu atau kedua komponen ini.

Menangkap paket yang dikirim ke/diterima dari host tertentu menggunakan tcpdump

Gunakan perintah tcpdump berikut untuk menangkap semua paket yang dikirim ke atau diterima dari a host (alamat IP) tertentu dan menyimpan informasi dalam file yang ditentukan:

tcpdump -i any -s 0 host <IP address> -w <File name>

Dengan:

Parameter Deskripsi
-i (interface) menentukan antarmuka tempat paket harus ditangkap. Menggunakan nilai “any” memungkinkan Anda menangkap paket dari semua antarmuka.
-s (snarf/snaplen) menentukan jumlah setiap paket yang akan ditangkap. Menggunakan nilai 0 (nol) memungkinkan Anda menangkap seluruh paket.
IP address adalah alamat IP host yang paketnya ingin kita tangkap
Nama File adalah nama file yang harus ditulis oleh tcpdump

Contoh

Misalnya, Anda ingin menangkap paket antara Message Processor dan Server Backend:

  1. Login ke mesin Message Processor.
  2. Tentukan alamat IP Server Backend (anggap alamat IP-nya adalah 22.22.22.22) yang paketnya ingin kita tangkap.

Gunakan perintah berikut untuk menangkap paket jaringan untuk host dengan alamat IP tertentu:

tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap

Jika server backend di-resolve ke beberapa alamat IP, gunakan nama host server backend dalam perintah tcpdump seperti yang ditunjukkan di bawah:

tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap

Jika ada beberapa server backend dengan alamat IP yang berbeda (22.22.22.22, 33.33.33.33 dan 44.44.44.44), gunakan perintah tcpdump di bawah:

tcpdump -i any -s 0 host 22.22.22.22 or host 33.33.33.33 or host 44.44.44.44 -w rmp-123.pcap

Menganalisis tcpdump

Anda dapat melihat atau menganalisis tcpdump menggunakan perintah tcpdump atau alat berbasis GUI Wireshark.

Referensi

Heap dump

Heap dump adalah snapshot memori proses Java. Heap dump berisi informasi tentang objek dan class Java dalam heap pada saat heap dump dikumpulkan. Heap dump biasanya berukuran cukup besar, mulai dari beberapa ratus MB hingga beberapa GB.

Heap dump sangat berguna jika proses Java seperti Message Processor menunjukkan:

  • Penggunaan Memori Tinggi
  • OutofMemoryError

Membuat heap dump untuk proses Java

Java menyediakan utilitas yang disebut jmap, yang memungkinkan Anda membuat statistik memori atau heap dump dari proses Java yang sedang berjalan.

Gunakan perintah jmap berikut untuk membuat heap dump dari proses Java:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>

Dengan:

Parameter Deskripsi
JAVA_HOME Adalah direktori penginstalan Java
filename Adalah nama file tempat heap dump akan ditulis
pid Adalah ID proses aplikasi Java yang heap dump-nya harus ditangkap

Contoh

Misalnya, Message Processor mp-east memiliki penggunaan memori yang tinggi atau menampilkan Error OutOfMemory. Tentukan ID proses Message Processor menggunakan perintah ps di sistem operasi Unix. Misalnya, ID prosesnya adalah 24569.

Jalankan utilitas jmap sebagai berikut untuk membuat heap dump:

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569

Menganalisis Heap Dump

Heap Dump dapat dianalisis menggunakan Eclipse MAT (Memory Analyzer Tool) untuk menentukan potensi kebocoran memori atau objek Java mana yang menyebabkan penggunaan memori yang tinggi.

Referensi

Cara mengumpulkan heap dump

Utilitas jmap

Halaman manual jmap

Alat Memory Analyzer (MAT)


Thread dump

Thread dump adalah snapshot status semua thread dari proses Java yang sedang berjalan. Status setiap thread ditampilkan dengan konten stack-nya, yang disebut sebagai stack trace. Beberapa thread akan menjadi bagian dari aplikasi Java yang sedang berjalan, sedangkan thread lainnya akan menjadi thread internal JVM.

Thread dump menampilkan informasi tentang setiap aktivitas thread aplikasi. Informasi ini dapat sangat berguna untuk:

  • Mendiagnosis masalah seperti lonjakan CPU, waktu respons yang lambat, atau aplikasi Java yang tidak responsif
  • Mengoptimalkan performa aplikasi dan JVM

Membuat Thread Dump

Thread dump untuk proses Java dapat dibuat menggunakan utilitas jstack seperti yang ditunjukkan di bawah:

sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>

Dengan:

Parameter Deskripsi
JAVA_HOME Adalah direktori penginstalan Java.
pid Adalah ID proses aplikasi Java yang thread dump-nya ingin Anda tangkap.
filename Adalah nama file tempat thread dump akan ditulis.

Contoh

Untuk membuat thread dump untuk ID proses 37320 di Message Processor mp-east, gunakan perintah berikut:

sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt

Sesuai contoh di atas, thread dump proses akan disimpan ke file /opt/apigee/edge-message-processor/mp-east-threadDump.txt.

Menganalisis Thread Dump

Anda dapat melihat thread dump di editor teks apa pun seperti vi (Linux), notepad (Windows). Lihat Thread Dump untuk mengetahui detail tentang berbagai bagian Thread Dump dan cara menafsirkan informasi.

Referensi