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 umum. Artinya, server
mengalami kondisi tak terduga yang
mencegahnya memenuhi permintaan. Kesalahan ini adalah
biasanya dikembalikan oleh server
ketika tidak ada kode {i>error<i} 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
jumlah penyebab. Playbook ini menjelaskan cara memecahkan masalah menggunakan langkah-langkah umum dan menyelesaikannya
{i>error<i} apa pun penyebabnya.
Kemungkinan penyebab masalah ini adalah sebagai berikut:
Penyebab | Deskripsi | Petunjuk pemecahan masalah berlaku untuk |
---|---|---|
Error di server backend | Server backend mungkin gagal karena beberapa alasan. | Pengguna Edge Private Cloud 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.
Beralihlah ke organisasi tempat Anda ingin menyelidiki masalah tersebut.
- Buka Analyze > Pemantauan API > Investigasi.
- Pilih jangka waktu tertentu saat Anda melihat error.
Gambarkan Kode Kesalahan terhadap Waktu.
Pilih sel yang memiliki kode fault
messaging.adaptors.http.flow.ErrorResponseCode
seperti yang ditunjukkan di bawah ini:Informasi tentang kode kesalahan
messaging.adaptors.http.flow.ErrorResponseCode
ditampilkan sebagai yang ditampilkan di bawah ini:Klik Lihat log , lalu 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
Trace
Prosedur #2: Menggunakan alat Rekaman Aktivitas
Untuk mendiagnosis error menggunakan alat Trace:
- Aktifkan sesi rekaman aktivitas dan
- Tunggu hingga error
500 Internal Server Error
disertai kode errormessaging.adaptors.http.flow.ErrorResponseCode
terjadi, atau - Jika Anda dapat mereproduksi masalah, lakukan panggilan API untuk mereproduksi masalah
500 Internal Server Error
- Tunggu hingga error
Pastikan Tampilkan semua FlowInfos diaktifkan:
- Pilih salah satu permintaan yang gagal dan periksa rekaman aktivitasnya.
- Menavigasi melalui berbagai fase pelacakan dan menemukan tempat terjadinya kegagalan.
Anda akan menemukan error yang biasanya ada dalam alur setelah Respons diterima dari server target seperti yang ditunjukkan di bawah ini:
- Buka Fase AX (Data Analytics Direkam) di rekaman aktivitas, lalu klik Fase tersebut.
Scroll ke bawah ke bagian Fase Details Response Headers dan tentukan 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 apakah ada
500
error dengan kode errormessaging.adaptors.http.flow.ErrorResponseCode
selama durasi tertentu (jika masalah terjadi di sudah lewat) atau jika ada permintaan yang masih gagal dengan500
. Jika Anda menemukan error
500
dengan pencocokan X-Apigee-fault-code nilaimessaging.adaptors.http.flow.ErrorResponseCode
, lalu tentukan nilai 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 merespons oleh server backend dapat
disebabkan oleh sejumlah alasan. Anda harus mendiagnosis setiap situasi secara terpisah.
- Tentukan Fault Code, Fault Source 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
, hal ini menunjukkan bahwa kesalahan ditampilkan oleh server backend. - Anda dapat menggunakan salah satu langkah berikut untuk mendiagnosis penyebab masalah:
Trace
Menggunakan Rekaman Aktivitas:
Jika Anda memiliki sesi Trace untuk kegagalan tersebut, lakukan langkah-langkah berikut:
- Di Trace, pilih permintaan API yang gagal dengan
500 Internal Server Error
. Pilih fase Response diterima dari server target dari permintaan API yang gagal seperti yang ditunjukkan dalam gambar di bawah ini:
Scroll ke bawah ke bagian Detail Fase, 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 Tidak Diizinkan. Hal ini menunjukkan bahwa pengguna mungkin telah meneruskan kredensial, dan itulah sebabnya mereka mendapatkan pesan {i>error<i}.
Memanggil server backend
Melakukan panggilan langsung ke server backend:
Anda dapat melakukan panggilan langsung ke server backend dan:
- Validasi apakah Anda mendapatkan
500 Internal Server Error
yang sama respons yang diterima saat permintaan dibuat melalui Apigee Edge - Memeriksa pesan error (respons) yang diterima dari server backend
Lakukan langkah-langkah berikut untuk membuat panggilan langsung ke server backend:
- Pastikan Anda memiliki semua header, parameter kueri, dan setiap kredensial yang perlu 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, lalu panggil API server backend secara langsung. Jika server backend hanya dapat diakses dari Pemroses Pesan, Anda bisa gunakan perintah
curl
, Postman, atau REST Client lainnya dan panggil API server backend langsung dari Pemroses Pesan.- Validasi apakah layanan backend benar-benar menampilkan
500 Internal Server Error
dan periksa pesan error (respons) yang ditampilkan oleh server backend serta menentukan penyebab kesalahan ini.
Log server backend
Menggunakan log server backend
- Tinjau log server backend dan coba dapatkan detail lebih lanjut tentang error tersebut dan penyebabnya.
- Jika memungkinkan, aktifkan mode debug di server backend untuk mendapatkan detail selengkapnya tentang {i>error<i} 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; Artinya, jika server target/endpoint target memanggil proxy lain dalam Apigee Edge. Untuk menentukan hal ini:
Jika Anda memiliki rekaman aktivitas untuk permintaan yang gagal, buka halaman Permintaan terkirim ke fase server target, lalu klik Show Curl.
- Jendela Curl for Request sent to Target Server akan terbuka tempat Anda dapat menentukan alias {i>host<i} server target.
- Tinjau endpoint target Proxy API Anda dan periksa apakah server backend URL atau nama host di server target mengarah ke Proxy lain atau milik Anda server backend.
- Jika alias {i>host<i} server target mengarah ke alias {i>virtual host<i}, maka itu
adalah {i>proxy chaining<i}. Dalam hal ini, Anda perlu mengulangi semua langkah di atas untuk
proxy berantai hingga Anda menentukan penyebab
500 Internal Server Error
. Dalam kasus ini,500 Internal Server Error
mungkin terjadi di {i>proxy<i} berantai lainnya pada tahap lain juga yang dapat didiagnosis dan diselesaikan menggunakan petunjuk yang diberikan dalam playbook ini atau dalam Playbook Error Server Internal 500. - Jika alias host server target mengarah ke server backend Anda, buka Resolusi.
Resolusi
Jika dipastikan bahwa error 500
berasal dari server backend,
bekerja sama dengan tim server backend Anda
untuk memperbaiki masalah ini dengan tepat.
Pada contoh yang dibahas di atas, Anda mungkin harus meminta pengguna meneruskan kredensial yang valid untuk memperbaiki menyelesaikan masalah ini.
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 rekaman aktivitas untuk kegagalan permintaan. - Respons server backend tidak akan dicatat di Pemantauan API, Log Akses NGINX, atau Log Pemroses Pesan untuk alasan keamanan.
- Anda dapat meninjau log server backend atau mengaktifkan mode debug di backend untuk mendapatkan
detail 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 instruksi di atas, kumpulkan informasi diagnostik 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 rekaman aktivitas yang berisi permintaan dengan
500 Internal Server Error
- Jika error
500
saat ini tidak terjadi, berikan waktu periode dengan informasi zona waktu bila terjadi error500
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
500
error - Paket proxy API
- File rekaman aktivitas 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 terjadi error
500
.