Anda melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Video
| Video | Deskripsi |
|---|---|
| 500 Internal Server Error - disebabkan oleh backend | Menunjukkan 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 umum. Artinya, server
mengalami kondisi yang tidak terduga yang mencegahnya memenuhi permintaan. Error ini biasanya ditampilkan oleh server jika tidak ada kode error lain yang sesuai.
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:
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
The 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
, terlepas dari penyebabnya.
Kemungkinan penyebab masalah ini adalah sebagai berikut:
| Penyebab | Deskripsi | Petunjuk pemecahan masalah yang berlaku untuk |
|---|---|---|
| Error di server backend | Server backend mungkin gagal karena alasan tertentu. | Pengguna Edge Private dan Public Cloud |
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 Pemantauan API:
- Login ke UI Apigee Edge sebagai pengguna dengan peran yang sesuai.
Beralih ke organisasi tempat Anda ingin menyelidiki masalah.
- Buka halaman Analyze > API Monitoring > Investigate.
- Pilih jangka waktu tertentu saat Anda mengamati error.
Buat grafik Fault Code terhadap Time.
Pilih sel yang memiliki kode kesalahan
messaging.adaptors.http.flow.ErrorResponseCodeseperti yang ditunjukkan di bawah:( lihat gambar yang lebih besar)

Informasi tentang kode kesalahan
messaging.adaptors.http.flow.ErrorResponseCodeditampilkan seperti yang ditunjukkan di bawah:( lihat gambar yang lebih besar)

Klik View logs dan luaskan baris untuk permintaan yang gagal.
( lihat gambar yang lebih besar)
- Dari jendela Logs, catat detail berikut:
- Request Message ID
- Status Code:
500 - Fault Source:
target - Fault Code:
messaging.adaptors.http.flow.ErrorResponseCode
Trace
Prosedur #2: Menggunakan alat Trace
Untuk mendiagnosis error menggunakan alat Trace:
- Aktifkan sesi pelacakan dan
- Tunggu hingga error
500 Internal Server Errordengan kode errormessaging.adaptors.http.flow.ErrorResponseCodeterjadi, atau - Jika Anda dapat mereproduksi masalah, lakukan 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 pelacakannya.
- Buka berbagai fase pelacakan dan temukan tempat terjadinya kegagalan.
Anda biasanya akan menemukan error dalam alur setelah fase Response received from target server seperti yang ditunjukkan di bawah:
( lihat gambar yang lebih besar)

- Buka Fase AX (Data Analytics Tercatat) dalam pelacakan dan klik.
Scroll ke bawah ke bagian Phase Details Response Headers dan tentukan nilai X-Apigee-fault-code dan X-Apigee-fault-source, serta X-Apigee-Message-ID seperti yang ditunjukkan di bawah:
( lihat gambar yang lebih besar)

- Catat 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 utama tentang HTTP
500 Internal Server Error. Periksa log akses NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log- Cari untuk melihat apakah ada
500error dengan kode errormessaging.adaptors.http.flow.ErrorResponseCodeselama durasi tertentu (jika masalah terjadi di masa lalu) atau apakah ada permintaan yang masih gagal dengan500. Jika Anda menemukan error
500dengan X-Apigee-fault-code yang cocok dengan nilaimessaging.adaptors.http.flow.ErrorResponseCode, maka tentukan nilai X-Apigee-fault-source.Contoh error 500 dari log akses NGINX:
( lihat gambar yang lebih besar)
Entri contoh di atas dari log akses NGINX memiliki nilai berikut untuk X-Apigee-fault-code dan X-Apigee-fault-source:
Header Nilai X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCodeX-Apigee-fault-source target
Penyebab: Error di server backend
Diagnosis
500 Internal Server Error yang direspons oleh server backend dapat disebabkan oleh sejumlah alasan. Anda harus mendiagnosis setiap situasi secara independen.
- Tentukan Fault Code, Fault Source untuk error yang diamati menggunakan Pemantauan API, alat Trace, atau log akses NGINX seperti yang dijelaskan di Langkah-langkah diagnosis umum.
- Jika Fault Source adalah
targetdan Fault Code adalahmessaging.adaptors.http.flow.ErrorResponseCode, hal ini menunjukkan bahwa error ditampilkan oleh server backend. - Anda dapat menggunakan salah satu langkah berikut untuk mendiagnosis penyebab masalah:
Trace
Menggunakan Trace:
Jika Anda memiliki sesi Trace untuk kegagalan, 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 yang ditunjukkan pada gambar di bawah:
( lihat gambar yang lebih besar)
Scroll ke bawah ke bagian Phase Details dan 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 mendapatkan error ini.
Panggil server backend
Melakukan panggilan langsung ke server backend:
Anda dapat melakukan panggilan langsung ke server backend dan:
- Memvalidasi apakah Anda mendapatkan respons
500 Internal Server Erroryang 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 Klien REST lainnya dan memanggil API server backend secara langsung. Jika server backend hanya dapat diakses dari Message Processor, Anda dapat menggunakan perintah
curl, Postman, atau Klien REST lainnya dan memanggil API server backend secara langsung dari Message Processor.- Validasi apakah layanan backend memang menampilkan
500 Internal Server Errordan periksa pesan error (respons) yang ditampilkan oleh server backend dan tentukan penyebab error ini.
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 di server backend untuk mendapatkan detail selengkapnya tentang error dan penyebabnya.
- Di Trace, pilih permintaan API yang gagal dengan
Periksa apakah Anda menggunakan proxy chaining di endpoint target tertentu dari API Proxy yang gagal; yaitu, jika server target/endpoint target memanggil proxy lain di Apigee Edge. Untuk menentukannya:
Jika Anda memiliki pelacakan 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 API Proxy 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 mengarah ke alias host virtual, berarti itu
adalah proxy chaining. Dalam hal ini, Anda harus mengulangi semua langkah di atas untuk
proxy yang dirantai hingga Anda menentukan penyebab sebenarnya dari
500 Internal Server Error. Dalam kasus ini,500 Internal Server Errormungkin terjadi di proxy rantai lainnya pada tahap lain juga yang dapat didiagnosis dan diselesaikan menggunakan petunjuk yang diberikan dalam playbook ini atau di 500 Internal Server Error playbook. - Jika alias host server target mengarah ke server backend Anda, buka Resolusi.
Resolusi
Jika dipastikan bahwa error 500 berasal dari server backend, maka
bekerjalah dengan tim server backend Anda untuk memperbaiki masalah ini dengan tepat.
Dalam contoh yang dibahas di atas, Anda mungkin harus meminta pengguna untuk meneruskan kredensial yang valid untuk memperbaiki masalah ini.
Poin penting yang perlu diperhatikan
- Pesan error sebenarnya yang ditampilkan oleh server backend untuk
500 Internal Server Errorhanya dapat dilihat jika Anda telah merekam sesi pelacakan untuk permintaan yang gagal. - Respons server backend tidak akan dicatat dalam Pemantauan API, Log Akses NGINX, atau Message Processor logs karena alasan keamanan.
- Anda dapat meninjau log server backend atau mengaktifkan mode debug di backend untuk mendapatkan detail selengkapnya tentang
500 Internal Server Errordan/atau melihat pesan error yang ditampilkan oleh server backend.
Informasi diagnostik yang harus dikumpulkan
Jika masalah terus berlanjut meskipun setelah mengikuti petunjuk di atas, kumpulkan informasi diagnostik berikut dan hubungi Dukungan Apigee Edge.
Jika Anda adalah pengguna Public Cloud, berikan informasi berikut:
- Nama organisasi
- Nama lingkungan
- Nama API Proxy
- Perintah
curllengkap untuk mereproduksi error500 - File pelacakan yang berisi permintaan dengan
500 Internal Server Error - Jika error
500tidak terjadi saat ini, berikan jangka waktu dengan informasi zona waktu saat error500terjadi di masa lalu.
Jika Anda adalah pengguna Private Cloud, berikan informasi berikut:
- Pesan error lengkap yang diamati untuk permintaan yang gagal
- Nama organisasi, lingkungan, dan proxy API yang Anda amati
500error - Paket proxy API
- File pelacakan yang berisi permintaan dengan
500 Internal Server Error - Log akses NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logDengan: ORG, ENV, dan PORT# diganti dengan nilai sebenarnya.
- Log sistem Message Processor
/opt/apigee/var/log/edge-message-processor/logs/system.log - Jangka waktu dengan informasi zona waktu saat error
500terjadi.