Memecahkan masalah pemilihan rute dan penyimpanan log

Dokumen ini menjelaskan masalah umum perutean dan penyimpanan serta cara menggunakan konsolGoogle Cloud untuk melihat dan memecahkan masalah kesalahan konfigurasi atau hasil yang tidak terduga.

Untuk mengetahui informasi umum tentang cara melihat data log, lihat Melihat log di tujuan sink.

Memecahkan masalah perutean log

Bagian ini menjelaskan cara memecahkan masalah umum saat merutekan entri log.

Tujuan berisi entri log yang tidak diinginkan

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

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

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

logName:projects/PROJECT_ID

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

Entri log tujuan tidak ada

Masalah terkait sink yang paling umum adalah entri log yang tampaknya tidak ada di tujuan sink.

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

  • 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 entri log atau gagal. Untuk mengetahui detail tentang cara melihat metrik, lihat Ringkasan metrik berbasis log.

Jika metrik sinkronisasi menunjukkan bahwa sinkronisasi tidak berjalan seperti yang Anda harapkan, berikut beberapa kemungkinan penyebab dan cara mengatasinya:

Latensi

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

    Coba tunggu selama satu jam dan periksa kembali tujuan Anda.

  • Entri log yang cocok terlambat tiba.

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

Cakupan/filter tampilan salah

  • Cakupan yang Anda gunakan untuk melihat entri log yang disimpan di bucket log salah.

    Cakupan penelusuran Anda ke satu atau beberapa tampilan log sebagai berikut:

  • Rentang waktu yang Anda gunakan untuk memilih dan melihat data di tujuan sink Anda terlalu sempit.

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

Error di filter sink

  • Filter sink salah dan tidak mencatat entri 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 mengetahui 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 dikonfigurasi dengan tidak 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 sinkronisasi 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 entri 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 mirip dengan berikut ini:

{
   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 bertingkatnya 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 yang perlu dikonfigurasi ulang.

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

Buka Log Router

Notifikasi email

Kontak Penting mengirimkan notifikasi email error konfigurasi sink ke kontak yang ditetapkan ke kategori notifikasi Teknis untuk project atau resource induknya. Google Cloud 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 resourceGoogle Cloud lain tempat sink dikonfigurasi.
  • Nama sink: Nama sink yang berisi error konfigurasi.
  • Tujuan sink: Jalur lengkap tujuan perutean 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 tujuan sink, gunakan halaman Log Router:

Buka Log Router

Semua error konfigurasi sink yang berlaku untuk resource 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 sinkronisasi

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 entri log, berikut beberapa kemungkinan alasannya:

  • Konfigurasi sink Anda berisi salah eja 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. Misalnya, Anda dapat mengedit sink menggunakan halaman Log Router:

Buka Log Router

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

Mengelola masalah sinkronisasi

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

Masalah izin

Saat 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 projectGoogle Cloud yang sama, konsol Google Cloud biasanya menetapkan izin ini secara otomatis. Namun, jika Anda membuat sink di projectGoogle Cloud yang berbeda, atau menggunakan gcloud CLI atau Logging API, Anda harus mengonfigurasi izin secara manual.

Jika Anda melihat error terkait izin untuk tujuan Anda, tambahkan izin yang diperlukan atau perbarui tujuan Anda 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 baru sink untuk mengizinkan penulisan ke tujuan. Sink Anda mulai merutekan entri log saat izin diperbaiki dan entri 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 untuk menulis ke tujuan sink, maka sink tidak dapat merutekan ke tujuan yang dipilih dan melaporkan error.

Jika Anda melihat error terkait kebijakan organisasi, Anda dapat melakukan tindakan berikut:

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

    Anda dapat memeriksa apakah ada Pembatasan Lokasi Resource (constraints/gcp.resourceLocations). 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 mengetahui daftar kemungkinan batasan, lihat Batasan kebijakan organisasi.

    Untuk mengetahui petunjuknya, lihat Membuat dan mengedit kebijakan.

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

    Buka Log Router

Sink Anda mulai merutekan entri log saat kebijakan organisasi tidak lagi memblokir sink untuk menulis ke tujuan dan entri 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 maupun oleh Anda, untuk mengenkripsi data di tujuan sink, Anda mungkin melihat error terkait. Berikut 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 ditautkan ke Google Cloud project yang berisi kunci. Jika akun penagihan tidak ditautkan ke Google Cloud project, aktifkan penagihan untuk project Google Cloud tersebut atau gunakan kunci Cloud KMS yang ada dalam project Google Cloud yang telah ditautkan ke akun penagihan yang valid.

  • 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, maka enkripsi akan gagal dan sink tidak dapat merutekan data ke tujuan tersebut.

    • Gunakan kunci Cloud KMS yang ada dalam project Google Cloud yang regionnya 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 memberikan izin yang memadai kepada akun layanan untuk mengenkripsi atau mendekripsi data.

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

Masalah kuota

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

Misalnya, saat merutekan data ke BigQuery, Anda mungkin melihat error yang memberi tahu Anda bahwa kuota penyisipan streaming 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 yang didukung lainnya, misalnya untuk 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 kecil dari jumlah total entri log.

Jika kuota tersedia, sink Anda akan merutekan entri log ke tujuan sink.

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

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

Error perutean ke Cloud Storage

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

  • Entri log yang terlambat tiba:

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

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

  • Tidak dapat memberikan izin yang tepat untuk tujuan:

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

Error saat merutekan ke BigQuery

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

  • Skema tabel tidak valid:

    • Entri log yang di-streaming ke tabel di set data BigQuery Anda tidak cocok dengan skema tabel saat ini. Masalah umum mencakup upaya 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 sesuai 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 menurut tanggal, format penamaannya adalah export_errors_YYYYMMDD. Untuk tabel berpartisi, format penamaannya adalah export_errors. Untuk mengetahui informasi tentang skema tabel error dan tentang cara mencegah ketidakcocokan jenis kolom pada masa mendatang, lihat Ketidakcocokan dalam skema.

  • Entri log berada di luar batas waktu yang diizinkan:

    • Entri log yang di-streaming ke tabel BigQuery berpartisi berada di luar batas waktu yang diizinkan. BigQuery tidak menerima entri log yang terlalu jauh di masa lalu atau masa depan.

    • Anda dapat memperbarui sink untuk merutekan entri 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 melakukan penulisan padanya:

    • 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 Google Cloud project yang berisi tujuan sink.

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

  • Dataset berisi entri log duplikat:

    • Entri log duplikat dapat terjadi jika ada kegagalan dalam streaming entri 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
    
  • Entri log diisi ulang setelah insiden Cloud Logging:

    Logging otomatis membuat tabel dengan awalan backfill_ sebagai bagian dari operasi pengisian ulang yang terjadi saat insiden Cloud Logging mencegah perutean data log ke BigQuery.

    Tabel dengan awalan backfill_ berisi semua entri log yang akan dirutekan ke BigQuery selama rentang waktu insiden. Tabel ini mungkin berisi beberapa entri log yang berhasil diarahkan ke tabel yang ditentukan oleh sink.

    Untuk mencegah duplikasi data, sebaiknya gabungkan data dari tabel pengisian ulang ke tabel asli, lalu hapus tabel pengisian ulang.

Error saat merutekan ke bucket Cloud Logging

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

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

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

  • Entri log yang dikecualikan dikirim ke beberapa bucket log; Anda melihat salinan log yang sama yang seharusnya Anda kecualikan.

    Untuk memperbaikinya, periksa sink Anda di halaman Log Router untuk memverifikasi bahwa Anda tidak menyertakan entri log dalam filter sink lain.

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

    Untuk menghindari melihat entri log ini di Logs Explorer, Anda dapat memperbaiki cakupan penelusuran ke project atau bucket Google Cloud sumber Anda.

Memecahkan masalah penyimpanan log

Mengapa saya tidak dapat menghapus bucket ini?

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

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

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

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 Google Cloud konsol, 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 yang berisi semua peran dan akun utama IAM yang terkait dengan projectGoogle Cloud .

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

    Anda akan melihat akun utama apa pun dengan peran Penulis Bucket Log. Jika akun utama adalah akun layanan, ID-nya berisi string .

  4. Opsional: Jika Anda ingin menghapus kemampuan akun layanan untuk merutekan log ke project Google Cloud Anda, pilih kotak centang untuk akun layanan tersebut, 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 projectGoogle Cloud .

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