Melaporkan error

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

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

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

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 Google Cloud konsol.
    • 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 klien dan secret aplikasi yang Anda buat sebelumnya.

  2. Simpan dan tutup file config.py.

Jika Anda menggunakan Cloud SQL:

  1. Buka file app.yaml untuk diedit.
  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 komentar pada seluruh baris ini.
  3. Simpan dan tutup file app.yaml.

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 memperbarui aplikasi, Anda akan men-deploy versi yang diperbarui dengan memasukkan perintah yang sama dengan yang Anda gunakan untuk men-deploy aplikasi. Deployment akan membuat versi baru aplikasi Anda dan mempromosikannya ke versi default. Versi aplikasi Anda sebelumnya tetap ada, begitu juga instance mesin virtual (VM) terkait. Semua versi aplikasi dan instance VM ini adalah resource yang dapat ditagih. Untuk mengurangi biaya, hapus versi aplikasi Anda yang non-default.

Untuk menghapus versi aplikasi:

  1. Di Google Cloud konsol, buka halaman Versions untuk App Engine.

    Buka Versi

  2. Pilih kotak centang untuk versi aplikasi non-default yang ingin Anda hapus.
  3. Untuk menghapus versi aplikasi, klik Hapus.

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

Menyimulasikan error

Untuk melihat Error Reporting beraksi, sengaja buat kesalahan dalam kode Anda, lalu cari pengecualian di Google Cloud halaman Error Reporting konsol.

  1. Di bookshelf/crud.py, tambahkan operasi yang mengakses variabel yang tidak ditentukan dan menghasilkan ReferenceError dalam 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 Google Cloud konsol, buka halaman Error Reporting:

    Buka Error Reporting

    Anda juga dapat menemukan halaman ini menggunakan kotak penelusuran.

    Anda dapat melihat error yang tercantum.

    Lihat error

  5. Klik error untuk melihat informasi tentang error tersebut, seperti kapan error terakhir terlihat,jumlah error terjadi, histogram waktu kejadian, dan pelacakan tumpukan.

Memahami kode

Untuk melaporkan pengecualian yang tidak tertangkap, kode pertama-tama menggunakan errorhandler dekorator 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 Error Reporting dengan pelacakan tumpukan dan konteks HTTP yang relevan untuk 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. Di Google Cloud konsol, buka halaman Manage resources.

    Buka Kelola resource

  2. Pada daftar project, pilih project yang Anda ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.