Memecahkan masalah pemilihan rute dan penyimpanan log

Dokumen ini menjelaskan masalah penyimpanan dan pemilihan rute umum serta cara menggunakan konsol Google Cloud untuk melihat dan memecahkan masalah kesalahan konfigurasi atau hasil yang tidak terduga.

Untuk mengetahui informasi umum tentang penggunaan log di tujuan sink, lihat Melihat log di tujuan sink.

Memecahkan masalah log pemilihan rute

Bagian ini menjelaskan cara memecahkan masalah umum saat merutekan log.

Tujuan berisi log yang tidak diinginkan

Anda melihat log yang dirutekan ke tujuan dan menentukan bahwa tujuan tersebut berisi log yang tidak diinginkan.

Untuk mengatasi kondisi ini, perbarui filter pengecualian untuk sink yang merutekan log ke tujuan. Filter pengecualian memungkinkan Anda mengecualikan log yang dipilih agar tidak dirutekan ke tujuan.

Misalnya, Anda membuat sink gabungan untuk merutekan log di organisasi ke tujuan. Untuk mengecualikan log dari project tertentu agar tidak dirutekan ke tujuan, tambahkan filter pengecualian berikut ke sink:

logName:projects/PROJECT_ID

Anda juga dapat mengecualikan log dari beberapa project menggunakan operator OR logika untuk menggabungkan klausa logName.

Tujuan tidak memiliki log

Mungkin masalah terkait sink yang paling umum adalah log sepertinya tidak ada di tujuan sink.

Dalam beberapa kasus, error tidak dihasilkan, tetapi Anda mungkin melihat bahwa log tidak tersedia saat Anda mencoba mengaksesnya di tujuan. Jika Anda mencurigai bahwa sink tidak merutekan log dengan benar, periksa metrik berbasis log sistem sink:

  • exports/byte_count: Jumlah byte dalam entri log yang dirutekan.
  • exports/log_entry_count: Jumlah entri log yang dirutekan.
  • exports/error_count: Jumlah entri log yang gagal dirutekan.

Metrik memiliki label yang mencatat jumlah menurut nama sink dan nama tujuan, serta memberi tahu Anda apakah sink berhasil merutekan data log atau gagal. Untuk mengetahui detail tentang cara melihat metrik, lihat Ringkasan metrik berbasis log.

Jika metrik sink menunjukkan bahwa sink tidak berperforma seperti yang Anda harapkan, berikut beberapa kemungkinan penyebabnya dan cara mengatasinya:

Latensi

  • Tidak ada entri log yang cocok yang telah diterima sejak Anda membuat atau memperbarui sink; hanya entri log baru yang dirutekan.

    Coba tunggu satu jam dan periksa kembali tujuan Anda.

  • Entri log yang cocok terlambat diterima.

    Mungkin ada penundaan sebelum Anda dapat melihat log di tujuan. Log yang terlambat tiba sangat umum terjadi untuk sink yang telah mengonfigurasi bucket Cloud Storage sebagai tujuannya. Coba tunggu beberapa jam dan periksa tujuan Anda lagi.

Cakupan/filter tampilan salah

  • Cakupan yang Anda gunakan untuk melihat log di tujuan bucket Logging salah.

    Cakup penelusuran Anda ke satu atau beberapa tampilan penyimpanan sebagai berikut:

    • Jika Anda menggunakan Logs Explorer, gunakan tombol Pertajam cakupan.

    • Jika Anda menggunakan gcloud CLI, gunakan perintah gcloud logging read dan tambahkan flag --view=AllLogs.

  • Rentang waktu yang Anda gunakan untuk [memilih dan melihat data di tujuan sink][export-log-bucket terlalu sempit.

    Coba perluas rentang waktu yang Anda gunakan saat memilih data di tujuan sink.

Error dalam filter sink

  • Filter sink salah dan tidak merekam log yang Anda harapkan untuk dilihat di tujuan.

    • Edit filter sink menggunakan Log Router di konsol Google Cloud. Untuk memverifikasi bahwa Anda memasukkan filter yang benar, pilih Pratinjau log di panel Edit sink. Tindakan ini akan membuka Logs Explorer di tab baru dengan filter yang telah diisi otomatis. Untuk petunjuk tentang cara melihat dan mengelola sink, lihat Mengelola sink.

Lihat error

Untuk setiap tujuan sink yang didukung, Logging memberikan pesan error untuk sink yang tidak dikonfigurasi dengan benar.

Ada beberapa cara untuk melihat error terkait sink ini; metode ini dijelaskan di bagian berikut:

  • Lihat log error yang dihasilkan untuk sink.
  • Menerima notifikasi error sink melalui email. Pengirim email ini adalah logging-noreply@google.com.

Log error

Metode yang direkomendasikan untuk memeriksa error terkait sink secara mendetail adalah dengan melihat entri log error yang dihasilkan oleh sink. Untuk mengetahui detail tentang cara melihat log, lihat Melihat log menggunakan Logs Explorer.

Anda dapat menggunakan kueri berikut di panel editor kueri di Logs Explorer untuk meninjau log error sink. Kueri yang sama berfungsi di Logging API dan gcloud CLI.

Sebelum menyalin kueri, ganti variabel SINK_NAME dengan nama sink yang ingin Anda pecahkan masalahnya. Anda dapat menemukan nama sink di halaman Log Router di konsol Google Cloud.

logName:"logging.googleapis.com%2Fsink_error"
resource.type="logging_sink"
resource.labels.name="SINK_NAME"

Misalnya, jika nama sink Anda adalah my-sink-123, entri log mungkin terlihat seperti berikut:

{
   errorGroups: [
   0: {
   id: "COXu96aNws6BiQE"
   }]
   insertId: "170up6jan"
   labels: {
      activity_type_name: "LoggingSinkConfigErrorV2"
      destination: "pubsub.googleapis.com/projects/my-project/topics/my-topic"
      error_code: "topic_not_found"
      error_detail: ""
      sink_id: "my-sink-123"
   }
   logName: "projects/my-project/logs/logging.googleapis.com%2Fsink_error"
   receiveTimestamp: "2024-07-11T14:41:42.578823830Z"
   resource: {
   labels: {
      destination: "pubsub.googleapis.com/projects/my-project/topics/my-topic"
      name: "my-sink-123"
      project_id: "my-project"
   }
   type: "logging_sink"
   }
   severity: "ERROR"
   textPayload: "Cloud Logging sink configuration error in my-project, sink my-sink-123: topic_not_found ()"
   timestamp: "2024-07-11T14:41:41.296157014Z"
}

Kolom LogEntry labels dan informasi nilai kunci bertingkat membantu Anda menargetkan sumber error sink; kolom ini berisi resource yang terpengaruh, sink yang terpengaruh, dan kode error. Kolom labels.error_code berisi deskripsi singkat error, yang memberi tahu Anda komponen sink mana yang perlu dikonfigurasi ulang.

Untuk mengatasi kegagalan ini, edit sink Anda. Misalnya, Anda dapat mengedit sink menggunakan halaman Log Router:

Buka Router Log

Notifikasi email

Kontak Penting mengirimkan notifikasi email error konfigurasi sink ke kontak yang ditetapkan ke kategori notifikasi Teknis untuk project Google Cloud atau resource induknya. Jika resource tidak memiliki kontak yang dikonfigurasi untuk Notifikasi teknis, pengguna yang tercantum sebagai Pemilik Project IAM roles/owner untuk resource tersebut akan menerima notifikasi email.

Pesan email berisi informasi berikut:

  • ID Resource: Nama project Google Cloud atau resource Google Cloud lainnya tempat sink dikonfigurasi.
  • Nama sink: Nama sink yang berisi error konfigurasi.
  • Tujuan sink: Jalur lengkap tujuan pemilihan rute sink; misalnya, pubsub.googleapis.com/projects/PROJECT_ID/topics/TOPIC_ID
  • Kode error: Deskripsi singkat kategori error; misalnya, topic_not_found.
  • Detail error: Informasi mendetail tentang error, termasuk rekomendasi untuk memecahkan masalah error yang mendasarinya.

Pengirim email ini adalah logging-noreply@google.com.

Untuk melihat dan mengelola sink, gunakan halaman Log Router:

Buka Router Log

Setiap error konfigurasi sink yang berlaku untuk resource akan muncul dalam daftar sebagai Cloud Logging sink configuration error. Setiap error berisi link ke salah satu entri log yang dihasilkan oleh sink yang rusak. Untuk memeriksa error yang mendasarinya secara mendetail, lihat bagian Log error.

Jenis error sink

Bagian berikut menjelaskan kategori luas error terkait sink dan cara memecahkan masalahnya.

Tujuan salah

Jika Anda menyiapkan sink, tetapi kemudian melihat error konfigurasi bahwa tujuan tidak dapat ditemukan saat Logging mencoba merutekan log, berikut beberapa kemungkinan alasannya:

  • Konfigurasi sink Anda berisi kesalahan ejaan atau error pemformatan lainnya di tujuan sink yang ditentukan.

    Anda perlu memperbarui konfigurasi sink untuk menentukan tujuan yang ada dengan benar.

  • Tujuan yang ditentukan mungkin telah dihapus.

    Anda dapat mengubah konfigurasi sink untuk menggunakan tujuan yang berbeda dan sudah ada atau membuat ulang tujuan dengan nama yang sama.

Untuk mengatasi jenis kegagalan ini, [edit sink Anda]]export-manage-sink. Misalnya, Anda dapat mengedit sink menggunakan halaman Log Router:

Buka Router Log

Sink Anda mulai merutekan log saat tujuan ditemukan dan log baru yang cocok dengan filter Anda diterima oleh Logging.

Mengelola masalah sink

Jika Anda menonaktifkan sink untuk berhenti menyimpan log di bucket log, tetapi masih melihat log yang dirutekan, tunggu beberapa menit hingga perubahan pada sink diterapkan.

Masalah izin

Saat sink mencoba merutekan entri log, tetapi tidak memiliki izin IAM yang sesuai untuk tujuan sink, sink akan melaporkan error, yang dapat Anda lihat, dan melewati entri log.

Saat Anda membuat sink, akun layanan sink harus diberi izin tujuan yang sesuai. Jika Anda membuat sink di konsol Google Cloud dalam project Google Cloud yang sama, konsol Google Cloud biasanya akan menetapkan izin ini secara otomatis. Namun, jika Anda membuat sink di project Google Cloud yang berbeda, atau menggunakan gcloud CLI atau Logging API, Anda harus mengonfigurasi izin secara manual.

Jika Anda melihat error terkait izin untuk sink, tambahkan izin yang diperlukan atau perbarui sink untuk menggunakan tujuan yang berbeda. Untuk mengetahui petunjuk cara memperbarui izin ini, lihat Izin tujuan.

Ada sedikit penundaan antara pembuatan sink dan penggunaan akun layanan sink baru untuk memberikan otorisasi penulisan ke tujuan. Sink Anda mulai merutekan log saat izin diperbaiki dan log baru yang cocok dengan filter Anda diterima oleh Logging.

Masalah kebijakan organisasi

Jika Anda mencoba merutekan entri log, tetapi menemukan kebijakan organisasi yang membatasi Logging agar tidak menulis ke tujuan sink, sink tidak dapat merutekan ke tujuan yang dipilih dan melaporkan error.

Jika Anda melihat error yang terkait dengan kebijakan organisasi, Anda dapat melakukan hal berikut:

  • Perbarui kebijakan organisasi untuk tujuan guna menghapus batasan yang memblokir sink dari merutekan entri log; hal ini mengasumsikan bahwa Anda memiliki izin yang sesuai untuk memperbarui kebijakan organisasi.

    Anda dapat memeriksa apakah Pembatasan Lokasi Resource (constraints/gcp.resourceLocations) ada. Batasan ini menentukan lokasi tempat data dapat disimpan. Selain itu, beberapa layanan mendukung batasan yang dapat memengaruhi sink log. Misalnya, ada beberapa batasan yang mungkin berlaku saat tujuan Pub/Sub dipilih. Untuk daftar kemungkinan batasan, lihat Batasan kebijakan organisasi.

    Untuk mengetahui petunjuknya, lihat Membuat dan mengedit kebijakan.

  • Jika Anda tidak dapat memperbarui kebijakan organisasi, perbarui sink di halaman Log Router untuk menggunakan tujuan yang mematuhi kebijakan.

    Buka Router Log

Sink Anda mulai merutekan log saat kebijakan organisasi tidak lagi memblokir sink agar tidak menulis ke tujuan dan log baru yang cocok dengan filter Anda diterima oleh Logging.

Masalah kunci enkripsi

Jika Anda menggunakan kunci enkripsi, baik yang dikelola dengan Cloud Key Management Service atau oleh Anda, untuk mengenkripsi data di tujuan sink, Anda mungkin melihat error terkait. Berikut adalah beberapa kemungkinan masalah dan cara memperbaikinya:

  • Penagihan tidak diaktifkan untuk project Google Cloud yang berisi kunci Cloud KMS.

    • Meskipun sink berhasil dibuat dengan tujuan yang benar, pesan error ini akan ditampilkan jika tidak ada akun penagihan yang valid yang terkait dengan project Google Cloud yang berisi kunci.

    • Pastikan ada akun penagihan yang valid dan ditautkan ke project Google Cloud yang berisi kunci. Jika akun penagihan tidak ditautkan ke project Google Cloud, aktifkan penagihan untuk project Google Cloud tersebut atau gunakan kunci Cloud KMS yang terdapat dalam project Google Cloud yang memiliki akun penagihan valid yang ditautkan ke kunci tersebut.

  • Kunci Cloud KMS tidak dapat ditemukan.

    • Project Google Cloud yang berisi kunci Cloud KMS yang dikonfigurasi untuk mengenkripsi data tidak ditemukan.

    • Gunakan kunci Cloud KMS yang valid dari project Google Cloud yang ada.

  • Lokasi kunci Cloud KMS tidak cocok dengan lokasi tujuan.

    • Jika project Google Cloud yang berisi kunci Cloud KMS berada di region yang berbeda dengan region tujuan, enkripsi akan gagal dan sink tidak dapat merutekan data ke tujuan tersebut.

    • Gunakan kunci Cloud KMS yang terdapat dalam project Google Cloud yang region-nya cocok dengan tujuan sink.

  • Akses kunci enkripsi ditolak untuk akun layanan sink.

    • Meskipun sink berhasil dibuat dengan izin akun layanan yang benar, pesan error ini akan ditampilkan jika tujuan sink menggunakan kunci enkripsi yang tidak memberi akun layanan izin yang memadai untuk mengenkripsi atau mendekripsi data.

    • Berikan peran Pengenkripsi/Pendekripsi CryptoKey Cloud KMS untuk akun layanan yang ditentukan di kolom writerIdentity sink untuk kunci yang digunakan di tujuan. Pastikan juga bahwa Cloud KMS API sudah diaktifkan.

Masalah kuota

Saat sink menulis log, kuota khusus tujuan berlaku untuk project Google Cloud tempat sink dibuat. Jika kuota habis, sink akan berhenti merutekan log ke tujuan.

Misalnya, saat merutekan data ke BigQuery, Anda mungkin melihat error yang memberi tahu bahwa kuota streaming insert per tabel telah terlampaui untuk tabel tertentu dalam set data Anda. Dalam hal ini, sink Anda mungkin merutekan terlalu banyak entri log terlalu cepat. Konsep yang sama berlaku untuk tujuan sink lain yang didukung, misalnya ke topik Pub/Sub.

Untuk memperbaiki masalah kehabisan kuota, kurangi jumlah data log yang dirutekan dengan memperbarui filter sink agar cocok dengan entri log yang lebih sedikit. Anda dapat menggunakan fungsi sample dalam filter untuk memilih sebagian dari jumlah total entri log.

Sink Anda akan mulai merutekan log ke tujuan saat Anda memperbarui sink agar cocok dengan lebih sedikit entri log atau saat kuota diperbarui.

Untuk mengetahui detail tentang batas yang mungkin berlaku saat Anda merutekan log, tinjau informasi kuota tujuan yang sesuai:

Selain jenis error sink umum, berikut jenis error khusus tujuan yang paling umum dan cara memperbaikinya.

Error yang dirutekan ke Cloud Storage

Berikut adalah error yang paling umum saat merutekan log ke Cloud Storage:

  • Entri log yang terlambat:

    • Entri log yang dirutekan disimpan ke bucket Cloud Storage dalam batch per jam. Mungkin perlu waktu 2 hingga 3 jam sebelum entri pertama mulai muncul.

    • Shard file log yang dirutekan dengan akhiran An ("Tambahkan") menyimpan entri log yang terlambat. Jika tujuan Cloud Storage mengalami pemadaman layanan, Cloud Logging akan buffering data hingga pemadaman layanan berakhir.

  • Tidak dapat memberikan izin yang tepat ke tujuan:

    • Pastikan akun layanan untuk sink log memiliki izin yang benar. Untuk informasi selengkapnya, lihat bagian Masalah izin dalam dokumen ini.

Error saat merutekan ke BigQuery

Berikut adalah error yang paling umum saat merutekan log ke BigQuery:

  • Skema tabel tidak valid:

    • Log yang di-streaming ke tabel dalam set data BigQuery Anda tidak cocok dengan skema tabel saat ini. Masalah umum mencakup upaya untuk merutekan entri log dengan jenis data yang berbeda, yang menyebabkan ketidakcocokan skema. Misalnya, salah satu kolom dalam entri log adalah bilangan bulat, sedangkan kolom yang sesuai dalam skema memiliki jenis string.

    • Pastikan entri log Anda cocok dengan skema tabel. Setelah memperbaiki sumber error, Anda dapat mengganti nama tabel saat ini dan mengizinkan Logging membuat tabel lagi.

    • BigQuery mendukung pemuatan data bertingkat ke dalam tabelnya. Namun, saat memuat data dari Logging, batas kedalaman bertingkat maksimum untuk kolom adalah 13 tingkat.

    Saat mengidentifikasi ketidakcocokan skema, BigQuery akan membuat tabel dalam set data yang sesuai untuk menyimpan informasi error. Jenis tabel menentukan nama tabel. Untuk tabel yang di-shard berdasarkan tanggal, format penamaannya adalah export_errors_YYYYMMDD. Untuk tabel yang dipartisi, format penamaannya adalah export_errors. Untuk informasi tentang skema tabel error dan cara mencegah ketidakcocokan jenis kolom pada masa mendatang, lihat Ketidakcocokan dalam skema.

  • Entri log berada di luar batas waktu yang diizinkan:

    • Log yang di-streaming ke tabel BigQuery yang dipartisi berada di luar batas waktu yang diizinkan. BigQuery tidak menerima log yang terlalu lama di masa lalu atau masa mendatang.

    • Anda dapat memperbarui sink untuk merutekan log tersebut ke Cloud Storage dan menggunakan tugas pemuatan BigQuery. Lihat dokumentasi BigQuery untuk mengetahui petunjuk lebih lanjut.

  • Set data tidak mengizinkan akun layanan yang terkait dengan sink log untuk menulis ke set data tersebut:

    • Meskipun sink berhasil dibuat dengan izin akun layanan yang benar, pesan error ini akan ditampilkan jika tidak ada akun penagihan yang valid yang terkait dengan project Google Cloud yang berisi tujuan sink.

    • Pastikan ada akun penagihan yang ditautkan ke project Google Cloud Anda. Jika akun penagihan tidak ditautkan ke project Google Cloud tujuan sink, aktifkan penagihan untuk project Google Cloud tersebut atau perbarui tujuan sink sehingga berada di project Google Cloud yang memiliki akun penagihan valid yang ditautkan ke akun tersebut.

  • Set data berisi entri log duplikat:

    • Entri log duplikat dapat terjadi jika ada kegagalan dalam streaming log ke BigQuery, termasuk karena percobaan ulang atau kesalahan konfigurasi. Cloud Logging menghapus duplikat entri log dengan timestamp dan insertId yang sama pada waktu kueri. BigQuery tidak menghapus entri log duplikat.

    • Untuk mengabaikan entri log duplikat di BigQuery, sertakan klausa SELECT DISTINCT dalam kueri Anda. Contoh:

    SELECT DISTINCT insertId, timestamp FROM TABLE_NAME
    

Error yang dirutekan ke bucket Cloud Logging

Anda mungkin mengalami situasi saat dapat melihat log di Logs Explorer yang dikecualikan dengan sink. Anda masih dapat melihat log ini jika salah satu kondisi berikut terpenuhi:

  • Anda menjalankan kueri di project Google Cloud yang menghasilkan log.

    Untuk memperbaikinya, pastikan Anda menjalankan kueri di project Google Cloud yang benar.

  • Log yang dikecualikan dikirim ke beberapa bucket log; Anda melihat salinan log yang sama dengan yang ingin dikecualikan.

    Untuk memperbaikinya, periksa sink Anda di halaman Log Router untuk memastikan Anda tidak menyertakan log dalam filter sink lainnya.

  • Anda memiliki akses ke tampilan di bucket log tempat log dikirim. Dalam hal ini, Anda dapat melihat log tersebut secara default.

    Agar tidak melihat log ini di Logs Explorer, Anda dapat mempersempit cakupan penelusuran ke project atau bucket Google Cloud sumber.

Memecahkan masalah penyimpanan log

Mengapa saya tidak dapat menghapus bucket ini?

Jika Anda mencoba menghapus bucket, lakukan langkah-langkah berikut:

  • Pastikan Anda memiliki izin yang benar untuk menghapus bucket. Untuk mengetahui daftar izin yang Anda perlukan, lihat Kontrol akses dengan IAM.

  • Tentukan apakah bucket terkunci dengan mencantumkan atribut bucket. Jika bucket terkunci, periksa periode retensi bucket. Anda tidak dapat menghapus bucket yang terkunci hingga semua log dalam bucket telah memenuhi periode retensi data bucket.

  • Pastikan bucket log tidak memiliki set data BigQuery tertaut. Anda tidak dapat menghapus bucket log dengan set data tertaut.

    Error berikut ditampilkan sebagai respons terhadap perintah delete di bucket log yang memiliki set data tertaut:

    FAILED_PRECONDITION: This bucket is used for advanced analytics and has an active link. The link must be deleted first before deleting the bucket
    

    Untuk mencantumkan link yang terkait dengan bucket log, jalankan perintah [gcloud logging links list][link-list] atau jalankan metode API projects.locations.buckets.links.list.

Akun layanan mana yang merutekan log ke bucket saya?

Untuk menentukan apakah ada akun layanan yang memiliki izin IAM untuk merutekan log ke bucket Anda, lakukan hal berikut:

  1. Di konsol Google Cloud, buka halaman IAM:

    Buka IAM

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah IAM & Admin.

  2. Dari tab Izin, lihat menurut Peran. Anda akan melihat tabel dengan semua peran dan akun utama IAM yang terkait dengan project Google Cloud Anda.

  3. Di kotak teks Filter tabel, masukkan Logs Bucket Writer.

    Anda akan melihat akun utama dengan peran Logs Bucket Writer. Jika akun utama adalah akun layanan, ID-nya akan berisi string .

  4. Opsional: Jika Anda ingin menghapus akun layanan agar tidak dapat merutekan log ke project Google Cloud, pilih kotak centang untuk akun layanan, lalu klik Hapus.

Mengapa saya melihat log untuk project Google Cloud meskipun saya mengecualikannya dari sink _Default?

Anda mungkin melihat log di bucket log dalam project Google Cloud terpusat, yang menggabungkan log dari seluruh organisasi Anda.

Jika Anda menggunakan Logs Explorer untuk mengakses log ini dan melihat log yang Anda kecualikan dari sink _Default, tampilan Anda mungkin disetel ke tingkat project Google Cloud.

Untuk memperbaiki masalah ini, pilih Tampilan log di menu Pertajam cakupan, lalu pilih tampilan log yang terkait dengan bucket _Default di project Google Cloud Anda. Anda tidak akan melihat log yang dikecualikan lagi.