Error Server Internal 500 - Server Backend

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:

  1. Login ke UI Apigee Edge sebagai pengguna dengan peran yang sesuai.
  2. Beralihlah ke organisasi tempat Anda ingin menyelidiki masalah.

  3. Buka halaman Analyze > API Monitoring > Menyelidiki.
  4. Pilih jangka waktu spesifik saat Anda melihat error.
  5. Tempatkan Kode Kesalahan terhadap Waktu.

  6. Pilih sel yang memiliki kode kesalahan messaging.adaptors.http.flow.ErrorResponseCode seperti yang ditunjukkan di bawah ini:

    ( lihat gambar yang lebih besar)

  7. Informasi tentang kode kesalahan messaging.adaptors.http.flow.ErrorResponseCode ditampilkan seperti yang ditunjukkan di bawah ini:

    ( lihat gambar yang lebih besar)

  8. Klik Lihat log dan luaskan baris untuk permintaan yang gagal.

    ( lihat gambar yang lebih besar)

  9. 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:

  1. Aktifkan sesi perekaman aktivitas dan
    • Tunggu hingga error 500 Internal Server Error dengan kode error messaging.adaptors.http.flow.ErrorResponseCode terjadi, atau
    • Jika Anda dapat merekonstruksi masalah, buat panggilan API untuk mereproduksi masalah 500 Internal Server Error
  2. Pastikan Show all FlowInfos diaktifkan:

  3. Pilih salah satu permintaan yang gagal dan periksa rekaman aktivitas.
  4. Jelajahi berbagai fase rekaman aktivitas dan temukan lokasi terjadinya kegagalan.
  5. Anda akan menemukan error biasanya dalam flow setelah fase Respons diterima dari server target seperti yang ditunjukkan di bawah ini:

    ( lihat gambar yang lebih besar)

  6. Buka Fase AX (Data Analytics Dicatat) di trace, lalu klik Fase tersebut.
  7. 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:

    ( lihat gambar yang lebih besar)

  8. Perhatikan nilai X-Apigee-fault-code, X-Apigee-fault-source, dan X-Apigee-Message-ID:
  9. 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:

  1. Jika Anda adalah pengguna Private Cloud, Anda dapat menggunakan log akses NGINX untuk menentukan informasi penting tentang HTTP 500 Internal Server Error.
  2. Periksa log akses NGINX:

    /opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log

  3. Telusuri untuk melihat apakah ada error 500 dengan kode error messaging.adaptors.http.flow.ErrorResponseCode selama durasi tertentu (jika masalah terjadi sebelumnya) atau apakah ada permintaan yang masih gagal dengan 500.
  4. Jika Anda menemukan error 500 dengan X-Apigee-fault-code yang cocok dengan nilai messaging.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.

  1. 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.
  2. Jika Sumber Kesalahan adalah target dan Kode Kesalahan adalah messaging.adaptors.http.flow.ErrorResponseCode, berarti error tersebut ditampilkan oleh server backend.
  3. 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:

    1. Di Trace, pilih permintaan API yang gagal dengan 500 Internal Server Error.
    2. Pilih fase Response received from target server dari permintaan API yang gagal seperti ditunjukkan dalam gambar di bawah:

      ( lihat gambar yang lebih besar)

    3. 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:

    1. Pastikan Anda memiliki semua header, parameter kueri, dan kredensial yang diperlukan yang harus diteruskan ke server backend sebagai bagian dari permintaan.
    2. Jika layanan backend dapat diakses secara publik, Anda dapat menggunakan perintah curl, Postman, atau REST Client lainnya dan memanggil API server backend secara langsung.
    3. 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.

    4. 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

    1. Tinjau log server backend dan coba dapatkan detail selengkapnya tentang error dan penyebabnya.
    2. Jika memungkinkan, aktifkan mode debug pada server backend untuk mendapatkan detail selengkapnya tentang error dan penyebabnya.
  4. 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:

    1. Jika Anda memiliki rekaman aktivitas untuk permintaan yang gagal, buka fase Request sent to target server dan klik Show Curl.

    2. Jendela Curl for Request Sent to Target Server akan terbuka dan Anda dapat menentukan alias host server target.
    3. 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.
    4. 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.
    5. 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

  1. 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.
  2. Karena alasan keamanan, respons server backend tidak akan dicatat dalam Pemantauan API, Log Akses NGINX, atau log Pemroses Pesan.
  3. 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 error 500
  • 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 error 500 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.