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 saat setidaknya 25% entri log dalam periode tertentu memiliki tingkat keparahan ERROR
.
Kebijakan pemberitahuan yang Anda buat dari halaman Log Analytics dijalankan di mesin BigQuery. Oleh karena itu, data yang dikueri harus dapat diakses melalui set data BigQuery tertaut. Karena alasan ini, kueri SQL ini hanya dapat mengkueri tampilan log. Mereka tidak dapat mengkueri tampilan analisis.
Untuk mengetahui informasi umum tentang Log Analytics, lihat 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:
Untuk memindai setiap entri log untuk frasa tertentu, buat kebijakan pemberitahuan berbasis log. Gunakan kebijakan pemberitahuan ini saat Anda ingin diberi tahu 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 seefektif jika Anda hanya mengharapkan beberapa peristiwa.
Untuk memantau analisis gabungan data entri log, 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 akan 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 selanjutnya dari dokumen ini menjelaskan cara menggunakan kebijakan pemberitahuan berbasis SQL.
Komponen kebijakan pemberitahuan
Kebijakan pemberitahuan berbasis SQL berisi kondisi dan jadwal:
Kondisi berisi kueri, yang merupakan kueri SQL yang mengkueri tampilan log. Kondisi ini juga menentukan situasi saat hasil kueri menyebabkan Monitoring membuat insiden.
Jadwal menentukan seberapa sering kebijakan pemberitahuan menjalankan kuerinya. Jadwal juga menentukan ukuran periode lihat balik, yang merupakan filter yang hanya memilih entri log yang telah diterima sejak kueri dievaluasi sebelumnya. Misalnya, jika Anda menetapkan jadwal ke 60 menit, kueri akan dijalankan setiap 60 menit menggunakan periode lihat balik yang memilih entri log 60 menit 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 bersama dengan informasi relevan lainnya. Informasi ini dapat membantu Anda memecahkan masalah yang menyebabkan insiden. Anda dapat melihat insiden menggunakan Google Cloud console.
Jenis evaluasi untuk kebijakan pemberitahuan berbasis SQL
Kondisi yang memantau hasil kueri SQL mendukung dua jenis evaluasi:
Batas 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 balik memiliki tingkat keparahan lebih besar dari 200. Anda membuat kueri yang melaporkan entri log dengan tingkat keparahan lebih dari 200. Kemudian, Anda mengonfigurasi kondisi, memilih Batas jumlah baris, dan menetapkan batas ke 50.
Boolean: Kondisi terpenuhi jika 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 keparahannyaERROR
. Hasil kueri menulistrue
ke kolomnotify
jika persentase tersebut melebihi 25%. Selanjutnya, Anda membuat kondisi, menetapkan jenis ke Boolean, dan mengonfigurasi kondisi untuk memantau kolomnotify
.
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 project Google Cloud 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 tertaut. 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 diterima entri log, yang mencatat kapan entri log diterima oleh Cloud Logging, harus berada dalam periode lihat balik kebijakan pemberitahuan.
- Stempel waktu entri log, yang mencatat kapan entri log dibuat, harus berada dalam waktu 15 menit dari periode lihat balik.
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 dan 13.30.
- Stempel waktu harus antara pukul 12.15 dan 13.45.
Saat Anda menjalankan kueri dari antarmuka Log Analytics, semua entri log dalam rentang waktu yang dipilih akan dievaluasi berdasarkan stempel waktu entri log.
Periode lihat balik dan waktu penyebaran insiden
Saat kebijakan pemberitahuan dijadwalkan untuk mengevaluasi kondisinya, Log Analytics akan menunda eksekusi kueri SQL selama lima menit untuk memberi waktu bagi Cloud Logging mengindeks entri log yang diterima selama periode lihat balik. Misalnya, jika kebijakan pemberitahuan menggunakan periode lihat balik yang berakhir pada pukul 14.00, Log Analytics tidak akan mengeksekusi kueri SQL hingga pukul 14.05.
Jika kondisi pemberitahuan terpenuhi setelah kueri dieksekusi, mungkin perlu waktu hingga dua menit tambahan agar insiden diterapkan di seluruh sistem.
Kegagalan kueri
Kueri yang dikeluarkan oleh kebijakan pemberitahuan berbasis SQL dapat gagal karena berbagai alasan, termasuk hal berikut:
Akun Layanan Pemantauan tidak ada lagi atau tidak lagi memiliki izin yang diperlukan untuk membaca data log yang 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 ke dalam log.
Sebelum memulai
Bagian ini mengasumsikan bahwa Anda telah mengupgrade bucket log untuk menggunakan Log Analytics dan dapat membuat kueri serta melihat data log menggunakan halaman Log Analytics. Hal ini juga menganggap bahwa Anda telah membuat set data BigQuery tertaut untuk bucket log.
Sebelum membuat kebijakan pemberitahuan berbasis SQL, selesaikan langkah-langkah berikut:
-
Untuk mendapatkan izin yang Anda perlukan untuk membuat dan mengelola kebijakan pemberitahuan berbasis SQL, minta administrator untuk memberi Anda peran IAM berikut:
-
Monitoring Editor (
roles/monitoring.editor
) di project Anda -
Logging SqlAlertWriter (
roles/logging.sqlAlertWriter
) di project Anda
-
Monitoring Editor (
Pastikan Akun Layanan Pemantauan ada dan memiliki peran berikut:
- Monitoring Service Agent (
roles/monitoring.notificationServiceAgent
) di project Anda. - BigQuery Data Viewer (
roles/bigquery.dataViewer
) di set data tertaut Anda.
Jika Akun Layanan Pemantauan tidak ada, lihat Memecahkan Masalah: Tidak Ada Akun Layanan Pemantauan.
- Monitoring Service Agent (
- Untuk mengaktifkan kebijakan pemberitahuan berbasis SQL agar berjalan di slot BigQuery yang direservasi, lakukan hal berikut:
- Konfigurasikan saluran notifikasi yang ingin Anda gunakan untuk menerima notifikasi terkait insiden. Untuk tujuan redundansi, sebaiknya Anda membuat beberapa jenis saluran notifikasi. Untuk informasi selengkapnya, lihat Membuat dan mengelola saluran notifikasi.
Membuat kebijakan pemberitahuan berbasis SQL
Untuk membuat kebijakan pemberitahuan berbasis SQL, lakukan langkah berikut:
Google Cloud console
-
Di Google Cloud console, buka halaman Log Analytics:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
Di halaman Log Analytics, di editor kueri, masukkan kueri SQL untuk tampilan log.
Untuk informasi selengkapnya tentang cara menulis kueri SQL untuk tampilan log, lihat Mengkueri tampilan log.
Di toolbar, klik Run on BigQuery.
Log Analytics menjalankan kueri Anda di mesin BigQuery dan menampilkan hasilnya di tabel Hasil.
Jika Run on BigQuery tidak ditampilkan, klik settings Select query engine, lalu klik BigQuery. Tombol Run query berubah menjadi Run on BigQuery.
Pada tabel Results di halaman Log Analytics, klik add_alert Create alert.
Halaman Log Analytics menampilkan jendela Create sql alert policy, yang menampilkan kueri Anda di bagian SQL query.
Di bagian Alert condition, konfigurasikan kondisi dan jadwal kebijakan pemberitahuan Anda.
Konfigurasi detail pemberitahuan kebijakan pemberitahuan Anda.
Tambahkan saluran notifikasi dan konfigurasikan konten notifikasi, seperti baris subjek kustom.
Opsional: Tambahkan label kebijakan pemberitahuan dan dokumentasi.
Klik Berikutnya.
Tinjau kebijakan pemberitahuan Anda, lalu buat dengan mengklik Save.
Cloud Monitoring API
Gunakan metode alertPolicies.create
untuk membuat kebijakan pemberitahuan secara terprogram. Jenis Condition
kebijakan pemberitahuan Anda 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
dalam dokumentasi Cloud Monitoring API.
Untuk informasi selengkapnya tentang Monitoring API untuk kebijakan pemberitahuan, lihat Mengelola kebijakan pemberitahuan menurut API.
Terraform
Instal dan konfigurasikan Terraform untuk project Anda. Untuk konfigurasi App Hub, pilih project host App Hub atau project pengelolaan folder yang mengaktifkan aplikasi.
Di Cloud Shell, buka direktori yang berisi konfigurasi Terraform Anda.
Dalam konfigurasi Terraform, konfigurasikan instance resource google_monitoring_alert_policy, termasuk condition_sql.
Di Cloud Shell, masukkan
terraform apply
.
Untuk mengubah kebijakan pemberitahuan, lakukan pengeditan, lalu terapkan kembali konfigurasi Terraform. Untuk 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 eksekusi melebihi lima menit.
Terdapat keterlambatan hingga tujuh menit, ditambah waktu eksekusi kueri, antara saat kueri dijadwalkan dan saat insiden dibuat.
Untuk mengetahui daftar lengkap batas yang terkait dengan kebijakan pemberitahuan, lihat Batas pemantauan.
Harga
Untuk informasi tentang harga, lihat dokumen berikut:
- Harga BigQuery
- Cloud Logging dalam dokumentasi harga Google Cloud Observability
- Cloud Monitoring dalam dokumentasi harga Google Cloud Observability
Langkah berikutnya
Untuk informasi tentang cara membuat diagram dari data Log Analytics, lihat Membuat diagram hasil kueri dengan Log Analytics.
Untuk mengetahui informasi tentang cara mengelola insiden untuk kebijakan pemberitahuan ini, lihat Insiden untuk kebijakan pemberitahuan berbasis SQL.