Menginstrumentasikan aplikasi Go untuk Error Reporting

Paket Pelaporan Error untuk Go memungkinkan Anda mengirim peristiwa error langsung dari aplikasi Go ke Pelaporan Error sehingga Anda dapat mendiagnosis dan memantau error runtime. Dengan melengkapi aplikasi Anda menggunakan library, Anda dapat melaporkan peristiwa error kustom dan merekam error meskipun bucket log Anda menggunakan kunci enkripsi yang dikelola pelanggan (CMEK).

Untuk aplikasi yang berjalan di layanan Google Cloud terintegrasi—termasuk fungsi Cloud Run, App Engine, Compute Engine, dan Google Kubernetes Engine—Error Reporting juga dapat menyimpulkan peristiwa error secara otomatis dari Cloud Logging tanpa paket Error Reporting untuk Go. Agar Error Reporting dapat menyimpulkan peristiwa error dari log, entri log Anda harus mengikuti persyaratan format error dan disimpan dalam bucket log non-CMEK yang dimiliki oleh project asal atau oleh project tujuan tempat log dirutekan.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Error Reporting API , if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Error Reporting API , if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

Menginstal library klien

Paket Pelaporan Error untuk Go memungkinkan Anda memantau dan melihat peristiwa error yang dilaporkan oleh aplikasi Go yang berjalan di hampir semua tempat.

  1. Gunakan go get untuk menginstal paket:

    go get cloud.google.com/go/errorreporting

Untuk mengetahui informasi selengkapnya tentang penginstalan, baca dokumentasi untuk paket Error Reporting untuk Go. Anda juga dapat melaporkan masalah menggunakan pelacak masalah.

Mengonfigurasi library klien

Anda dapat menyesuaikan perilaku paket Pelaporan Error untuk Go. Lihat godoc.

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 Google Cloud layanan otomatis memberikan peran Error Reporting Writer (roles/errorreporting.writer) kepada akun layanan yang sesuai. 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).

Paket Error Reporting untuk Go dapat digunakan tanpa perlu memberikan kredensial secara eksplisit.

Cloud Run dikonfigurasi untuk menggunakan Error Reporting secara otomatis. Pengecualian JavaScript yang tidak ditangani akan muncul di Logging dan diproses oleh Error Reporting tanpa perlu menggunakan paket Error Reporting untuk Go.

Lingkungan fleksibel App Engine

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

Paket Error Reporting untuk Go dapat digunakan tanpa perlu memberikan kredensial secara eksplisit.

Error Reporting diaktifkan secara otomatis untuk aplikasi lingkungan fleksibel App Engine. Tidak diperlukan penyiapan tambahan.

Google Kubernetes Engine

Untuk menggunakan Error Reporting dengan Google Kubernetes Engine, lakukan langkah-langkah 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 pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

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

    Misalnya, perintah create 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 pemberian 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 Stop, 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 Start/Resume.

Contoh

Contoh berikut menunjukkan penggunaan library klien Go untuk melaporkan peristiwa error kustom:


// Sample errorreporting_quickstart contains is a quickstart
// example for the Google Cloud Error Reporting API.
package main

import (
	"context"
	"errors"
	"log"
	"os"

	"cloud.google.com/go/errorreporting"
)

var errorClient *errorreporting.Client

func main() {
	// Set your Google Cloud Platform project ID via environment or explicitly
	projectID := os.Getenv("GOOGLE_CLOUD_PROJECT")
	args := os.Args[1:]
	if len(args) > 0 && args[0] != "" {
		projectID = args[0]
	}

	ctx := context.Background()
	var err error
	errorClient, err = errorreporting.NewClient(ctx, projectID, errorreporting.Config{
		ServiceName:    "errorreporting_quickstart",
		ServiceVersion: "0.0.0",
		OnError: func(err error) {
			log.Printf("Could not report the error: %v", err)
		},
	})
	if err != nil {
		log.Fatal(err)
	}
	defer errorClient.Close()

	err = errors.New("something went wrong")
	if err != nil {
		logAndPrintError(err)
		return
	}
}

func logAndPrintError(err error) {
	/// Client autopopulates the error context of the error. For more details about the context see:
	/// https://cloud.google.com/error-reporting/reference/rest/v1beta1/ErrorContext
	errorClient.Report(errorreporting.Entry{
		Error: err,
	})
	log.Print(err)
}

Lihat godoc untuk mengetahui contoh lainnya tentang cara melaporkan panik dan error.

Menjalankan aplikasi di lingkungan pengembangan lokal

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

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

  1. Instal Google Cloud CLI.

  2. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  3. Jika Anda menggunakan shell lokal, buat kredensial autentikasi lokal untuk akun pengguna Anda:

    gcloud auth application-default login

    Anda tidak perlu melakukan langkah ini jika menggunakan Cloud Shell.

    Jika error autentikasi ditampilkan, dan Anda menggunakan penyedia identitas (IdP) eksternal, konfirmasi bahwa Anda telah login ke gcloud CLI dengan identitas gabungan Anda.

Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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 mengetahui informasi selengkapnya, lihat Membuat kunci API di dokumentasi autentikasi Google Cloud .

Melihat grup 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 dan memfilter grup error.