Memecahkan masalah metrik berbasis log

Halaman ini memberikan informasi pemecahan masalah untuk skenario umum saat menggunakan metrik berbasis log di Cloud Logging.

Tidak dapat melihat atau membuat metrik

Metrik berbasis log hanya berlaku untuk satu project Google Cloud atau untuk bucket Logging dalam Google Cloud project. Anda tidak dapat membuat metrik berbasis log untuk resource Google Cloud lain seperti akun penagihan atau organisasi. Metrik berbasis log dihitung untuk log hanya di project atau bucket Google Cloud tempat log diterima.

Untuk membuat metrik, Anda memerlukan izin Identity and Access Management yang benar. Untuk mengetahui detailnya, lihat Kontrol akses dengan IAM: Metrik berbasis log.

Metrik tidak memiliki data log

Ada beberapa kemungkinan alasan data tidak ada dalam metrik berbasis log:

  • Entri log baru mungkin tidak cocok dengan filter metrik Anda. Metrik berbasis log mendapatkan data dari entri log yang cocok yang diterima setelah metrik dibuat. Logging tidak mengisi ulang metrik dari entri log sebelumnya.

  • Entri log baru mungkin tidak berisi kolom yang benar, atau data mungkin tidak dalam format yang benar untuk diekstrak oleh metrik distribusi Anda. Periksa apakah nama kolom dan ekspresi reguler Anda sudah benar.

  • Jumlah metrik Anda mungkin tertunda. Meskipun entri log yang dapat dihitung muncul di Logs Explorer, mungkin perlu waktu hingga 10 menit untuk memperbarui metrik berbasis log di Cloud Monitoring.

  • Entri log yang ditampilkan mungkin dihitung terlambat atau mungkin tidak dihitung sama sekali, karena diberi stempel waktu terlalu jauh di masa lalu atau masa depan. Jika entri log diterima oleh Cloud Logging lebih dari 24 jam yang lalu atau 10 menit pada masa mendatang, entri log tersebut tidak akan dihitung dalam metrik berbasis log.

    Jumlah entri yang terlambat tiba dicatat dalam metrik berbasis log logging.googleapis.com/logs_based_metrics_error_count.

    Contoh: Entri log yang cocok dengan metrik berbasis log terlambat tiba. Acara ini memiliki timestamp pada 20 Februari 2020 pukul 14.30 dan receivedTimestamp pada 21 Februari 2020 pukul 14.45. Entri ini tidak akan dihitung dalam metrik berbasis log.

  • Metrik berbasis log dibuat setelah kedatangan entri log yang mungkin dihitung oleh metrik. Metrik berbasis log mengevaluasi entri log saat disimpan di bucket log; metrik ini tidak mengevaluasi entri log yang disimpan di Logging.

  • Metrik berbasis log memiliki kesenjangan dalam data. Beberapa kesenjangan data dapat terjadi karena sistem yang memproses data metrik berbasis log tidak menjamin persistensi setiap titik data metrik. Jika terjadi kesenjangan, biasanya jarang terjadi dan berdurasi singkat. Namun, jika Anda memiliki kebijakan pemberitahuan yang memantau metrik berbasis log, maka kesenjangan dalam data dapat menyebabkan pemberitahuan palsu. Setelan yang Anda gunakan dalam kebijakan pemberitahuan dapat mengurangi kemungkinan ini.

    Contoh: Entri log "detak jantung" ditulis setiap lima menit, dan metrik berbasis log menghitung jumlah entri log "detak jantung". Kebijakan pemberitahuan menjumlahkan jumlah dalam interval lima menit dan memberi tahu Anda saat totalnya kurang dari satu. Jika deret waktu tidak memiliki poin data, kebijakan pemberitahuan akan menyisipkan nilai sintetis, yang merupakan duplikat dari sampel terbaru dan kemungkinan besar bernilai nol, lalu mengevaluasi kondisi. Oleh karena itu, meskipun satu titik data tidak ada, nilai yang dijumlahkan bisa menjadi nol, yang menyebabkan kebijakan pemberitahuan ini mengirimkan notifikasi.

    Untuk mengurangi risiko pemberitahuan palsu, konfigurasikan kebijakan untuk menghitung beberapa entri log "detak jantung", bukan hanya satu.

Jenis resource adalah "undefined" di Cloud Monitoring

Beberapa jenis resource yang dimonitor Cloud Logging tidak dipetakan langsung ke jenis resource yang dimonitor Cloud Monitoring. Misalnya, saat pertama kali membuat kebijakan pemberitahuan atau diagram dari metrik berbasis log, Anda mungkin melihat bahwa jenis resource adalah "undefined".

Jenis resource tidak ditentukan.

Jenis resource yang dimonitor dipetakan ke global atau jenis resource yang dimonitor berbeda di Cloud Monitoring. Lihat Pemetaan untuk resource hanya Logging untuk menentukan jenis resource yang dipantau yang perlu Anda pilih.

Label dalam notifikasi tidak diselesaikan

Anda membuat metrik berbasis log, lalu membuat kebijakan pemberitahuan untuk memantau metrik berbasis log tersebut. Di kolom dokumentasi kebijakan pemberitahuan, Anda merujuk ke label yang diekstrak menggunakan variabel dalam bentuk ${log.extracted_label.KEY}, dengan KEY adalah nama yang Anda berikan untuk label yang diekstrak. Label tidak diselesaikan dalam notifikasi.

Untuk mengatasi masalah ini, lakukan salah satu tindakan berikut:

  • Hapus konten label yang diekstrak dari dokumentasi. Kebijakan pemberitahuan yang memantau metrik berbasis log tidak dapat mengekstrak data dari entri log.

  • Buat pemberitahuan berbasis log. Kebijakan pemberitahuan ini dapat mengekstrak data dari entri log yang menyebabkan kebijakan pemberitahuan dipicu.

Insiden tidak dibuat atau merupakan positif palsu

Anda dapat memperoleh insiden positif palsu atau situasi saat Monitoring tidak membuat insiden dari metrik berbasis log karena periode perataan untuk kebijakan pemberitahuan terlalu singkat. Anda mungkin mengalami positif palsu dalam skenario berikut:

  • Saat kebijakan pemberitahuan menggunakan logika kurang dari.
  • Saat kebijakan pemberitahuan didasarkan pada kondisi persentil untuk metrik distribusi.
  • Jika ada kesenjangan dalam data metrik.

Insiden positif palsu dapat terjadi karena entri log dapat dikirim ke Logging terlambat. Misalnya, kolom log timestamp dan receiveTimestamp dapat memiliki selisih beberapa menit dalam beberapa kasus. Selain itu, saat Logging menyimpan log di bucket log, ada jeda waktu yang melekat antara saat entri log dibuat dan saat Logging menerimanya. Artinya, Logging mungkin tidak memiliki jumlah total untuk entri log tertentu hingga beberapa waktu setelah entri log dibuat. Itulah sebabnya kebijakan pemberitahuan yang menggunakan logika kurang dari atau berdasarkan kondisi persentil untuk metrik distribusi dapat menghasilkan pemberitahuan positif palsu: belum semua entri log diperhitungkan.

Namun, metrik berbasis log pada akhirnya konsisten karena entri log yang cocok dengan metrik berbasis log dapat dikirim ke Logging dengan timestamp yang jauh lebih lama atau lebih baru daripada receiveTimestamp log.

Artinya, metrik berbasis log dapat menerima entri log dengan stempel waktu yang lebih lama setelah entri log yang ada dengan stempel waktu yang sama telah diterima oleh Logging. Oleh karena itu, nilai metrik harus diperbarui.

Agar notifikasi tetap akurat meskipun untuk data tepat waktu, sebaiknya tetapkan periode penyesuaian untuk kondisi setidaknya 10 menit. Khususnya, nilai ini harus cukup besar untuk memastikan bahwa beberapa entri log yang cocok dengan filter Anda dihitung. Misalnya, jika metrik berbasis log menghitung entri log "detak jantung", yang diharapkan setiap N menit, tetapkan periode penyelarasan ke 2N menit atau 10 menit, mana saja yang lebih besar:

  • Jika Anda menggunakan konsol Google Cloud , gunakan menu Periode rolling untuk menetapkan periode perataan.

  • Jika Anda menggunakan API, gunakan kolom aggregations.alignmentPeriod dari kondisi untuk menetapkan periode perataan.

Metrik memiliki terlalu banyak deret waktu

Jumlah deret waktu dalam metrik bergantung pada jumlah kombinasi nilai label yang berbeda. Jumlah deret waktu disebut kardinalitas metrik, dan tidak boleh melebihi 30.000.

Karena Anda dapat membuat deret waktu untuk setiap kombinasi nilai label, jika Anda memiliki satu atau beberapa label dengan jumlah nilai yang tinggi, tidak sulit untuk melampaui 30.000 deret waktu. Anda harus menghindari metrik berkardinalitas tinggi.

Seiring bertambahnya kardinalitas metrik, metrik dapat dibatasi dan beberapa titik data mungkin tidak ditulis ke metrik. Diagram yang menampilkan metrik dapat lambat dimuat karena banyaknya deret waktu yang harus diproses oleh diagram. Anda juga dapat dikenai biaya untuk panggilan API guna membuat kueri data deret waktu; tinjau bagian Cloud Monitoring di halaman Harga Google Cloud Observability.

Untuk menghindari pembuatan metrik dengan kardinalitas tinggi:

  • Periksa apakah kolom label dan ekspresi reguler ekstraktor Anda cocok dengan nilai yang memiliki kardinalitas terbatas.

    Misalnya, jangan simpan ukuran, jumlah, atau durasi dalam label. Selain itu, jangan menyimpan kolom seperti URL, alamat IP, atau ID unik, karena semuanya dapat menghasilkan sejumlah besar deret waktu.

  • Hindari mengekstrak pesan teks yang dapat berubah, tanpa batas, sebagai nilai label.

  • Hindari mengekstrak nilai numerik dengan kardinalitas tanpa batas.

  • Hanya ekstrak nilai dari label dengan kardinalitas yang diketahui; misalnya, kode status dengan sekumpulan nilai yang diketahui.

Metrik berbasis log sistem ini dapat membantu Anda mengukur efek penambahan atau penghapusan label pada kardinalitas metrik Anda:

Saat memeriksa metrik ini, Anda dapat memfilter hasil lebih lanjut menurut nama metrik. Untuk mengetahui detailnya, lihat Memilih metrik: memfilter.

Nama metrik tidak valid

Saat membuat metrik penghitung atau distribusi, pilih nama metrik yang unik di antara metrik berbasis log di project Google Cloud Anda.

String nama metrik tidak boleh melebihi 100 karakter dan hanya boleh menyertakan karakter berikut:

  • A-Z
  • a-z
  • 0-9
  • Karakter khusus _-.,+!*',()%\/.

    Karakter garis miring / menunjukkan hierarki bagian dalam nama metrik dan tidak boleh menjadi karakter pertama pada nama.

Nilai metrik tidak benar

Anda menyadari bahwa nilai yang dilaporkan untuk metrik berbasis log terkadang berbeda dengan jumlah entri log yang dilaporkan oleh Logs Explorer.

Untuk meminimalkan perbedaan, lakukan hal berikut:

  • Pastikan aplikasi tidak mengirim entri log duplikat. Entri log dianggap sebagai duplikat jika memiliki timestamp dan insertId yang sama. Logs Explorer otomatis menyembunyikan entri log duplikat. Namun, metrik berbasis log menghitung setiap entri log yang cocok dengan filter untuk metrik tersebut.

  • Pastikan entri log dikirim ke Cloud Logging saat stempel waktunya kurang dari 24 jam yang lalu atau kurang dari 10 menit ke depan. Entri log yang stempel waktunya tidak berada dalam batas ini tidak dihitung oleh metrik berbasis log.

Anda tidak dapat menghilangkan kemungkinan adanya log duplikat. Jika terjadi error internal selama penanganan entri log, proses percobaan ulang akan dipanggil oleh Cloud Logging. Proses percobaan ulang dapat menyebabkan entri log duplikat. Jika ada entri log duplikat, nilai metrik berbasis log mungkin terlalu besar karena metrik ini menghitung setiap entri log yang cocok dengan filter untuk metrik.

Nilai label terpotong

Nilai untuk label yang ditentukan pengguna tidak boleh melebihi 1.024 byte.

Tidak dapat menghapus metrik log kustom

Anda mencoba menghapus metrik berbasis log kustom menggunakan konsol Google Cloud . Permintaan penghapusan gagal dan dialog penghapusan menampilkan pesan error There is an unknown error while executing this operation.

Untuk mengatasi masalah ini, coba langkah-langkah berikut:

  • Muat ulang halaman Log-based metrics di konsol Google Cloud . Pesan error mungkin ditampilkan karena masalah pengaturan waktu internal.

  • Identifikasi dan hapus kebijakan pemberitahuan yang memantau metrik berbasis log. Setelah Anda memverifikasi bahwa metrik berbasis log tidak dipantau oleh kebijakan pemberitahuan, hapus metrik berbasis log. Metrik berbasis log yang dipantau oleh kebijakan pemberitahuan tidak dapat dihapus.