Anda dapat mengonfigurasi kebijakan pemberitahuan untuk memberi tahu Anda setiap kali pesan tertentu muncul di log yang disertakan. Misalnya, jika Anda ingin mengetahui kapan log audit mencatat pesan akses data tertentu, Anda dapat menerima notifikasi saat pesan tersebut muncul. Jenis kebijakan pemberitahuan ini disebut kebijakan pemberitahuan berbasis log. Dokumen ini menjelaskan cara melakukan hal berikut, dengan menggunakan konsol Google Cloud dan Cloud Monitoring API:
- Buat dan uji kebijakan pemberitahuan berbasis log.
- Edit kebijakan pemberitahuan berbasis log.
- Menghapus kebijakan pemberitahuan berbasis log.
Sebelum memulai
-
Make sure that billing is enabled for your Google Cloud project.
Tinjau Perbandingan pemberitahuan untuk menentukan apakah kebijakan pemberitahuan berbasis log cocok untuk data di log Anda. Contoh:
Kebijakan pemberitahuan berbasis log tidak beroperasi pada log yang dikecualikan.
Anda tidak dapat menggunakan kebijakan pemberitahuan berbasis log untuk mendapatkan jumlah dari log Anda. Untuk mendapatkan jumlah, Anda harus menggunakan metrik berbasis log.
Untuk membuat dan mengelola kebijakan pemberitahuan berbasis log, peran Identity and Access Management Anda harus menyertakan izin yang dijelaskan dalam Izin untuk kebijakan pemberitahuan berbasis log.
Membuat kebijakan pemberitahuan berbasis log menggunakan Logs Explorer
Anda dapat membuat kebijakan pemberitahuan berbasis log dari halaman Logs Explorer di konsol Google Cloud atau menggunakan Monitoring API. Bagian ini menjelaskan cara membuat kebijakan pemberitahuan berbasis log menggunakan Logs Explorer. Untuk informasi Monitoring API, lihat Membuat kebijakan pemberitahuan berbasis log menggunakan Monitoring API.
Kebijakan pemberitahuan berbasis log tidak mematuhi setelan cakupan di halaman Logs Explorer. Sebaliknya, saat sink level project merutekan entri log yang berasal dari project ke bucket log, kebijakan pemberitahuan berbasis log yang ditentukan dalam project tersebut akan memindai entri log. Untuk mempelajari lebih lanjut, lihat Entri log yang tersedia.
Antarmuka Logs Explorer akan memandu Anda melalui langkah-langkah berikut:
- Berikan detail untuk kebijakan pemberitahuan, seperti nama dan tingkat keparahan.
- Pilih log yang notifikasinya ingin Anda terima.
- Tetapkan waktu antara notifikasi.
- Tetapkan waktu untuk penutupan otomatis insiden.
- Tentukan siapa yang akan diberi tahu.
Misalnya, anggap Anda memiliki aplikasi yang menulis entri log syslog
dengan tingkat keparahan NOTICE
saat aplikasi mengubah alamat jaringan.
Entri log untuk perubahan alamat jaringan mencakup payload JSON yang terlihat
seperti berikut:
"jsonPayload": { "type": "Configuration change", "action": "Set network address", "result": "IP_ADDRESS", }
Anda ingin membuat kebijakan pemberitahuan berbasis log yang memberi tahu Anda
ketika alamat IPv4 yang tidak valid muncul di kolom jsonPayload.result
pada entri log di syslog
dengan tingkat keparahan NOTICE
.
Untuk membuat kebijakan pemberitahuan ini, lakukan langkah berikut:
-
Di konsol Google Cloud , buka halaman Logs Explorer:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
Gunakan panel Query untuk membuat kueri yang cocok dengan pesan yang ingin Anda gunakan dalam kebijakan pemberitahuan berbasis log.
Misalnya, untuk menemukan entri log dengan tingkat keparahan
NOTICE
di logsyslog
yang memiliki alamat IP tidak valid dalam payload JSON, Anda dapat menggunakan kueri berikut:log_id("syslog") severity = "NOTICE" jsonPayload.result !~ "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}$"
Klik Run query untuk memvalidasi kueri.
Di toolbar Query results, luaskan menu Actions, lalu pilih add_alert Create log alert.
Di panel Detail pemberitahuan, lakukan hal berikut:
Masukkan nama untuk kebijakan pemberitahuan Anda di kolom Alert Policy Name. Misalnya: "Alamat jaringan: nilai IPv4 tidak valid".
Pilih opsi dari menu Tingkat keparahan kebijakan. Insiden dan notifikasi menampilkan tingkat keparahan.
Opsional: Tambahkan dokumentasi untuk kebijakan pemberitahuan Anda. Anda dapat menyertakan informasi yang dapat membantu penerima notifikasi mendiagnosis masalah. String berikut merangkum alasan notifikasi:
Log-based alerting policy in project ${project} detected an invalid IPv4 value.
Untuk mengetahui informasi tentang cara memformat dan menyesuaikan konten kolom ini, lihat Menggunakan Markdown dan variabel dalam template dokumentasi.
Untuk melanjutkan ke langkah berikutnya, klik Berikutnya.
Di panel Pilih log untuk disertakan dalam pemberitahuan, lakukan hal berikut:
Masukkan kueri dan/atau edit kueri yang ada untuk memfilter log yang tersedia. Entri log yang cocok dengan kueri akan menyebabkan kebijakan pemberitahuan dipicu.
Untuk memverifikasi kueri, klik Pratinjau log.
Opsional: Ekstrak label log. Anda dapat membuat label dari kolom log untuk ditampilkan di insiden dan notifikasi yang dibuat oleh pemberitahuan.
Di kolom dokumentasi kebijakan pemberitahuan, Anda merujuk ke label yang diekstrak menggunakan variabel dalam bentuk
${log.extracted_label.KEY}
, denganKEY
adalah nama yang Anda berikan untuk label yang diekstrak.
Klik Berikutnya.
Pilih waktu minimum antara notifikasi. Nilai ini memungkinkan Anda mengontrol jumlah notifikasi yang Anda dapatkan dari Monitoring jika kondisi ini terpenuhi beberapa kali. Untuk contoh ini, pilih 5 menit dari opsi.
Opsional: Pilih durasi penutupan insiden otomatis. Secara default, durasi penutupan otomatis insiden ditetapkan ke 7 hari.
Klik Berikutnya.
Pilih satu atau beberapa saluran notifikasi untuk kebijakan pemberitahuan Anda. Untuk contoh ini, pilih saluran notifikasi email.
Jika sudah mengonfigurasi saluran notifikasi email, Anda dapat memilihnya dari daftar. Jika tidak, klik Kelola saluran notifikasi dan tambahkan saluran email. Untuk mengetahui informasi tentang cara membuat saluran notifikasi, lihat Membuat dan mengelola saluran notifikasi.
Klik Simpan.
Kebijakan pemberitahuan berbasis log Anda kini siap diuji.
Menguji contoh kebijakan pemberitahuan berbasis log
Untuk menguji kebijakan pemberitahuan yang Anda buat, Anda dapat menulis entri log secara manual yang cocok dengan kueri. Untuk menulis entri log, lakukan hal berikut:
Konfigurasi entri log berikut dengan mengubah variabel
PROJECT_ID
ke project ID Anda:{ "entries": [ { "logName": "projects/PROJECT_ID/logs/syslog", "jsonPayload": { "type": "Configuration change", "action": "Set network address", "result": "999.027.405.1", }, "severity": "NOTICE", "resource": { "type": "generic_task", "labels" : { "project_id": "PROJECT_ID", "location": "us-east1", "namespace": "fake-task-2", "job": "write-log-entry", "task_id": "11", }, }, }, ], }
Buka halaman referensi
logEntries.write
, atau klik tombol berikut:Salin entri log yang Anda konfigurasi sebelumnya.
Di panel Try this API, lakukan hal berikut:
Ganti konten kolom Isi permintaan di APIs Explorer dengan entri log yang Anda salin pada langkah sebelumnya.
Klik Jalankan. Jika diminta, ikuti alur autentikasi.
Jika panggilan
logEntries.write
berhasil, Anda akan mendapatkan kode respons HTTP200
dan isi respons kosong,{}
. Untuk mengetahui informasi selengkapnya tentang APIs Explorer, lihat Menggunakan APIs Explorer dalam dokumentasi Monitoring; APIs Explorer berfungsi dengan cara yang sama dengan Logging API.
Entri log cocok dengan filter yang ditentukan untuk kebijakan pemberitahuan dengan cara berikut:
- Nilai
logName
menentukan logsyslog
yang ada di projectGoogle Cloud Anda. - Nilai
severity
untuk entri log ini adalahNOTICE
. - Nilai
jsonPayload.result
bukan alamat IPv4 yang valid.
Setelah Anda menulis entri log, urutan berikut akan terjadi:
- Entri log baru akan muncul di Logs Explorer. Entri log memenuhi kondisi kebijakan pemberitahuan.
- Insiden dibuka di Cloud Monitoring.
Anda akan menerima notifikasi untuk insiden tersebut. Jika Anda mengonfigurasi saluran notifikasi email, notifikasi akan terlihat seperti screenshot berikut:
Anda dapat mengklik Lihat insiden di email untuk melihat insiden di Cloud Monitoring. Untuk mengetahui informasi selengkapnya tentang insiden, lihat Mengelola insiden untuk kebijakan pemberitahuan berbasis log.
Skenario lainnya: Pemberitahuan tentang log audit
Contoh di bagian berjudul Membuat kebijakan pemberitahuan berbasis log bersifat buatan; Anda biasanya tidak membuat kebijakan pemberitahuan, lalu menulis entri log secara manual yang memenuhi kondisi kebijakan pemberitahuan. Entri log biasanya ditulis oleh aplikasi atau layanan lain. Namun, sumber entri log tidaklah penting; untuk kebijakan pemberitahuan berbasis log, yang penting adalah kueri yang Anda gunakan untuk memilih entri log.
Bagian berikut menjelaskan skenario realistis untuk kebijakan pemberitahuan berbasis log berdasarkan konten log audit. Setiap skenario menggambarkan cara membuat kueri yang memilih entri log audit yang sesuai. Jika tidak, prosedur untuk membuat kebijakan pemberitahuan berbasis log sama seperti yang ditunjukkan dalam Membuat pemberitahuan berbasis log.
Kebijakan pemberitahuan yang memantau akses manusia ke secret
Misalkan project Anda menyimpan secret di Secret Manager, dan beberapa secret ini hanya ditujukan untuk digunakan oleh akun layanan. Kecuali dalam keadaan yang tidak biasa, pengguna manusia tidak pernah mengakses rahasia ini.
Jika Anda telah mengaktifkan logging audit untuk Secret Manager, setiap upaya yang berhasil untuk mengakses secret akan membuat entri log audit. Setiap entri mencakup nama rahasia dan identitas pemanggil.
Anda dapat membuat kebijakan pemberitahuan berbasis log yang memberi tahu Anda saat pengguna manusia mengakses rahasia.
Berikut adalah kutipan entri log audit yang ditulis oleh Secret Manager. Kutipan ini menampilkan kolom yang berguna untuk membuat kueri untuk pemberitahuan berbasis log:
{ "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "serviceName": "secretmanager.googleapis.com", "methodName": "google.cloud.secretmanager.v1.SecretManagerService.AccessSecretVersion", "authenticationInfo": { "principalEmail": "my-svc-account@PROJECT_ID.", "serviceAccountDelegationInfo": [], "principalSubject": "serviceAccount:my-svc-account@PROJECT_ID." }, ... }, ... }
Sub-kolom protoPayload
berikut sangat menarik:
@type
: menunjukkan bahwa entri log ini adalah entri log audit.serviceName
: mencatat layanan yang menulis entri log audit. Gunakan kolom ini untuk mengidentifikasi entri yang ditulis oleh Secret Manager.methodName
: mengidentifikasi metode yang digunakan untuk menulis entri log audit ini. Gunakan kolom ini untuk mengidentifikasi tindakan yang menyebabkan entri ini dibuat. Dalam contoh ini, metode yang digunakan adalahAccessSecretVersion
.authenticationInfo.principalEmail
: mencatat akun yang memanggil metode di kolommethodName
. Nilai yang diharapkan untuk kolom ini adalah akun layanan, yang diakhiri dengan.
Untuk menemukan entri log akses secret oleh pengguna manusia, cari entri log audit yang ditulis oleh Secret Manager. Anda ingin
menemukan entri log tempat metode AccessSecretVersion
dipanggil oleh
akun utama yang tidak diakhiri dengan .
Kueri berikut mengisolasi entri log ini:
protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog" protoPayload.serviceName = "secretmanager.googleapis.com" protoPayload.methodName =~ "AccessSecretVersion$" protoPayload.authenticationInfo.principalEmail !~ "$"
Untuk membuat kebijakan pemberitahuan berbasis log untuk akses secret oleh manusia, gunakan kueri ini di panel Pilih log yang akan disertakan dalam pemberitahuan.
Kebijakan pemberitahuan yang memantau peristiwa dekripsi
Analisis dalam contoh sebelumnya dapat disesuaikan dengan layanan lain. Misalnya, jika Anda menggunakan Cloud Key Management Service untuk mengenkripsi dan mendekripsi data sensitif, Anda dapat menggunakan log audit yang dihasilkan oleh Cloud KMS untuk mendeteksi saat pengguna manusia mendekripsi nilai.
Untuk menemukan entri log dekripsi yang dilakukan oleh pengguna manusia, cari entri log audit yang ditulis oleh Cloud KMS. Anda ingin menemukan
entri log tempat metode Decrypt
dipanggil oleh
akun utama yang tidak diakhiri dengan , yang menunjukkan
akun layanan.
Kueri berikut mengisolasi entri log ini:
protoPayload.@type = "type.googleapis.com/google.cloud.audit.AuditLog" protoPayload.serviceName = "cloudkms.googleapis.com" protoPayload.methodName = "Decrypt" protoPayload.authenticationInfo.principalEmail !~ "$"
Untuk membuat kebijakan pemberitahuan berbasis log untuk dekripsi yang dilakukan oleh pengguna manusia, gunakan kueri ini di panel Pilih log yang akan disertakan dalam pemberitahuan.
Mengelola kebijakan pemberitahuan berbasis log di Monitoring
Anda dapat melihat, mengedit, dan menghapus kebijakan pemberitahuan berbasis log menggunakan konsolGoogle Cloud untuk Monitoring atau menggunakan Monitoring API. Dokumen ini menjelaskan cara mengelola kebijakan pemberitahuan menggunakan konsol Google Cloud . Untuk informasi tentang cara menggunakan Monitoring API untuk mengelola kebijakan pemberitahuan, lihat Mengelola kebijakan pemberitahuan menurut API.
Untuk melihat daftar semua kebijakan pemberitahuan di Google Cloud project Anda, lakukan salah satu hal berikut:
Untuk membuka halaman ini dari Logging:
-
Di konsol Google Cloud , buka halaman Logs Explorer:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
Di toolbar Query results, luaskan menu Actions, lalu pilih edit Manage log alerts.
-
Untuk membuka halaman dari Monitoring:
-
Di konsol Google Cloud , buka halaman notifications Pemberitahuan:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.
Untuk melihat semua kebijakan dan mengaktifkan pemfilteran, di panel Policies, klik See all policies.
-
Kedua tindakan ini akan mengarahkan Anda ke halaman Kebijakan Monitoring, yang mencantumkan semua kebijakan pemberitahuan di project Google Cloud Anda.
Untuk membatasi kebijakan pemberitahuan yang tercantum, tambahkan filter.
Setiap filter terdiri dari nama dan nilai. Misalnya, Anda dapat menetapkan nilai agar cocok persis dengan nama kebijakan, atau cocok sebagian. Pencocokan tidak peka huruf besar/kecil.
Jika Anda menentukan beberapa filter, filter tersebut akan digabungkan secara implisit
dengan AND
logis, kecuali jika Anda menyisipkan filter OR
.
Screenshot berikut mencantumkan kebijakan pemberitahuan yang diaktifkan dan yang
dibuat setelah 1 Januari 2021:
Dari halaman Kebijakan, Anda dapat mengedit, menghapus, menyalin, mengaktifkan, atau menonaktifkan kebijakan pemberitahuan:
Untuk mengedit atau menyalin kebijakan, klik more_vert Opsi lainnya, lalu pilih salah satu opsi. Mengedit dan menyalin kebijakan serupa dengan prosedur yang dijelaskan dalam Membuat kebijakan pemberitahuan berbasis log. Anda dapat mengubah dan, dalam beberapa kasus, menghapus nilai di kolom. Setelah selesai, klik Simpan.
Anda juga dapat mengedit kebijakan pemberitahuan berbasis log dengan mengklik namanya dalam daftar kebijakan.
Untuk menghapus kebijakan, klik Opsi lainnya more_vert lalu pilih Hapus. Pada dialog konfirmasi, pilih Hapus.
Untuk mengaktifkan atau menonaktifkan kebijakan pemberitahuan, klik tombol yang ada di bagian judul Diaktifkan.
Membuat kebijakan pemberitahuan berbasis log menggunakan Monitoring API
Anda dapat membuat kebijakan pemberitahuan berbasis log menggunakan Monitoring API. Anda memberikan informasi yang sama ke Monitoring API dengan yang Anda berikan saat menggunakan Logs Explorer di konsol Google Cloud :
- Detail untuk kebijakan pemberitahuan, seperti nama dan tingkat keparahan.
- Log yang notifikasinya ingin Anda terima.
- Waktu antara notifikasi.
- Waktu untuk penutupan insiden otomatis.
- Siapa yang harus diberi tahu.
Untuk membuat kebijakan pemberitahuan menggunakan Monitoring API, Anda
membuat objek AlertPolicy
dan mengirimkannya ke
metode alertPolicies.create
.
Sebelum dapat menggunakan Monitoring API, Anda harus mengaktifkan API dan memiliki otorisasi untuk menggunakannya. Untuk informasi selengkapnya, lihat dokumentasi berikut:
Struktur kebijakan pemberitahuan
Monitoring API merepresentasikan kebijakan pemberitahuan menggunakan struktur
AlertPolicy
.
Struktur AlertPolicy
memiliki beberapa struktur sematan, termasuk
deskripsi kondisi kebijakan pemberitahuan. Kebijakan pemberitahuan berbasis log berbeda dengan kebijakan pemberitahuan berbasis metrik dalam hal berikut:
- Anda menjelaskan kondisi menggunakan jenis kondisi
LogMatch
. Kebijakan pemberitahuan berbasis metrik menggunakan jenis kondisi yang berbeda. - Kebijakan pemberitahuan berbasis log hanya dapat memiliki satu kondisi.
- Anda menentukan waktu antara notifikasi dan periode penutupan insiden otomatis
dengan menyertakan struktur
AlertStrategy
. Kebijakan pemberitahuan berbasis metrik tidak menyertakan waktu antara notifikasi.
Bagian ini menjelaskan cara membuat kebijakan pemberitahuan berbasis log. Kebijakan ini berbeda dengan kebijakan pemberitahuan berbasis metrik dalam jenis kondisi yang Anda gunakan. Untuk kebijakan pemberitahuan berbasis log,
jenis kondisinya adalah LogMatch
. Saat Anda menggunakan
Monitoring API untuk mengelola kebijakan pemberitahuan, tidak ada perbedaan dalam cara Anda mencantumkan, mengedit, atau menghapus kebijakan berbasis metrik dan log.
Mengelola kebijakan pemberitahuan menurut API menjelaskan cara membuat, mencantumkan, mengedit, dan menghapus kebijakan pemberitahuan menggunakan Monitoring API.
Aturan notifikasi
Saat Anda membuat kebijakan pemberitahuan berbasis log, Logging akan membuat
objek internal yang disebut aturan notifikasi. Logging
menggunakan aturan notifikasi untuk mencocokkan entri log
yang masuk dengan filter kebijakan pemberitahuan Anda, lalu membuat notifikasi
saat entri cocok dengan kriteria filter. Anda tidak berinteraksi secara langsung
dengan aturan notifikasi. Namun, untuk membuat kebijakan pemberitahuan berbasis log,
Anda harus memiliki izin logging.notificationRules.create
.
Merancang kebijakan pemberitahuan
Bagian berjudul
Membuat kebijakan pemberitahuan berbasis log menggunakan Logs Explorer
menjelaskan salah satu cara untuk membuat kebijakan pemberitahuan berbasis log.
Bagian tersebut menunjukkan cara membuat kebijakan pemberitahuan berbasis log yang memberi tahu Anda saat entri log syslog
memiliki tingkat keparahan NOTICE
dan alamat IPv4 yang tidak valid di kolom jsonPayload.result
.
Untuk membuat kebijakan pemberitahuan berbasis log yang sama menggunakan Monitoring API, Anda membuat objek AlertPolicy
yang terlihat seperti struktur JSON berikut:
{ "displayName": "Network address: invalid IPv4 value (API)", "documentation": { "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value.", "mimeType": "text/markdown" }, "conditions": [ { "displayName": "Log match condition: invalid IP addr (API)", "conditionMatchedLog": { "filter": "log_id(\"syslog\") severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"", }, } ], "combiner": "OR", "alertStrategy": { "notificationRateLimit": { "period": "300s" }, "autoClose": "604800s", }, "notificationChannels": [ "projects/PROJECT_ID/notificationChannels/CHANNEL_ID" ] }
Kode JSON ini menentukan informasi yang sama dengan yang Anda tentukan
saat membuat kebijakan pemberitahuan berbasis log menggunakan Logs Explorer. Bagian berikut memetakan konten struktur AlertPolicy
ini ke langkah-langkah yang Anda ikuti saat menggunakan Logs Explorer untuk membuat pemberitahuan berbasis log. Nilai
kolom conditionMatchedLog
adalah struktur LogMatch
.
Berikan nama dan dokumentasi
Kebijakan pemberitahuan memiliki nama tampilan dan dokumentasi terkait yang
disediakan bersama notifikasi untuk membantu responden. Di Logs Explorer, kolom ini disebut Alert Name dan Documentation. Anda merepresentasikan
nilai ini dalam struktur AlertPolicy
sebagai berikut:
{ "displayName": "Network address: invalid IPv4 value (API)", "documentation": { "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value.", "mimeType": "text/markdown" }, ... }
Dalam contoh ini, nilai untuk displayName
mencakup "(API)"
sehingga Anda dapat membedakan kedua contoh kebijakan
saat melihat daftar kebijakan di konsol Google Cloud . Halaman
Monitoring Policies mencantumkan kebijakan berdasarkan nama tampilan dan
menunjukkan apakah kebijakan tersebut didasarkan pada metrik atau log. Untuk mengetahui informasi selengkapnya, lihat
Mengelola kebijakan pemberitahuan berbasis log di Monitoring.
Kolom documentation
menyertakan, di subkolom content
, deskripsi
yang mungkin Anda berikan saat menggunakan Logs Explorer. Sub-bidang kedua,
mimeType
diperlukan saat Anda menentukan nilai untuk bidang documentation
.
Satu-satunya nilai yang valid adalah "text/markdown"
.
Pilih log yang notifikasinya ingin Anda terima
Kebijakan pemberitahuan berbasis log memiliki satu kondisi. Di Logs Explorer,
Anda menentukan kondisi saat memberikan kueri di kolom Tentukan entri log yang akan
diperiksa untuk pemberitahuan. Anda merepresentasikan nilai ini dalam struktur AlertPolicy
sebagai
berikut:
{ ... "conditions": [ { "displayName": "Log match condition: invalid IP addr (API)", "conditionMatchedLog": { "filter": "log_id(\"syslog\" severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\"", }, } ], "combiner": "OR", ... }
Kolom conditions
mengambil daftar struktur Condition
, meskipun kebijakan pemberitahuan berbasis log hanya boleh memiliki satu kondisi. Setiap Condition
memiliki nama tampilan dan deskripsi
kondisinya.
Nilai kolom
displayName
adalah deskripsi singkat tentang kondisi. Saat Anda menggunakan Logs Explorer untuk membuat kebijakan pemberitahuan berbasis log, nama tampilan selalu "Kondisi kecocokan log". Saat menggunakan Monitoring API, Anda dapat memberikan nama tampilan yang lebih presisi. Nilai wajib diisi.Nilai kolom
conditionMatchedLog
adalah strukturLogMatch
, dan nilai kolomfilter
adalah kueri yang Anda tentukan di Logs Explorer. Karena kueri ini diberikan sebagai nilai kolom JSON, seluruh kueri muncul dalam tanda kutip, dan tanda kutip apa pun dalam kueri itu sendiri harus di-escape dengan karakter\
(backslash).Struktur
LogMatch
juga mencakup kolomlabelExtractors
opsional. Anda dapat menggunakan ekstraktor label untuk menyusun label kustom dari entri log, lalu mereferensikan label tersebut dalam notifikasi.Misalnya, untuk mengekstrak nilai label
labels."compute.googleapis.com/resource_id"
dari entri log Anda ke label yang disebutvm_identifier
, kondisi sebelumnya mungkin terlihat seperti ini:"conditions": [ { "displayName": "Log match condition: invalid IP addr (API)", "conditionMatchedLog": { "filter": "log_id(\"syslog\" severity = \"NOTICE\" jsonPayload.result !~ \"^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}$\")", "labelExtractors": { "vm_identifier": "EXTRACT(labels.\"compute.googleapis.com/resource_id\")" } }, } ],
Gunakan fungsi
EXTRACT
untuk mencocokkan seluruh nilai, atau gunakanREGEXP_EXTRACT
untuk mencocokkan substring berdasarkan ekspresi reguler. Fungsi ini sama dengan fungsi yang digunakan untuk ekstraksi label dalam metrik berbasis log; lihat Membuat label untuk mengetahui informasi selengkapnya.Anda dapat menggunakan label yang diekstrak ini dalam dokumentasi kebijakan pemberitahuan, sehingga label tersebut dilaporkan dalam notifikasi. Di kolom
documentation
kebijakan pemberitahuan, Anda merujuk ke label yang diekstrak menggunakan variabel berbentuk${log.extracted_label.KEY}
, denganKEY
adalah nama yang Anda berikan pada label yang diekstrak.Contoh berikut menunjukkan cara merujuk ke kunci untuk label
vm_identifier
yang diekstrak, sehingga nilai label loglabels."compute.googleapis.com/resource_id"
disertakan dalam notifikasi:"documentation": { "content": "Log-based alerting policy in project ${project} detected an invalid IPv4 value on VM with ID ${log.extracted_label.vm_identifier}.", "mimeType": "text/markdown" },
Nilai untuk kolom combiner
menentukan cara menggabungkan hasil
beberapa kondisi dalam kebijakan pemberitahuan berbasis metrik. Anda hanya dapat menggunakan satu
kondisi dalam kebijakan pemberitahuan berbasis log,
dan Anda harus menentukan kolom combiner
dengan
nilai "OR"
. Anda tidak dapat membuat kebijakan pemberitahuan berbasis log dengan beberapa kondisi.
Menetapkan nilai notifikasi dan penutupan otomatis
Kebijakan pemberitahuan berbasis log menentukan waktu minimum antar
notifikasi. Di Logs Explorer, Anda memilih nilai dari menu Time between notifications.
Anda merepresentasikan nilai ini dalam struktur AlertPolicy
dengan menentukan nilai, dalam detik, untuk kolom period
dari struktur NotificationRateLimit
yang disematkan dalam struktur AlertStrategy
.
Demikian pula, kebijakan pemberitahuan mencakup periode untuk menutup insiden secara otomatis. Nilai defaultnya adalah 7 hari.
Di Logs Explorer, Anda dapat memilih nilai lain dari menu
Durasi penutupan otomatis insiden. Opsi ini sesuai dengan
kolom autoclose
dalam struktur API AlertStrategy
.
Saat Anda menggunakan kolom ini, tentukan nilai dalam detik. Nilai minimumnya adalah
1.800 detik, atau
30 menit.
{ ... "alertStrategy": { "notificationRateLimit": { "period": "300s" }, "autoClose": "604800s", }, ... }
Nilai untuk kolom period
dalam contoh ini, 300s
, setara dengan
5 menit. Nilai autoclose
, 604800s
, setara dengan 7 hari.
Tentukan siapa yang akan diberi tahu
Kebijakan pemberitahuan dapat mencakup daftar saluran notifikasi.
Di Logs Explorer, Anda memilih saluran dari menu.
Anda merepresentasikan nilai ini dalam struktur AlertPolicy
dengan memberikan
daftar satu atau beberapa nama resource untuk objek NotificationChannel
yang dikonfigurasi:
{ ... "notificationChannels": [ "projects/PROJECT_ID/notificationChannels/CHANNEL_ID" ] }
Saat Anda membuat saluran notifikasi, saluran tersebut akan diberi nama resource. Untuk mengetahui informasi tentang cara mengambil daftar saluran notifikasi yang tersedia, termasuk nama resource-nya, lihat Mengambil saluran dalam dokumentasi Monitoring. Anda tidak bisa mendapatkan ID channel menggunakan Google Cloud konsol.
Mengirim kebijakan pemberitahuan ke Monitoring API
Untuk membuat kebijakan pemberitahuan menggunakan Monitoring API, Anda
membuat objek AlertPolicy
dan mengirimkannya ke
metode alertPolicies.create
. Anda dapat memanggil
alertPolicies.create
menggunakan Google Cloud CLI,
dengan memanggil Monitoring API secara langsung.
Anda juga dapat membuat kebijakan pemberitahuan berbasis log
dengan menggunakan library klien untuk
C#, Go, Java, Python, dan Ruby. Anda mungkin juga dapat menggunakan library klien lainnya; library untuk bahasa Anda harus menyertakan jenis kondisi LogMatch
.
Untuk membuat kebijakan pemberitahuan menggunakan gcloud CLI, lakukan langkah-langkah berikut:
Masukkan representasi JSON kebijakan pemberitahuan Anda ke dalam file teks, misalnya, ke dalam file bernama
alert-invalid-ip.json
.Teruskan file JSON ini ke gcloud CLI menggunakan perintah berikut:
gcloud alpha monitoring policies create --policy-from-file="alert-invalid-ip.json"
Jika berhasil, perintah ini akan menampilkan nama resource kebijakan baru, misalnya:
Created alerting policy [projects/PROJECT_ID/alertPolicies/POLICY_ID].
Untuk membuat kebijakan pemberitahuan dengan memanggil alertPolicies.create
secara langsung,
Anda dapat menggunakan alat APIs Explorer sebagai berikut:
Buka halaman referensi
alertPolicies.create
.Di panel Try this API, lakukan hal berikut:
Di kolom
name
, masukkan nilai berikut:projects/PROJECT_ID
Salin representasi JSON kebijakan pemberitahuan Anda dan ganti isi kolom Isi permintaan di APIs Explorer dengan kebijakan pemberitahuan yang disalin.
Klik Jalankan.
Jika panggilan
alertPolicies.create
berhasil, Anda akan mendapatkan kode respons HTTP200
dan isi respons kosong,{}
. Untuk mengetahui informasi selengkapnya tentang APIs Explorer, lihat Menggunakan APIs Explorer di dokumentasi Monitoring.
Untuk mengetahui informasi selengkapnya tentang cara membuat kebijakan pemberitahuan menggunakan Monitoring API, lihat Membuat kebijakan. Contoh dalam dokumen tersebut menggunakan jenis kondisi untuk kebijakan pemberitahuan berbasis metrik, tetapi prinsipnya sama.
Menguji kebijakan pemberitahuan
Untuk menguji kebijakan pemberitahuan baru, Anda dapat menggunakan prosedur yang sama seperti yang dijelaskan dalam Menguji contoh pemberitahuan berbasis log.
Contoh: Membuat kebijakan pemberitahuan saat entri log berisi string teks
Contoh ini menggunakan konsol Google Cloud untuk membuat kebijakan pemberitahuan, Logs Explorer untuk melihat entri log, dan Google Cloud CLI untuk menulis entri log:
-
Di konsol Google Cloud , buka halaman Logs Explorer:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.
Di panel Query, masukkan kueri berikut setelah memperbarui nilai PROJECT_ID:
logName="projects/PROJECT_ID/logs/test-log" textPayload:"Oops"
Kueri menelusuri log dengan nama
test-log
untuk entri log yang memiliki kolomtextPayload
yang berisi string "Oops".Di toolbar Query results, luaskan menu Actions, lalu pilih add_alert Create log alert. Kemudian, selesaikan dialog.
Anda harus memasukkan nama untuk kebijakan, seperti
Alert on Oops
. Kueri yang Anda masukkan di langkah sebelumnya akan otomatis disertakan dalam kebijakan pemberitahuan.Untuk menguji kebijakan pemberitahuan, buka Cloud Shell, lalu jalankan perintah berikut:
gcloud logging write test-log --severity=ERROR --payload-type=text 'This log entry contains Oops'
Perintah sebelumnya menulis entri ke log bernama
test-log
. Entri memiliki tingkat keparahanERROR
dan menyertakan kolomtextPayload
.Di Logs Explorer, klik Run query.
Setelah tampilan diperbarui, Anda dapat melihat detail entri log yang Anda tulis pada langkah sebelumnya.
-
Di konsol Google Cloud , buka halaman notifications Pemberitahuan:
Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.
Panel Insiden menampilkan insiden dan detail tentang kebijakan pemberitahuan.
Jika Anda tidak melihat insiden saat membuka halaman Alerting, tunggu beberapa menit, lalu muat ulang halaman.
Anda tidak akan melihat insiden lain atau mendapatkan notifikasi lain jika Anda segera mengulangi perintah Google Cloud CLI. Setelan kebijakan pemberitahuan menentukan periode waktu minimum antara insiden. Anda dapat melihat dan mengubah setelan tersebut dengan mengedit kebijakan.