Memantau hasil kueri SQL dengan kebijakan pemberitahuan

Dokumen ini menjelaskan cara membuat kebijakan pemberitahuan untuk memantau hasil kueri yang Anda jalankan di Log Analytics. Kueri ini ditulis dalam SQL dan harus membuat kueri tampilan log. Kebijakan pemberitahuan akan memberi tahu Anda saat hasil kueri memenuhi kondisi yang Anda tentukan. Misalnya, Anda dapat mengonfigurasi kebijakan pemberitahuan sehingga Anda akan diberi tahu jika setidaknya 25% entri log dalam periode tertentu memiliki tingkat keparahan ERROR.

Kebijakan pemberitahuan yang Anda buat dari halaman Log Analytics berjalan di mesin BigQuery. Oleh karena itu, data yang dikueri harus dapat diakses melalui set data BigQuery yang ditautkan. Oleh karena itu, kueri SQL ini hanya dapat membuat kueri tampilan log. Mereka tidak dapat membuat kueri tampilan analisis.

Untuk mengetahui informasi umum tentang Log Analytics, lihat artikel Membuat kueri dan menganalisis log dengan Log Analytics.

Cara kerja kebijakan pemberitahuan

Kebijakan pemberitahuan menjelaskan situasi saat Anda ingin mendapatkan pemberitahuan dan cara mendapatkan notifikasi tentang insiden. Ada tiga pendekatan berbeda yang dapat Anda gunakan untuk mendapatkan notifikasi saat konten atau pola muncul dalam data log Anda:

  • Untuk memindai setiap entri log untuk menemukan frasa tertentu, buat kebijakan pemberitahuan berbasis log. Gunakan kebijakan pemberitahuan ini jika Anda ingin menerima notifikasi tentang hal-hal seperti peristiwa terkait keamanan.

  • Untuk memantau peristiwa dalam data entri log, Anda dapat membuat metrik berbasis log, lalu membuat kebijakan pemberitahuan untuk memantau metrik. Jenis kebijakan pemberitahuan ini efektif jika Anda ingin memantau tren data entri log dari waktu ke waktu. Namun, metode ini tidak efektif jika Anda hanya mengharapkan beberapa peristiwa.

  • Untuk memantau analisis gabungan data entri log Anda, gabungkan Log Analytics dengan kebijakan pemberitahuan. Dalam skenario ini, Anda mengupgrade bucket log untuk menggunakan Log Analytics dan membuat set data BigQuery tertaut untuk bucket log tersebut. Selanjutnya, Anda menggunakan Log Analytics, yang mendukung kueri SQL, untuk mengkueri tampilan log di bucket log. Terakhir, Anda membuat kebijakan pemberitahuan untuk memantau hasil kueri SQL. Jenis kebijakan pemberitahuan ini disebut kebijakan pemberitahuan berbasis SQL.

Kebijakan pemberitahuan berbasis SQL paling efektif untuk mengevaluasi nilai yang tepat di beberapa entri log. Jika Anda ingin mengevaluasi setiap entri log, buat kebijakan pemberitahuan berbasis log.

Bagian lain dari dokumen ini menjelaskan cara menggunakan kebijakan pemberitahuan berbasis SQL.

Komponen kebijakan pemberitahuan

Kebijakan pemberitahuan berbasis SQL berisi kondisi dan jadwal:

  • condition berisi query, yang merupakan kueri SQL yang mengkueri tampilan log. Kondisi ini juga menentukan keadaan saat hasil kueri menyebabkan Monitoring membuat insiden.

  • Jadwal menentukan seberapa sering kebijakan pemberitahuan menjalankan kuerinya. Jadwal juga menentukan ukuran jendela lihat kembali, yang merupakan filter yang hanya memilih entri log yang telah diterima sejak kueri terakhir dievaluasi. Misalnya, jika Anda menetapkan jadwal ke 60 menit, kueri akan dijalankan setiap 60 menit menggunakan jangka waktu lihat ke belakang yang memilih 60 menit entri log terbaru.

Kebijakan pemberitahuan juga berisi daftar saluran notifikasi. Saat kondisi kebijakan pemberitahuan terpenuhi, Cloud Monitoring akan membuat insiden, lalu mengirim notifikasi tentang insiden tersebut melalui saluran ini. Insiden adalah catatan data yang menyebabkan kondisi terpenuhi beserta informasi relevan lainnya. Informasi ini dapat membantu Anda memecahkan masalah yang menyebabkan insiden. Anda dapat melihat insiden menggunakan konsol Google Cloud .

Jenis evaluasi untuk kebijakan pemberitahuan berbasis SQL

Kondisi yang memantau hasil kueri SQL mendukung dua jenis evaluasi:

  • Nilai minimum jumlah baris: Kondisi terpenuhi jika jumlah baris dalam hasil kueri lebih besar dari, sama dengan, atau kurang dari nilai minimum.

    Misalnya, Anda ingin mendapatkan notifikasi saat lebih dari 50 entri log dalam periode lihat kembali memiliki tingkat keparahan lebih dari 200. Anda membuat kueri yang melaporkan entri log yang tingkat keparahannya (severity) lebih besar dari 200. Kemudian, Anda mengonfigurasi kondisi, memilih Ambang batas jumlah baris, dan menetapkan ambang batas ke 50.

  • Boolean: Kondisi terpenuhi saat kolom boolean tertentu dalam tabel hasil kueri berisi baris dengan nilai true.

    Misalnya, Anda ingin mendapatkan notifikasi saat lebih dari 25% entri log dalam periode lihat balik memiliki tingkat keparahan ERROR. Anda membuat kueri yang menghitung persentase entri log yang tingkat keparahannya adalah ERROR. Hasil kueri menulis true ke kolom notify jika persentase tersebut melebihi 25%. Selanjutnya, Anda membuat kondisi, menetapkan jenisnya ke Boolean, dan mengonfigurasi kondisi untuk memantau kolom notify.

Kebijakan pemberitahuan yang memantau hasil kueri SQL hanya boleh memiliki satu kondisi.

Kebijakan pemberitahuan dan BigQuery

Saat kebijakan pemberitahuan menjalankan kueri SQL, kueri tersebut dijalankan menggunakan slot BigQuery yang dicadangkan di Google Cloud project tempat kebijakan pemberitahuan ditentukan. Untuk mengetahui informasi selengkapnya, lihat Menggunakan pemesanan slot.

Agar kebijakan pemberitahuan dapat menggunakan slot BigQuery yang dicadangkan untuk mengkueri tampilan log, bucket log yang menghosting tampilan log harus dikonfigurasi agar memiliki set data BigQuery yang ditautkan. Set data tertaut memungkinkan BigQuery membaca data di bucket log, dan memungkinkan Anda menjalankan fungsi BigQuery pada data yang ditampilkan oleh kueri SQL.

Entri log yang dievaluasi

Agar entri log dievaluasi oleh kueri SQL kebijakan pemberitahuan, kedua hal berikut harus benar:

  • Stempel waktu yang diterima entri log, yang mencatat waktu entri log diterima oleh Cloud Logging, harus berada dalam periode lihat kembali kebijakan pemberitahuan.
  • Stempel waktu entri log, yang mencatat waktu entri log dibuat, harus berada dalam 15 menit dari periode lihat kembali.

Misalnya, kebijakan pemberitahuan berbasis SQL Anda memiliki periode lihat balik 60 menit. Log Analytics menjalankan kueri SQL kebijakan pemberitahuan pada pukul 13.30. Agar disertakan dalam kueri, entri log harus cocok dengan kedua kriteria berikut:

  • Stempel waktu yang diterima harus antara pukul 12.30 hingga 13.30.
  • Stempel waktu harus antara 12.15 siang dan 1.45 siang.

Saat Anda menjalankan kueri dari antarmuka Log Analytics, semua entri log dalam rentang waktu yang dipilih akan dievaluasi berdasarkan stempel waktunya.

Periode lihat balik dan waktu propagasi insiden

Saat kebijakan pemberitahuan dijadwalkan untuk mengevaluasi kondisinya, Log Analytics akan menunda eksekusi kueri SQL selama lima menit untuk memberikan waktu bagi Cloud Logging dalam mengindeks entri log yang diterima selama periode lihat ke belakang. Misalnya, jika kebijakan pemberitahuan menggunakan periode lihat kembali yang berakhir pada pukul 14.00, maka Log Analytics tidak akan menjalankan kueri SQL hingga pukul 14.05.

Jika kondisi pemberitahuan terpenuhi setelah kueri dijalankan, maka insiden dapat memerlukan waktu hingga dua menit tambahan untuk disebarkan melalui sistem.

Kegagalan kueri

Kueri yang dikeluarkan oleh kebijakan pemberitahuan berbasis SQL dapat gagal karena berbagai alasan, termasuk yang berikut:

  • Akun Layanan Monitoring tidak ada lagi atau tidak lagi memiliki izin yang diperlukan untuk membaca data log yang sedang dikueri.

  • Waktu eksekusi kueri melebihi lima menit.

  • Terjadi error internal.

Kueri yang gagal akan menghasilkan entri log yang berisi ID kebijakan pemberitahuan dan status error. Anda dapat menggunakan kebijakan pemberitahuan berbasis log untuk membuat pemberitahuan saat error dicatat.

Sebelum memulai

Bagian ini mengasumsikan bahwa Anda telah mengupgrade bucket log untuk menggunakan Log Analytics dan bahwa Anda dapat membuat kueri dan melihat data log menggunakan halaman Log Analytics. Panduan ini juga mengasumsikan bahwa Anda telah membuat set data BigQuery tertaut untuk bucket log Anda.

Sebelum membuat kebijakan pemberitahuan berbasis SQL, selesaikan langkah-langkah berikut:

  1. Untuk mendapatkan izin yang diperlukan untuk membuat dan mengelola kebijakan pemberitahuan berbasis SQL, minta administrator Anda untuk memberi Anda peran IAM berikut:

  2. Pastikan Akun Layanan Monitoring ada dan memiliki peran berikut:

    1. Monitoring Service Agent (roles/monitoring.notificationServiceAgent) di project Anda.
    2. BigQuery Data Viewer (roles/bigquery.dataViewer) di set data tertaut Anda.

    Jika Akun Layanan Monitoring tidak ada, lihat Pemecahan Masalah: Tidak Ada Akun Layanan Monitoring.

  3. Untuk mengaktifkan kebijakan pemberitahuan berbasis SQL agar berjalan di slot BigQuery yang dicadangkan, lakukan hal berikut:
    1. Mengonfigurasi slot BigQuery yang dicadangkan.
    2. Tetapkan slot yang dicadangkan ke Google Cloud project Anda.
  4. Konfigurasi saluran notifikasi yang ingin Anda gunakan untuk menerima notifikasi untuk insiden. Untuk tujuan redundansi, sebaiknya buat beberapa jenis saluran notifikasi. Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola saluran notifikasi.

Membuat kebijakan pemberitahuan berbasis SQL

Untuk membuat kebijakan pemberitahuan berbasis SQL, lakukan hal berikut:

Google Cloud console

  1. Di konsol Google Cloud , buka halaman Log Analytics:

    Buka Log Analytics

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

  2. Di halaman Log Analytics, di editor kueri, masukkan kueri SQL untuk tampilan log.

    Untuk mengetahui informasi selengkapnya tentang cara menulis kueri SQL untuk tampilan log, lihat Mengueri tampilan log.

  3. Di toolbar, klik Run on BigQuery.

    Log Analytics menjalankan kueri Anda di mesin BigQuery dan menampilkan hasilnya dalam tabel Hasil.

    Jika Run on BigQuery tidak ditampilkan, klik Select query engine lalu klik BigQuery. Tombol Run query berubah menjadi Run on BigQuery.

  4. Di tabel Hasil pada halaman Log Analytics, klik  Buat pemberitahuan.

    Halaman Log Analytics menampilkan jendela Create sql alert policy, yang menampilkan kueri Anda di bagian SQL query.

  5. Di bagian Kondisi pemberitahuan, konfigurasi kondisi dan jadwal kebijakan pemberitahuan Anda.

  6. Konfigurasi detail pemberitahuan kebijakan pemberitahuan Anda.

    1. Tambahkan saluran notifikasi dan konfigurasi konten notifikasi, seperti baris subjek kustom.

    2. Opsional: Tambahkan label kebijakan pemberitahuan dan dokumentasi.

    3. Klik Berikutnya.

  7. Tinjau kebijakan pemberitahuan Anda, lalu buat dengan mengklik Simpan.

Cloud Monitoring API

Gunakan metode alertPolicies.create untuk membuat kebijakan pemberitahuan secara terprogram. Jenis kebijakan pemberitahuan Condition harus berupa conditionSql, yang merupakan instance SqlCondition. Jenis kondisi ini memungkinkan kondisi kebijakan pemberitahuan Anda ditentukan dengan SQL.

Untuk menentukan jadwal, tetapkan nilai periodicity untuk salah satu kolom minutes, hours, atau days. Misalnya, jika Anda ingin kueri berjalan setiap 12 jam, tetapkan periodisitas kolom hours ke 12.

Untuk menentukan kondisi, gunakan kolom berikut:

  • boolean_test: Mengonfigurasi kebijakan pemberitahuan sehingga kondisinya terpenuhi saat baris kolom boolean dalam tabel hasil kueri berisi nilai benar.
  • row_count_test: Mengonfigurasi kebijakan pemberitahuan sehingga kondisinya terpenuhi saat jumlah baris dalam tabel hasil kueri memenuhi nilai minimum tertentu.

Untuk mengetahui daftar lengkap kolom dan definisi, lihat SqlCondition di dokumentasi Cloud Monitoring API.

Untuk mengetahui informasi selengkapnya tentang Monitoring API untuk kebijakan pemberitahuan, lihat Mengelola kebijakan pemberitahuan dengan API.

Terraform

  1. Instal dan konfigurasi Terraform untuk project Anda. Untuk konfigurasi App Hub, pilih project host App Hub atau project pengelolaan folder yang mendukung aplikasi.

  2. Di Cloud Shell, buka direktori yang berisi konfigurasi Terraform Anda.

  3. Dalam konfigurasi Terraform, konfigurasi instance resource google_monitoring_alert_policy, termasuk condition_sql.

  4. Di Cloud Shell, masukkan terraform apply.

Untuk mengubah kebijakan pemberitahuan, lakukan pengeditan, lalu terapkan kembali konfigurasi Terraform. Untuk mengetahui informasi selengkapnya, lihat Mengelola kebijakan pemberitahuan dengan Terraform.

Untuk informasi umum tentang penggunaan Google Cloud dengan Terraform, lihat Terraform dengan Google Cloud.

Batasan

  • Anda dapat memiliki satu kondisi per kebijakan pemberitahuan berbasis SQL.

  • Kebijakan pemberitahuan berbasis SQL tidak dapat membuat kueri tampilan analisis.

  • Kueri yang dikeluarkan oleh kebijakan pemberitahuan berbasis SQL akan gagal jika waktu eksekusinya melebihi lima menit.

  • Ada jeda hingga tujuh menit, ditambah waktu eksekusi kueri, antara saat kueri dijadwalkan dan saat insiden dibuat.

Untuk daftar lengkap batas yang terkait dengan kebijakan pemberitahuan, lihat Batas Monitoring.

Harga

Untuk mengetahui informasi tentang harga, lihat dokumen berikut:

Langkah berikutnya