Melaporkan error

Tutorial ini menunjukkan cara melaporkan dan melacak pengecualian yang tidak tertangkap dalam tutorial Memulai Python dengan menggunakan Google Cloud console.

Error Reporting menyediakan dasbor terpusat yang menampilkan jumlah setiap error unik, stack trace, dan histori kejadian. Anda juga dapat menyiapkan pemberitahuan saat terjadi error.

Halaman ini adalah bagian dari tutorial multi-halaman. Untuk memulai dari awal dan membaca petunjuk penyiapan, buka Aplikasi Bookshelf Python.

Mengonfigurasi setelan

Bagian ini menggunakan kode di direktori 5-logging. Edit file dan jalankan perintah di direktori ini.

  1. Buka file config.py untuk diedit dan ganti nilai berikut:
    • Tetapkan nilai [PROJECT_ID] ke project ID Anda, yang terlihat di konsol Google Cloud .
    • Tetapkan nilai [DATA_BACKEND] ke nilai yang sama dengan yang Anda gunakan selama tutorial Menggunakan data terstruktur.
    • Jika Anda menggunakan Cloud SQL atau MongoDB, tetapkan nilai di bagian Cloud SQL atau Mongo ke nilai yang sama dengan yang Anda gunakan selama langkah Menggunakan data terstruktur.
    • Tetapkan nilai [CLOUD_STORAGE_BUCKET] ke nama bucket Cloud Storage Anda.
    • Di bagian OAuth2 configuration, tetapkan nilai [GOOGLE_OAUTH2_CLIENT_ID] dan [GOOGLE_OAUTH2_CLIENT_SECRET] ke ID dan rahasia klien aplikasi yang Anda buat sebelumnya.

  2. Simpan dan tutup file config.py tersebut.

Jika Anda menggunakan Cloud SQL:

  1. Buka file app.yaml untuk mengedit.
  2. Tetapkan nilai cloudsql-instance ke nilai yang sama dengan yang digunakan untuk [CLOUDSQL_CONNECTION_NAME] dalam file config.py. Gunakan format project:region:cloudsql-instance. Hapus tanda komentar pada seluruh baris ini.
  3. Simpan dan tutup file app.yaml tersebut.

Menginstal dependensi

Untuk membuat lingkungan virtual dan menginstal dependensi, gunakan perintah berikut:

Linux/macOS

virtualenv -p python3 env
source env/bin/activate
pip install -r requirements.txt

Windows

virtualenv -p python3 env
env\scripts\activate
pip install -r requirements.txt

Menjalankan aplikasi di komputer lokal

  1. Mulai server web lokal:

    python main.py
    
  2. Di browser Anda, masukkan alamat berikut:

    http://localhost:8080
    

Tekan Control+C untuk keluar dari pekerja, lalu server web lokal.

Men-deploy aplikasi ke lingkungan fleksibel App Engine

  1. Deploy aplikasi contoh:

    gcloud app deploy
    
  2. Di browser Anda, masukkan URL berikut:

    https://PROJECT_ID.REGION_ID.r.appspot.com

    Ganti kode berikut:

Jika Anda mengupdate aplikasi, Anda men-deploy versi yang diupdate dengan memasukkan perintah yang sama yang Anda gunakan untuk men-deploy aplikasi. Deployment membuat versi baru aplikasi Anda dan mempromosikannya ke versi default. Versi aplikasi Anda sebelumnya tetap ada, begitu juga dengan instance mesin virtual (VM) terkait. Semua versi aplikasi dan instance VM ini adalah resource yang dapat ditagih. Untuk mengurangi biaya, hapus versi non-default aplikasi Anda.

Untuk menghapus versi aplikasi:

  1. In the Google Cloud console, go to the Versions page for App Engine.

    Go to Versions

  2. Select the checkbox for the non-default app version that you want to delete.
  3. Untuk menghapus versi aplikasi, klik Hapus.

Untuk mengetahui informasi selengkapnya tentang cara membersihkan resource yang dapat ditagih, lihat bagian Membersihkan pada langkah terakhir tutorial ini.

Menyimulasikan error

Untuk melihat cara kerja Pelaporan Kesalahan, sengaja buat kesalahan dalam kode Anda, lalu cari pengecualian di halaman Pelaporan Kesalahan konsol Google Cloud .

  1. Di bookshelf/crud.py, tambahkan operasi yang mengakses variabel yang tidak ditentukan dan menghasilkan ReferenceError di tampilan indeks.

    @crud.route("/")
    def list():
       x[3]
  2. Deploy aplikasi.

    gcloud app deploy
  3. Akses halaman indeks.

    gcloud app browse

    Anda dapat melihat pesan An internal error occurred.

  4. Di konsol Google Cloud , buka halaman Error Reporting:

    Buka Error Reporting

    Anda juga dapat menemukan halaman ini dengan menggunakan kotak penelusuran.

    Anda dapat melihat error yang tercantum.

    Lihat error

  5. Klik error untuk melihat informasi tentang error, seperti kapan error terakhir terlihat,frekuensi terjadinya error, histogram waktu terjadinya, dan pelacakan tumpukan.

Memahami kode

Untuk melaporkan pengecualian yang tidak tertangkap, kode pertama-tama menggunakan dekorator errorhandler Flask, lalu melaporkan pengecualian ke Error Reporting menggunakan Library Klien Cloud untuk Python.

@app.errorhandler(500)
def server_error(e):
    client = error_reporting.Client(app.config['PROJECT_ID'])
    client.report_exception(
        http_context=error_reporting.build_flask_context(request))
    return """
    An internal error occurred.
    """, 500

Klien secara otomatis menambahkan info traceback dan menggunakan fungsi helper untuk mengekstrak detail permintaan yang relevan dari permintaan Flask, yang mengisi Pelaporan Error dengan stack trace dan konteks HTTP yang relevan untuk setiap pengecualian InternalServerError HTTP 500 yang tidak tertangkap di aplikasi Anda.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

Untuk menghapus project:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.