Anda sedang melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Video
Video | Deskripsi |
---|---|
Error Server Internal 500 - disebabkan oleh backend | Mendemonstrasikan 500 Internal Server Error real-time yang disebabkan oleh server backend beserta langkah-langkah untuk memecahkan masalah dan mengatasi error. |
Gejala
Aplikasi klien mendapatkan kode status HTTP 500
dengan pesan
Internal Server Error
sebagai respons untuk panggilan API.
Kode status HTTP 500
adalah respons error generik. Ini berarti server mengalami kondisi tidak terduga yang mencegahnya memenuhi permintaan. Error ini biasanya ditampilkan oleh server ketika tidak ada kode error lain yang cocok.
Pesan error
Aplikasi klien mendapatkan kode respons berikut:
HTTP/1.1 500 Internal Server Error
Selain itu, Anda mungkin melihat pesan error yang mirip dengan yang ditampilkan di bawah ini:
Contoh #1
Contoh Respons Server Backend #1
{"errorMessage":"Sorry either your e-mail or password didn't match.", "errorParameters":"{}", "errorCode":"500", "errorKey":"INVALID_EMAILPASSWORD"}
Contoh #2
Contoh Respons Server Backend #2
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
Kemungkinan penyebab
500 Internal Server Error
dapat ditampilkan oleh server backend karena sejumlah penyebab. Playbook ini menjelaskan cara memecahkan masalah menggunakan langkah-langkah umum dan mengatasi error ini apa pun penyebabnya.
Kemungkinan penyebab masalah ini adalah sebagai berikut:
Penyebab | Deskripsi | Petunjuk pemecahan masalah yang berlaku untuk |
---|---|---|
Error pada server backend | Server backend mungkin gagal karena beberapa alasan. | Pengguna Cloud Pribadi dan Publik Edge |
Langkah-langkah diagnosis umum
Gunakan salah satu alat/teknik berikut untuk mendiagnosis error ini:
Pemantauan API
Prosedur #1: Menggunakan Pemantauan API
Untuk mendiagnosis error menggunakan API Monitoring:
- Login ke UI Apigee Edge sebagai pengguna dengan peran yang sesuai.
Beralihlah ke organisasi tempat Anda ingin menyelidiki masalah.
- Buka halaman Analyze > API Monitoring > Menyelidiki.
- Pilih jangka waktu spesifik saat Anda melihat error.
Tempatkan Kode Kesalahan terhadap Waktu.
Pilih sel yang memiliki kode kesalahan
messaging.adaptors.http.flow.ErrorResponseCode
seperti yang ditunjukkan di bawah ini:Informasi tentang kode kesalahan
messaging.adaptors.http.flow.ErrorResponseCode
ditampilkan seperti yang ditunjukkan di bawah ini:Klik Lihat log dan luaskan baris untuk permintaan yang gagal.
- Dari jendela Logs, perhatikan detail berikut:
- Minta ID Pesan
- Kode Status:
500
- Sumber Kesalahan:
target
- Kode Kesalahan:
messaging.adaptors.http.flow.ErrorResponseCode
Rekaman aktivitas
Prosedur #2: Menggunakan alat Trace
Untuk mendiagnosis error menggunakan alat Trace:
- Aktifkan sesi perekaman aktivitas dan
- Tunggu hingga error
500 Internal Server Error
dengan kode errormessaging.adaptors.http.flow.ErrorResponseCode
terjadi, atau - Jika Anda dapat merekonstruksi masalah, buat panggilan API untuk mereproduksi masalah
500 Internal Server Error
- Tunggu hingga error
Pastikan Show all FlowInfos diaktifkan:
- Pilih salah satu permintaan yang gagal dan periksa rekaman aktivitas.
- Jelajahi berbagai fase rekaman aktivitas dan temukan lokasi terjadinya kegagalan.
Anda akan menemukan error biasanya dalam flow setelah fase Respons diterima dari server target seperti yang ditunjukkan di bawah ini:
- Buka Fase AX (Data Analytics Dicatat) di trace, lalu klik Fase tersebut.
Scroll ke bawah ke bagian Phase Details Response Headers, lalu tentukan nilai X-Apigee-fault-code dan X-Apigee-fault-source, serta X-Apigee-Message-ID seperti yang ditunjukkan di bawah ini:
- Perhatikan nilai X-Apigee-fault-code, X-Apigee-fault-source, dan X-Apigee-Message-ID:
Header respons | Nilai |
---|---|
X-Apigee-fault-code | messaging.adaptors.http.flow.ErrorResponseCode |
X-Apigee-fault-source | target |
X-Apigee-Message-ID | MESSAGE_ID |
NGINX
Prosedur #3: Menggunakan log akses NGINX
Untuk mendiagnosis error menggunakan log akses NGINX:
- Jika Anda adalah pengguna Private Cloud, Anda dapat menggunakan log akses NGINX untuk menentukan informasi penting tentang HTTP
500 Internal Server Error
. Periksa log akses NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Telusuri untuk melihat apakah ada error
500
dengan kode errormessaging.adaptors.http.flow.ErrorResponseCode
selama durasi tertentu (jika masalah terjadi sebelumnya) atau apakah ada permintaan yang masih gagal dengan500
. Jika Anda menemukan error
500
dengan X-Apigee-fault-code yang cocok dengan nilaimessaging.adaptors.http.flow.ErrorResponseCode
, tentukan nilai dari X-Apigee-fault-source.Contoh error 500 dari log akses NGINX:
( lihat gambar yang lebih besar)
Contoh entri dari log akses NGINX di atas memiliki nilai berikut untuk X-Apigee-fault-code dan X-Apigee-fault-source:
Header Nilai X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
X-Apigee-fault-source target
Penyebab: Error pada server backend
Diagnosis
500 Internal Server Error
yang direspons oleh server backend dapat disebabkan oleh sejumlah alasan. Anda perlu mendiagnosis setiap situasi secara terpisah.
- Tentukan Kode Kesalahan, Sumber Kesalahan untuk error yang diamati menggunakan Pemantauan API, Alat Pelacakan, atau log akses NGINX seperti yang dijelaskan dalam Langkah-langkah diagnosis umum.
- Jika Sumber Kesalahan adalah
target
dan Kode Kesalahan adalahmessaging.adaptors.http.flow.ErrorResponseCode
, berarti error tersebut ditampilkan oleh server backend. - Anda dapat menggunakan salah satu langkah berikut untuk mendiagnosis penyebab masalah:
Rekaman aktivitas
Menggunakan Trace:
Jika Anda mengalami kegagalan sesi Trace, lakukan langkah-langkah berikut:
- Di Trace, pilih permintaan API yang gagal dengan
500 Internal Server Error
. Pilih fase Response received from target server dari permintaan API yang gagal seperti ditunjukkan dalam gambar di bawah:
Scroll ke bawah ke bagian Phase Details,lalu periksa Response Content yang berisi respons dari server backend.
Contoh Konten Respons:
<Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <Body> <Error> <code>500</code> <message xml:lang="en-US">Not Authorised(e4138fa0-ec57).</message> </Error> </Body> </Envelope>
Dalam respons di atas, perhatikan bahwa pesan error dari server backend adalah Not Authorised. Hal ini menunjukkan bahwa pengguna mungkin telah meneruskan kredensial yang tidak valid dan itulah sebabnya mereka mengalami error ini.
Panggil server backend
Melakukan panggilan langsung ke server backend:
Anda dapat melakukan panggilan langsung ke server backend dan:
- Lakukan validasi apakah Anda mendapatkan respons
500 Internal Server Error
yang sama seperti yang diterima saat permintaan dibuat melalui Apigee Edge - Memeriksa pesan error (respons) yang diterima dari server backend
Lakukan langkah-langkah berikut untuk melakukan panggilan langsung ke server backend:
- Pastikan Anda memiliki semua header, parameter kueri, dan kredensial yang diperlukan yang harus diteruskan ke server backend sebagai bagian dari permintaan.
- Jika layanan backend dapat diakses secara publik, Anda dapat menggunakan perintah
curl
, Postman, atau REST Client lainnya dan memanggil API server backend secara langsung. Jika server backend hanya dapat diakses dari Message Processors, Anda dapat menggunakan perintah
curl
, Postman, atau REST Client lainnya dan memanggil API server backend langsung dari Pemroses Pesan.- Validasi apakah layanan backend memang menampilkan
500 Internal Server Error
dan periksa pesan error (respons) yang ditampilkan oleh server backend, lalu tentukan penyebab error tersebut.
Log server backend
Menggunakan log server backend
- Tinjau log server backend dan coba dapatkan detail selengkapnya tentang error dan penyebabnya.
- Jika memungkinkan, aktifkan mode debug pada server backend untuk mendapatkan detail selengkapnya tentang error dan penyebabnya.
- Di Trace, pilih permintaan API yang gagal dengan
Periksa apakah Anda menggunakan perantaian proxy di endpoint target tertentu dari Proxy API yang gagal; yaitu, jika endpoint server/target target memanggil proxy lain di Apigee Edge. Untuk menentukan hal ini:
Jika Anda memiliki rekaman aktivitas untuk permintaan yang gagal, buka fase Request sent to target server dan klik Show Curl.
- Jendela Curl for Request Sent to Target Server akan terbuka dan Anda dapat menentukan alias host server target.
- Tinjau endpoint target Proxy API Anda dan periksa apakah URL server backend atau nama host di server target mengarah ke Proxy lain atau server backend Anda sendiri.
- Jika alias host server target menunjuk ke alias host virtual, berarti alias tersebut adalah rantai proxy. Dalam hal ini, Anda perlu mengulangi semua langkah di atas untuk
proxy berantai sampai Anda menentukan penyebab
500 Internal Server Error
. Dalam kasus ini,500 Internal Server Error
mungkin juga terjadi di proxy berantai lain di tahap lain yang dapat didiagnosis dan diatasi menggunakan petunjuk yang diberikan dalam playbook ini atau di playbook 500 Internal Server Error. - Jika alias host server target mengarah ke server backend Anda, buka Resolution.
Resolusi
Jika dipastikan bahwa error 500
berasal dari server backend, Anda harus bekerja sama dengan tim server backend untuk memperbaiki masalah tersebut sebagaimana mestinya.
Pada contoh yang dibahas di atas, Anda mungkin harus meminta pengguna meneruskan kredensial yang valid untuk memperbaiki masalah ini.
Poin-poin penting yang perlu diperhatikan
- Pesan error sebenarnya yang ditampilkan oleh server backend untuk
500 Internal Server Error
hanya dapat dilihat jika Anda telah merekam sesi perekaman aktivitas untuk permintaan yang gagal. - Karena alasan keamanan, respons server backend tidak akan dicatat dalam Pemantauan API, Log Akses NGINX, atau log Pemroses Pesan.
- Anda dapat meninjau log server backend atau mengaktifkan mode debug pada backend untuk mendapatkan detail
selengkapnya tentang
500 Internal Server Error
dan/atau melihat pesan error yang ditampilkan oleh server backend.
Harus mengumpulkan informasi diagnostik
Jika masalah berlanjut bahkan setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut dan hubungi Dukungan Apigee Edge.
Jika Anda adalah pengguna Cloud Publik, berikan informasi berikut:
- Nama organisasi
- Nama lingkungan
- Nama Proxy API
- Selesaikan perintah
curl
untuk mereproduksi error500
- File detail migrasi yang berisi permintaan dengan
500 Internal Server Error
- Jika error
500
tidak terjadi saat ini, maka berikan jangka waktu dengan informasi zona waktu saat error500
terjadi di masa lalu.
Jika Anda adalah pengguna Private Cloud, berikan informasi berikut:
- Pesan error lengkap yang diamati untuk permintaan yang gagal
- Organisasi, nama lingkungan, dan nama proxy API yang Anda amati error
500
-nya - Paket proxy API
- File detail migrasi yang berisi permintaan dengan
500 Internal Server Error
- Log akses NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Tempat: ORG, ENV, dan PORT# diganti dengan nilai sebenarnya.
- Log sistem Pemroses Pesan
/opt/apigee/var/log/edge-message-processor/logs/system.log
- Jangka waktu dengan informasi zona waktu saat error
500
terjadi.