Menginstrumentasikan aplikasi PHP untuk Pelaporan Error

Anda dapat mengirim laporan error ke Error Reporting dari aplikasi PHP menggunakan library Error Reporting untuk PHP. Gunakan library Error Reporting untuk PHP guna membuat grup error untuk kasus berikut:

  • Bucket log yang berisi entri log Anda memiliki kunci enkripsi yang dikelola pelanggan (CMEK).
  • Bucket log memenuhi salah satu hal berikut:
    • Bucket log disimpan dalam project yang sama dengan tempat asal entri log.
    • Entri log dirutekan ke project, lalu project tersebut menyimpan entri log tersebut dalam bucket log miliknya.
  • Anda ingin melaporkan peristiwa error kustom.

Pelaporan Error terintegrasi dengan beberapa layanan, seperti Cloud Functions dan App Engine, Compute Engine, dan Google Kubernetes Engine. Google Cloud Error Reporting menampilkan error yang dicatat ke Cloud Logging oleh aplikasi yang berjalan di layanan tersebut. Untuk mengetahui informasi selengkapnya, buka Berjalan di Google Cloud di halaman ini.

Anda juga dapat mengirim data error ke Error Reporting menggunakan Logging. Untuk mengetahui informasi tentang persyaratan pemformatan data, baca Memformat pesan error di Logging.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Error Reporting API .

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Error Reporting API .

    Enable the API

  8. Menginstal library klien

    Library Error Reporting untuk PHP memungkinkan Anda memantau dan melihat error yang dilaporkan oleh aplikasi PHP yang berjalan di hampir semua tempat.

    Untuk mengetahui informasi selengkapnya tentang penginstalan, baca dokumentasi untuk library Pelaporan Error untuk PHP. Anda juga dapat melaporkan masalah menggunakan issue tracker.

    Mengonfigurasi library klien

    Anda dapat menyesuaikan perilaku library Error Reporting untuk PHP. Lihat konfigurasi library untuk mengetahui daftar kemungkinan opsi konfigurasi.

    Menjalankan aplikasi di Google Cloud

    Untuk membuat grup error menggunakan projects.events.report, akun layanan Anda memerlukan peran Error Reporting Writer (roles/errorreporting.writer).

    Beberapa layanan secara otomatis memberikan peran Error Reporting Writer (roles/errorreporting.writer) ke akun layanan yang sesuai. Google Cloud Namun, Anda harus memberikan peran ini ke akun layanan yang sesuai untuk beberapa layanan.

    Cloud Run dan Cloud Run Functions

    Akun layanan default yang digunakan oleh Cloud Run memiliki izin peran Error Reporting Writer (roles/errorreporting.writer).

    Library Error Reporting untuk PHP dapat digunakan tanpa perlu memberikan kredensial secara eksplisit.

    Cloud Run dikonfigurasi untuk menggunakan Error Reporting secara otomatis. Pengecualian JavaScript yang tidak tertangani akan muncul di Logging dan diproses oleh Error Reporting tanpa perlu menggunakan library Error Reporting untuk PHP.

    Lingkungan fleksibel App Engine

    App Engine memberikan peran Error Reporting Writer (roles/errorreporting.writer) ke akun layanan default Anda secara otomatis.

    Library Error Reporting untuk PHP dapat digunakan tanpa perlu memberikan kredensial secara eksplisit.

    Untuk mengaktifkan Error Reporting di lingkungan fleksibel App Engine, ikuti langkah-langkah berikut:

    1. Instal library yang diperlukan dengan perintah berikut:

      $ composer require google/cloud-error-reporting
    2. Tambahkan baris berikut ke bagian runtime_config di app.yaml:

    enable_stackdriver_integration: true

    Kemudian, library secara otomatis mengumpulkan semua error dan pengecualian yang tidak tertangkap ke Error Reporting. Jika Anda menggunakan Framework Web yang menginstal sendiri handler Pengecualiannya, lihat bagian Integrasi Framework untuk mengetahui informasi selengkapnya.

    Google Kubernetes Engine

    Untuk menggunakan Error Reporting dengan Google Kubernetes Engine, lakukan hal berikut:

    1. Pastikan akun layanan yang akan digunakan oleh penampung Anda telah diberi peran Error Reporting Writer (roles/errorreporting.writer).

      Anda dapat menggunakan akun layanan default Compute Engine atau akun layanan kustom.

      Untuk mengetahui informasi tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    2. Buat cluster dan berikan cloud-platform cakupan akses ke cluster.

      Misalnya, perintah pembuatan berikut menentukan cakupan akses cloud-platform dan akun layanan:

      gcloud container clusters create CLUSTER_NAME --service-account  SERVICE_ACCT_NAME --scopes=cloud-platform
      

    Compute Engine

    Untuk menggunakan Error Reporting dengan instance VM Compute Engine, lakukan langkah-langkah berikut:

    1. Pastikan akun layanan yang akan digunakan oleh instance VM Anda telah diberi peran Error Reporting Writer (roles/errorreporting.writer).

      Anda dapat menggunakan akun layanan default Compute Engine atau akun layanan kustom.

      Untuk mengetahui informasi tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

    2. Di konsol Google Cloud , buka halaman VM instances:

      Buka instance VM

      Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Compute Engine.

    3. Pilih instance VM yang ingin Anda beri cloud-platform cakupan akses.

    4. Klik Hentikan, lalu klik Edit.

    5. Di bagian Identity and API access, pilih akun layanan yang memiliki peran Error Reporting Writer (roles/errorreporting.writer).

    6. Di bagian Access scopes, pilih Allow full access to all Cloud APIs, lalu simpan perubahan Anda.

    7. Klik Mulai/Lanjutkan.

    Contoh

    1. Instal library cloud dengan perintah berikut:

    $ composer require google/cloud-error-reporting
    2. Tambahkan baris berikut ke php.ini Anda, dengan WORKSPACE adalah jalur absolut ke direktori root ruang kerja Anda:
    auto_prepend_file='/WORKSPACE/vendor/google/cloud-error-reporting/src/prepend.php'

    File prepend ini menginstal pengendali pengecualian dan pengendali error yang secara otomatis mengirimkan error ke Error Reporting.

    Jika Anda menggunakan lingkungan fleksibel App Engine, lihat Lingkungan fleksibel App Engine di halaman ini.

    Menjalankan aplikasi di lingkungan pengembangan lokal

    Untuk menggunakan library Error Reporting untuk PHP di lingkungan pengembangan lokal, seperti menjalankan library di workstation Anda sendiri, Anda harus memberikan kredensial default aplikasi lokal ke library Error Reporting untuk PHP. Untuk mengetahui informasi selengkapnya, lihat Mengautentikasi ke Error Reporting.

    Untuk menggunakan contoh PHP di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

    1. Install the Google Cloud CLI.

    2. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    3. To initialize the gcloud CLI, run the following command:

      gcloud init
    4. If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

    Metode projects.events.report juga mendukung kunci API. Jika ingin menggunakan kunci API untuk autentikasi, Anda tidak perlu menyiapkan file Kredensial Default Aplikasi lokal. Untuk informasi selengkapnya, lihat Buat kunci API dalam Google Cloud dokumentasi autentikasi.

    Melihat laporan error

    Di konsol Google Cloud , buka halaman Error Reporting:

    Buka Error Reporting

    Anda juga dapat menemukan halaman ini dengan menggunakan kotak penelusuran.

    Untuk mengetahui informasi selengkapnya, lihat Melihat Error.

    Integrasi Framework

    Beberapa framework web menggantikan handler pengecualian. Berikut adalah contoh untuk mengaktifkan Error Reporting dengan Laravel dan Symfony. Untuk framework lain, Anda dapat menggunakan Google\Cloud\ErrorReporting\Bootstrap::exceptionHandler sebagai handler pengecualian.

    Laravel

    Edit fungsi report di file app/Exceptions/Handler.php sebagai berikut:

    public function report(Exception $exception)
    {
        if (isset($_SERVER['GAE_SERVICE'])) {
            // Ensure Stackdriver is initialized and handle the exception
            Bootstrap::init();
            Bootstrap::exceptionHandler($exception);
        } else {
            parent::report($exception);
        }
    }

    Anda juga perlu menambahkan pernyataan use satu baris di awal file:

    use Google\Cloud\ErrorReporting\Bootstrap;

    Symfony

    Buat file baru src/AppBundle/EventSubscriber/ExceptionSubscriber.php dengan konten berikut:

    // src/AppBundle/EventSubscriber/ExceptionSubscriber.php
    namespace AppBundle\EventSubscriber;
    
    use Google\Cloud\ErrorReporting\Bootstrap;
    use Symfony\Component\EventDispatcher\EventSubscriberInterface;
    use Symfony\Component\HttpKernel\Event\ExceptionEvent;
    use Symfony\Component\HttpKernel\KernelEvents;
    
    class ExceptionSubscriber implements EventSubscriberInterface
    {
        public static function getSubscribedEvents()
        {
            // return the subscribed events, their methods and priorities
            return [KernelEvents::EXCEPTION => [
                ['logException', 0]
            ]];
        }
    
        public function logException(ExceptionEvent $event)
        {
            $exception = $event->getThrowable();
            Bootstrap::exceptionHandler($exception);
        }
    }