Memecahkan masalah konfigurasi Log Analytics

Dokumen ini menunjukkan cara menyelesaikan error yang mungkin terjadi saat menggunakan halaman Log Analytics di konsol Google Cloud.

Pesan error

Bagian ini menjelaskan pesan error yang mungkin Anda lihat, dan cara menyelesaikan kondisi error yang sesuai.

Pesan error No completion signal within allotted timeframe

Anda memasukkan kueri SQL dan memilih Run query. Kueri tidak selesai dan Anda melihat pesan error berikut:

The query failed to execute and return results due to error: No completion signal within allotted timeframe.

Untuk mengatasi error ini, lakukan salah satu tindakan berikut:

  • Perpendek interval kueri log, lalu coba lagi kueri tersebut. Misalnya, jika interval kueri adalah 14 hari, perpendek interval menjadi 7 hari, lalu jalankan kueri.

  • Buat set data BigQuery tertaut, lalu jalankan kueri dari antarmuka BigQuery. Antarmuka BigQuery mendukung kueri yang memerlukan waktu eksekusi lebih lama daripada antarmuka Cloud Logging. Untuk mengetahui informasi selengkapnya, lihat artikel Membuat kueri set data BigQuery tertaut.

Kueri terhadap bucket dengan pesan error kunci CMEK yang berbeda

Anda memasukkan kueri SQL yang mengkueri beberapa bucket log dan memilih Run query. Kueri tidak selesai dan Anda melihat pesan error berikut:

Queries against buckets with distinct CMEK keys must have a key configured in the LogSettings.

Untuk mengatasi situasi ini, lakukan salah satu tindakan berikut:

  • Konfigurasikan bucket log Anda untuk menggunakan kunci Cloud Key Management Service (Cloud KMS) yang sama.
  • Jika bucket log berada di lokasi yang sama, Anda dapat mengonfigurasi folder atau organisasi yang merupakan resource induk untuk bucket log dengan kunci Cloud KMS default. Kunci default induk harus berada di lokasi yang sama dengan bucket log. Dengan konfigurasi ini, kunci default induk akan meng-enkripsi data sementara apa pun yang dihasilkan oleh kueri Log Analytics. Untuk mengetahui informasi selengkapnya, lihat Batasan Log Analytics.

Klausa FROM harus berisi tepat satu pesan error tampilan

Anda memasukkan kueri SQL di panel kueri halaman Log Analytics di konsol Google Cloud, tetapi parser SQL menampilkan error berikut:

FROM clause must contain exactly one log view

Error sebelumnya dilaporkan saat tabel yang ditentukan dalam pernyataan FROM tidak dapat di-resolve ke tampilan log tertentu.

Untuk mengatasi error ini, pastikan nama tabel Anda memiliki sintaksis yang benar:

  • Pastikan nama tabel mengikuti sintaksis yang diperlukan oleh skema penamaan Log Analytics. BigQuery dan Log Analytics memiliki persyaratan yang berbeda untuk nama tabel. Anda dapat menemukan sintaksis yang diperlukan untuk nama tabel dengan melihat kueri default.

  • Jika ID project, region, ID bucket, atau ID tampilan Google Cloud dari bucket log berisi karakter titik, (.), pastikan setiap kolom ini diapit oleh tanda petik terbalik tunggal, (`).

    Misalnya, jika project ID Google Cloud adalah example.com:bluebird, untuk membuat kueri tampilan _AllLogs dari bucket log _Default, gunakan sintaksis berikut untuk menentukan tabel:

    
    SELECT *
    FROM `example.com:bluebird`.`global`.`_Default`.`_AllLogs`
    

    Kueri sebelumnya mengasumsikan bahwa bucket _Default berada di region global.

Tidak dapat menyimpan kueri

Jika Anda memasukkan dan menjalankan kueri SQL dan Simpan dinonaktifkan, setelan resource default organisasi atau folder Anda akan menentukan lokasi yang tidak diizinkan oleh kebijakan organisasi. Untuk mengatasinya, minta administrator organisasi Anda untuk menentukan lokasi di setelan resource default yang cocok dengan lokasi yang diizinkan oleh kebijakan organisasi Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi setelan default untuk organisasi dan folder.

Jika tombol Save diaktifkan, tetapi Anda tidak dapat menyelesaikan dialog dan menyimpan kueri, lakukan hal berikut:

  1. Pastikan kueri tidak berisi error sintaksis. Anda hanya dapat menyimpan kueri yang valid.
  2. Opsional: Salin kueri ke papan klip Anda.
  3. Muat ulang halaman.
  4. Jika Anda menyalin kueri ke papan klip, tempel kueri tersebut ke panel Query, jalankan kueri, lalu lakukan operasi simpan.

Akses ditolak ke halaman Log Analytics

Anda membuka halaman Log Analytics di konsol Google Cloud, dan pesan error izin ditolak akan ditampilkan.

Untuk mendapatkan izin yang Anda perlukan guna memuat halaman Log Analytics, menjalankan kueri, dan melihat log, minta administrator untuk memberi Anda peran IAM berikut di project Anda:

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus, atau Logging peran standar.

Izin yang Anda perlukan untuk melihat entri log dan menjalankan kueri di halaman Log Analytics sama dengan izin yang Anda perlukan untuk melihat log di halaman Logs Explorer. Untuk mengetahui informasi tentang peran tambahan yang Anda perlukan untuk membuat kueri tampilan di bucket yang ditentukan pengguna atau untuk membuat kueri tampilan _AllLogs dari bucket log _Default, lihat Peran Cloud Logging.

Upgrade bucket log untuk menggunakan Log Analytics gagal

Anda membuat bucket log dan memilih opsi untuk menggunakan Log Analytics, atau mengupgrade bucket log yang ada untuk menggunakan Log Analytics. Upgrade gagal dengan kondisi error yang mirip dengan:

Failed precondition (HTTP 400): Constraint "my-constraint" violated for PROJECT_ID  with location global.

Pesan error sebelumnya menunjukkan bahwa organisasi Anda telah mengonfigurasi kebijakan organisasi yang membatasi region yang dapat digunakan. Bucket log yang memenuhi syarat untuk diupgrade agar dapat menggunakan Log Analytics harus menggunakan region global. Jika Anda dapat menghapus kebijakan organisasi yang membatasi penggunaan region global, Anda dapat mengupgrade bucket log. Jika tidak, Anda tidak dapat mengupgrade bucket log.

Pembuatan set data BigQuery tertaut gagal

Anda mengedit bucket log untuk membuat set data BigQuery tertaut atau membuat bucket log baru dan memilih opsi untuk membuat set data tertaut; tetapi, set data tertaut tidak dibuat.

Untuk mengatasi error ini, minta administrator sistem untuk project Google Cloud memberi Anda peran IAM yang menyertakan izin berikut:

  • logging.links.create

Izin sebelumnya disertakan dalam peran Logging Admin (roles/logging.admin) dan Logs Configuration Writer (roles/logging.configWriter).

Untuk mengetahui informasi tentang peran dan izin, lihat Kontrol akses dengan IAM.

Penghapusan set data BigQuery tertaut gagal

Anda tidak ingin lagi set data tertaut, tetapi opsi untuk menghapus set data tersebut dinonaktifkan.

Untuk mengatasi error ini, minta administrator sistem untuk project Google Cloud memberi Anda peran IAM yang menyertakan izin berikut:

  • logging.links.delete

Izin sebelumnya disertakan dalam peran Logging Admin (roles/logging.admin) dan Logs Configuration Writer (roles/logging.configWriter).

Izin ini memungkinkan Anda menghapus set data tertaut dari halaman Logs Storage di konsol Google Cloud. Untuk mengetahui informasi selengkapnya tentang peran dan izin, lihat Kontrol akses dengan IAM.

Tombol setelan mesin kueri tidak ada

Jika tombol Setelan tidak ditampilkan di samping tombol Jalankan kueri, berarti project Google Cloud Anda tidak mengaktifkan slot BigQuery yang dicadangkan. Untuk mengaktifkan tombol Setelan , konfigurasikan slot BigQuery yang direservasi untuk project Anda.

Tombol Run on BigQuery dinonaktifkan

Jika tombol Run on BigQuery ditampilkan, tetapi dinonaktifkan, tampilan log yang dirujuk oleh kueri Anda tidak memiliki set data tertaut. Untuk menjalankan kueri pada reservasi slot BigQuery, buat set data BigQuery tertaut di tampilan log.

Tidak Ada Akun Layanan Pemantauan

Anda ingin membuat kebijakan pemberitahuan untuk memantau hasil kueri SQL. Langkah-langkah penyiapan mengharuskan Anda memberikan peran IAM ke Akun Layanan Monitoring, tetapi akun tersebut tidak ada.

Akun Layanan Monitoring disebut agen layanan, karena dibuat dan dikelola oleh Google Cloud. Akun dibuat secara otomatis saat Anda mengonfigurasi resource atau layanan yang memerlukan akun. Misalnya, jika Anda membuat saluran notifikasi Pub/Sub, tindakan tersebut dapat menyebabkan Akun Layanan Pemantauan dibuat. Bergantung pada alur pembuatan, Akun Layanan Pemantauan mungkin diberi peran Monitoring Service Agent (monitoring.NotificationServiceAgent) di project Anda. Anda dapat mengubah peran yang diberikan ke akun.

Jika Akun Layanan Pemantauan tidak ada, untuk membuat kebijakan pemberitahuan yang memantau hasil kueri SQL, Anda perlu melakukan hal berikut:

  1. Buat agen layanan secara manual. Untuk informasi tentang langkah ini, lihat Membuat dan memberikan peran untuk agen layanan.

  2. Berikan peran yang diperlukan ke agen layanan. Untuk mengetahui informasi tentang peran ini, lihat Memantau hasil kueri SQL: Sebelum memulai.

Ada entri log duplikat di hasil Log Analytics saya

Anda menjalankan kueri yang menghitung atau melaporkan entri duplikat. Karena Logs Explorer menghapus entri duplikat berdasarkan nama log, stempel waktu, dan ID penyisipan, Anda mengharapkan Log Analytics menghapus duplikat entri log sebelum kueri dijalankan.

Log Analytics tidak melakukan jenis penghapusan duplikat yang sama dengan yang dilakukan oleh Logs Explorer.

Untuk mengatasi entri log duplikat, coba langkah-langkah berikut:

  1. Tentukan apakah entri log duplikat memiliki nilai stempel waktu terima yang berbeda. Jika stempel waktu berbeda, hal ini menunjukkan bahwa data yang sama ditulis ke Logging beberapa kali.

    Untuk mengatasi penulisan duplikat, selidiki integrasi logging Anda untuk menemukan pesan error atau kesalahan konfigurasi.

  2. Jika bucket Anda dikonfigurasi untuk menggunakan kunci Cloud Key Management Service, pastikan Anda berada dalam kuota dan kunci Anda secara konsisten dapat diakses. Melampaui kuota atau kehilangan akses kunci dapat menyebabkan entri log duplikat.

    Untuk mengatasi kegagalan ini, pastikan Anda tidak melebihi kuota dan kunci Anda dapat diakses.

  3. Ubah kueri Anda untuk menghapus entri log duplikat.

    Misalnya, asumsikan bahwa payload JSON berisi fieldA dan fieldB, yang pertama adalah string dan yang kedua adalah numerik. Selain itu, asumsikan bahwa payload JSON berisi kolom berlabel server, yang berisi string. Selanjutnya, pertimbangkan kueri berikut:

    SELECT
      JSON_VALUE(json_payload.fieldA) AS fieldA
      SUM(IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0)) AS sum_fieldB
    FROM
      `TABLE_NAME_OF_LOG_VIEW`
    WHERE
      JSON_VALUE(json_payload.server) = "test"
    GROUP BY
      fieldA;
    

    Anda dapat mengubah kueri untuk menghapus entri log duplikat, dengan nama log, stempel waktu, dan ID penyisipan diperiksa untuk menentukan apakah entri log merupakan duplikat:

    WITH
      deduplicated AS (
      SELECT
        JSON_VALUE(json_payload.fieldA) AS fieldA
        IFNULL(SAFE_CAST(JSON_VALUE(json_payload.fieldB) AS INT64), 0) AS fieldB
      FROM
        `TABLE_NAME_OF_LOG_VIEW` a
      WHERE
        JSON_VALUE(json_payload.server) = "test"
      QUALIFY
        ROW_NUMBER() OVER (PARTITION BY a.log_name, a.timestamp, a.insert_id ) = 1 )
    
    SELECT
      fieldA,
      SUM(fieldB) AS sum_fieldB
    FROM
      deduplicated
    GROUP BY
      fieldA;