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

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

  3. Buka Analyze > Pemantauan API > Investigasi.
  4. Pilih jangka waktu tertentu saat Anda melihat error.
  5. Gambarkan Kode Kesalahan terhadap Waktu.

  6. Pilih sel yang memiliki kode fault 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 sebagai yang ditampilkan di bawah ini:

    ( lihat gambar yang lebih besar)

  8. Klik Lihat log , lalu 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

Trace

Prosedur #2: Menggunakan alat Rekaman Aktivitas

Untuk mendiagnosis error menggunakan alat Trace:

  1. Aktifkan sesi rekaman aktivitas dan
    • Tunggu hingga error 500 Internal Server Error disertai kode error messaging.adaptors.http.flow.ErrorResponseCode terjadi, atau
    • Jika Anda dapat mereproduksi masalah, lakukan panggilan API untuk mereproduksi masalah 500 Internal Server Error
  2. Pastikan Tampilkan semua FlowInfos diaktifkan:

  3. Pilih salah satu permintaan yang gagal dan periksa rekaman aktivitasnya.
  4. Menavigasi melalui berbagai fase pelacakan dan menemukan tempat terjadinya kegagalan.
  5. Anda akan menemukan error yang biasanya ada dalam alur setelah Respons diterima dari server target seperti yang ditunjukkan di bawah ini:

    ( lihat gambar yang lebih besar)

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

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

  1. 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.
  2. Jika Sumber Kesalahan adalah target dan Kode Kesalahan adalah messaging.adaptors.http.flow.ErrorResponseCode, hal ini menunjukkan bahwa kesalahan ditampilkan oleh server backend.
  3. 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:

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

      ( lihat gambar yang lebih besar)

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

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

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

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

    1. Jika Anda memiliki rekaman aktivitas untuk permintaan yang gagal, buka halaman Permintaan terkirim ke fase server target, lalu klik Show Curl.

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

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