Memecahkan masalah pemilihan rute dan penyimpanan log

Dokumen ini menjelaskan masalah umum terkait pemilihan rute dan penyimpanan, 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, baca Melihat log di tujuan sink.

Memecahkan masalah log pemilihan rute

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

Tujuan berisi log yang tidak diinginkan

Anda sedang melihat log yang dirutekan ke suatu 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, anggap Anda membuat sink gabungan untuk merutekan log dalam 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 dengan menggunakan operator logical-OR untuk menggabungkan klausa logName.

Tujuan tidak memiliki log

Mungkin masalah paling umum terkait sink adalah log tampaknya hilang dari tujuan sink.

Dalam beberapa kasus, error tidak dibuat, tetapi Anda mungkin melihat bahwa log tidak tersedia saat Anda mencoba mengaksesnya di tujuan. Jika Anda mencurigai bahwa sink Anda tidak merutekan 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 berdasarkan nama sink dan nama tujuan, serta memberi tahu Anda apakah sink Anda berhasil merutekan data log atau gagal. Untuk mengetahui detail tentang cara melihat metrik, baca Melihat metrik berbasis log.

Jika metrik sink Anda menunjukkan bahwa sink Anda tidak berperforma seperti yang diharapkan, berikut beberapa kemungkinan penyebabnya dan tindakan yang harus dilakukan:

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 log di tujuan. Log yang terlambat sangat umum untuk sink yang telah mengonfigurasi bucket Cloud Storage sebagai tujuannya. Coba tunggu beberapa jam dan periksa lagi tujuan Anda.

Cakupan/filter tampilan salah

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

    Cakupan penelusuran Anda ke satu atau beberapa tampilan penyimpanan seperti berikut:

    • Jika Anda menggunakan Logs Explorer, gunakan tombol Refine scope.

    • 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 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 ingin Anda lihat di tujuan.

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

Lihat error

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

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

  • Lihat log error yang dibuat untuk sink.
  • Terima notifikasi error sink melalui email.

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, baca artikel Melihat log menggunakan Logs Explorer.

Anda dapat menggunakan kueri berikut di panel query-editor 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 Router Log di Konsol Google Cloud.

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

Misalnya, jika nama sink Anda adalah my-sink-123, entri log mungkin akan terlihat mirip dengan contoh berikut:

{
  "textPayload": "Cloud Logging export config error in my-logs-project, export sink my-sink-123: dataset_not_found ()",
  "insertId": "12akhzyb14452",
  "resource": {
    "type": "logging_sink",
    "labels": {
      "project_id": "my-logs-test-project",
      "destination": "",
      "name": "my-sink-123"
    }
  },
  "timestamp": "2021-08-02T17:01:28.620961700Z",
  "severity": "ERROR",
  "labels": {
    "error_code": "dataset_not_found",
    ...
    "destination": "bigquery.googleapis.com/projects/my-logs-project/datasets/my-dataset",
    "sink_id": "my-sink-123",
    "activity_type_name": "LoggingSinkConfigErrorV2"
  },
  "logName": "projects/cloud-logs-test-project/logs/logging.googleapis.com%2Fsink_error",
  "receiveTimestamp": "2021-08-02T17:01:30.148869575Z"
}

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 mana dari sink yang perlu dikonfigurasi ulang.

Untuk memperbarui sink, gunakan Router Log.

Di panel navigasi konsol Google Cloud, pilih Logging, lalu pilih Log Router:

Buka Router Log

Notifikasi email

Jika Anda berlangganan project Google Cloud atau resource induknya sebagai Technical Essential Contact, Anda akan menerima notifikasi email error konfigurasi sink. Jika tidak ada Kontak Penting Teknis yang dikonfigurasi untuk suatu resource, pengguna yang terdaftar sebagai IAM Project Owner 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.
  • Sink destination: Jalur lengkap tujuan perutean sink; misalnya, bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID
  • Kode error: Deskripsi singkat kategori error; misalnya, dataset_not_found
  • Detail error: Informasi mendetail tentang error, termasuk rekomendasi untuk memecahkan masalah error yang mendasarinya.

Untuk melihat dan mengelola sink, gunakan Router Log.

Di panel navigasi konsol Google Cloud, pilih Logging, lalu pilih Log Router:

Buka Router Log

Setiap error konfigurasi sink yang diterapkan pada resource akan muncul dalam daftar sebagai Cloud Logging sink configuration error. Setiap {i>error<i} berisi tautan ke salah satu entri log yang dihasilkan oleh {i>sink<i} yang salah. 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 telah menyiapkan sink, tetapi kemudian melihat error konfigurasi bahwa tujuan tidak dapat ditemukan saat Logging mencoba merutekan log, berikut adalah beberapa kemungkinan alasannya:

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

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

  • Tujuan yang ditentukan mungkin telah dihapus.

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

Dalam kedua kasus tersebut, untuk memperbaiki masalah, buka halaman Router Log.

Di panel navigasi konsol Google Cloud, pilih Logging, lalu pilih 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 agar perubahan pada sink diterapkan.

Masalah izin

Jika 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 tersebut.

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

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

Ada sedikit penundaan antara membuat sink dan menggunakan akun layanan baru sink untuk mengizinkan penulisan ke tujuan. Sink Anda mulai merutekan log saat ada izin yang diperbaiki dan log baru yang cocok dengan filter Anda akan diterima oleh Logging.

Masalah kebijakan organisasi

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

Jika melihat error terkait kebijakan organisasi, Anda dapat melakukan hal 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. Untuk mengetahui petunjuknya, lihat Membuat dan mengedit kebijakan.

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

    Di panel navigasi konsol Google Cloud, pilih Logging, lalu pilih Log Router:

    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 masalah yang mungkin terjadi dan cara untuk 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 valid yang terkait dengan project Google Cloud yang berisi kunci tersebut.

    • Pastikan ada akun penagihan yang ditautkan ke project Google Cloud yang valid dan berisi kunci tersebut. 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 tertaut ke project 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 regionnya cocok dengan tujuan sink.

  • Akses kunci enkripsi ditolak ke 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 tersebut izin yang memadai untuk mengenkripsi atau mendekripsi data.

    • Berikan peran CryptoKey Encrypter/Decrypter pada 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 penyisipan streaming per tabel telah terlampaui untuk tabel tertentu dalam set data Anda. Dalam hal ini, sink Anda mungkin mengarahkan terlalu banyak entri log terlalu cepat. Konsep yang sama berlaku untuk tujuan sink lain yang didukung, misalnya untuk topik Pub/Sub.

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

Sink mulai merutekan log ke tujuan setelah Anda memperbarui sink agar cocok dengan entri log yang lebih sedikit atau saat kuota Anda dimuat ulang.

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

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

Terjadi error saat memilih rute ke Cloud Storage

Berikut adalah error yang paling umum terjadi saat merutekan 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 ("Tambahkan") menyimpan entri log yang terlambat dikirim. Jika tujuan Cloud Storage mengalami gangguan, Cloud Logging akan mem-buffer data hingga gangguan tersebut selesai.

  • Tidak dapat memberikan izin yang benar ke tujuan:

    • Meskipun sink berhasil dibuat dengan izin akun layanan yang benar, pesan error ini akan ditampilkan jika model kontrol akses untuk bucket Cloud Storage ditetapkan ke akses seragam saat bucket dibuat.

    • Untuk bucket Cloud Storage yang sudah ada, Anda dapat mengubah model kontrol akses selama 90 hari pertama setelah pembuatan bucket menggunakan tab Izin. Untuk bucket baru, pilih model kontrol akses Fine-tuning selama pembuatan bucket. Untuk mengetahui detailnya, lihat Membuat bucket Cloud Storage.

Error saat mengarahkan ke BigQuery

Berikut adalah error yang paling umum terjadi saat mengarahkan log ke BigQuery:

  • Skema tabel tidak valid:

    • Log yang di-streaming ke tabel di set data BigQuery tidak cocok dengan skema tabel saat ini. Masalah umumnya 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 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 level.

    Jika BigQuery mengidentifikasi ketidakcocokan skema, BigQuery akan membuat tabel dalam set data yang sesuai untuk menyimpan informasi error. Jenis tabel menentukan nama tabel. Untuk tabel shard 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 di 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 sudah terlalu jauh di masa lalu atau di masa mendatang.

    • Anda dapat memperbarui sink untuk mengarahkan 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 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 agar berada di project Google Cloud yang memiliki akun penagihan valid yang ditautkan ke project tersebut.

  • Set data berisi entri log duplikat:

    • Entri log duplikat dapat terjadi saat 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 menghilangkan entri log duplikasi.

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

    SELECT DISTINCT insertId, timestamp FROM TABLE_NAME
    

Error saat memilih rute ke bucket Cloud Logging

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

  • Anda menjalankan kueri di project Google Cloud yang membuat 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 yang ingin Anda kecualikan.

    Untuk memperbaikinya, periksa sink di halaman Router Log 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 menyaring cakupan penelusuran untuk project atau bucket Google Cloud sumber.

Memecahkan masalah penyimpanan log

Mengapa saya tidak dapat menghapus bucket ini?

Jika Anda ingin menghapus bucket, lakukan langkah berikut:

  • Pastikan Anda memiliki izin yang tepat 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 sampai semua log dalam bucket 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 menampilkan daftar 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 mengarahkan log ke bucket saya?

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

  1. Pada panel navigasi Konsol Google Cloud, pilih IAM:

    Buka IAM

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

  3. Dalam 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 gserviceaccount.com.

  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 Remove.

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

Anda mungkin melihat log di bucket log pada 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 memiliki cakupan untuk level project Google Cloud.

Untuk memperbaiki masalah ini, pilih Scope by storage di panel Refine scope, lalu pilih bucket _Default di project Google Cloud Anda. Anda tidak akan melihat log yang dikecualikan lagi.