Alat diagnostik dan log

Anda sedang 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 sniffer TCP/IP (tcpdump)

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

yum install tcpdump

Alat {i>tcpdump<i} berguna untuk memecahkan masalah terkait jaringan atau SSL. Contoh:

  • Error Gateway 502 buruk (disebabkan karena Pengecualian EOF)
  • Error 503 Layanan Tidak Tersedia
  • Kegagalan Handshake SSL

Untuk memecahkan salah satu masalah ini, pertama-tama Anda harus menentukan pasangan komponen tempat error terjadi. Dalam kasus Edge, pilihan tersebut dapat berupa salah satu pasangan berikut:

  • Aplikasi klien dan Router
  • Router dan Pemroses Pesan
  • Pemroses Pesan dan Server Backend

Setelah mengidentifikasi pasangan komponen yang bermasalah, Anda dapat merekam paket jaringan menggunakan tcpdump pada salah satu atau kedua komponen tersebut.

Menangkap paket yang dikirim ke/diterima dari host tertentu menggunakan {i>tcpdump<i}

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

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

Dengan keterangan:

Parameter Deskripsi
-i (antarmuka) menentukan antarmuka tempat paket harus diambil. Penggunaan nilai "any" memungkinkan penangkapan paket dari semua antarmuka.
-s (snarf/snaplen) menentukan jumlah setiap paket yang akan diambil. Menggunakan nilai 0 (nol) memungkinkan Anda menangkap seluruh paket.
IP address adalah alamat ip {i>host<i} di mana kita ingin menangkap paketnya
Nama File adalah nama file tempat {i>tcpdump<i} harus ditulis

Contoh

Misalkan Anda ingin menangkap paket antara Pemroses Pesan dan Server Backend:

  1. Login ke mesin Pemroses Pesan.
  2. Tentukan alamat IP Server Backend (anggaplah 22.22.22.22) yang paketnya ingin kita ambil.

Gunakan perintah berikut guna merekam 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 me-resolve ke beberapa alamat IP, gunakan nama host server backend dalam perintah tcpdump seperti yang ditunjukkan di bawah ini:

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 ini:

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 {i>tcpdump<i}

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

Referensi

Heap dump

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

Heap dump sangat berguna ketika proses Java seperti Message Processor menampilkan:

  • Penggunaan Memori Tinggi
  • OutofMemoryError

Menghasilkan Heap dump untuk proses Java

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

Gunakan perintah jmap berikut untuk membuat heap dump proses Java:

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

Dengan keterangan:

Parameter Deskripsi
JAVA_HOME Adalah direktori penginstalan Java
filename Adalah nama file yang akan digunakan untuk menulis heap dump
pid Apakah ID proses aplikasi Java yang head dumpnya harus diambil

Contoh

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

Jalankan utilitas jmap sebagai berikut untuk menghasilkan 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 tinggi.

Referensi

Cara mengumpulkan heap dump

utilitas jmap

Halaman utama jmap

Alat Penganalisis Memori (MAT)


Thread dump

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

Thread dump mengungkap informasi tentang setiap aktivitas thread aplikasi. Informasi ini bisa sangat berguna untuk:

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

Menghasilkan Dump Thread

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

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

Dengan keterangan:

Parameter Deskripsi
JAVA_HOME Merupakan direktori penginstalan Java.
pid Merupakan ID proses aplikasi Java yang thread dumpnya ingin Anda tangkap.
filename Merupakan nama file tempat thread dump akan dituliskan.

Contoh

Untuk menghasilkan thread dump bagi ID proses 37320 pada 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 Dump Thread

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

Referensi