Mengonfigurasi kebijakan pemberitahuan berbasis log

Anda dapat mengonfigurasi kebijakan pemberitahuan untuk memberi tahu Anda setiap kali pesan tertentu muncul di log yang disertakan. Misalnya, jika ingin mengetahui kapan log audit mencatat pesan akses data tertentu, Anda bisa mendapatkan 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:

  • Membuat dan menguji kebijakan pemberitahuan berbasis log.
  • Mengedit kebijakan pemberitahuan berbasis log.
  • Menghapus kebijakan pemberitahuan berbasis log.

Sebelum memulai

Tinjau Perbandingan pemberitahuan untuk menentukan apakah kebijakan pemberitahuan berbasis log cocok untuk data dalam 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 perlu 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 dengan menggunakan Logs Explorer

Anda dapat membuat kebijakan pemberitahuan berbasis log dari halaman Logs Explorer di Google Cloud Console atau dengan menggunakan Monitoring API. Bagian ini menjelaskan cara membuat kebijakan pemberitahuan berbasis log menggunakan Logs Explorer. Untuk mengetahui informasi Monitoring API, lihat bagian Membuat kebijakan pemberitahuan berbasis log menggunakan Monitoring API.

Antarmuka Logs Explorer akan memandu Anda melakukan langkah-langkah berikut:

  • Berikan nama dan deskripsi untuk kebijakan pemberitahuan.
  • Pilih log yang notifikasinya ingin Anda terima.
  • Menyetel waktu antar-notifikasi.
  • Menetapkan waktu penutupan insiden secara otomatis.
  • Tentukan siapa yang akan diberi tahu.

Misalnya, anggaplah 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 akan memberi tahu Anda saat 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:

  1. Di panel navigasi konsol Google Cloud, pilih Logging, lalu pilih Logs Explorer:

    Buka Logs Explorer

  2. Gunakan panel Query untuk mem-build kueri yang cocok dengan pesan yang ingin Anda gunakan dalam kebijakan pemberitahuan berbasis log.

    Misalnya, untuk menemukan entri log dengan tingkat keparahan NOTICE di log syslog yang memiliki alamat IP yang 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}$"
    

    Gunakan Run query di panel Query results untuk memvalidasi kueri.

  3. Di header panel Query results, klik  Create alert. Jika jendela Anda persempit, opsi Buat pemberitahuan mungkin muncul di menu Tindakan.

  4. Di panel Detail pemberitahuan, beri nama dan deskripsi kebijakan pemberitahuan:

    1. Masukkan nama untuk kebijakan pemberitahuan Anda di kolom Alert Policy Name. Misalnya: "Alamat jaringan: nilai IPv4 tidak valid".

    2. Pilih salah satu opsi dari menu Tingkat keseriusan kebijakan. Insiden dan notifikasi menampilkan tingkat keparahan.

    3. Masukkan deskripsi kebijakan pemberitahuan Anda. Anda juga 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 informasi tentang cara memformat dan menyesuaikan konten kolom ini, lihat Menggunakan Markdown dan variabel dalam template dokumentasi.

  5. Untuk melanjutkan ke langkah berikutnya, klik Berikutnya.

  6. Di panel Choose logs to include in the alert, periksa kueri dan hasilnya dengan mengklik Preview logs.

    Sebaiknya buat kueri di panel Query Logs Explorer. Kueri yang Anda build di panel Query juga ditampilkan di panel ini, misalnya:

    log_id("syslog")
    severity = "NOTICE"
    jsonPayload.result !~ "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}$"
    

    Anda dapat mengedit kueri di panel ini, jika perlu. Jika Anda mengedit kueri, periksa hasilnya dengan mengklik Preview logs.

  7. Klik Next.

  8. Pilih waktu minimum antar-notifikasi. Nilai ini memungkinkan Anda mengontrol jumlah notifikasi yang diterima dari pemberitahuan ini jika dipicu beberapa kali. Untuk contoh ini, pilih 5 min dari opsi.

  9. Opsional: Pilih durasi penutupan otomatis insiden. Secara default, durasi tutup otomatis insiden ditetapkan ke 7 hari.

  10. Klik Next.

  11. Pilih satu atau beberapa saluran notifikasi untuk notifikasi Anda. Untuk contoh ini, pilih saluran notifikasi email.

    Jika sudah mengonfigurasi saluran notifikasi email, Anda dapat memilihnya dari daftar. Jika belum, klik Manage notifikasi channels dan tambahkan saluran email. Untuk informasi tentang cara membuat saluran notifikasi, lihat Mengelola saluran notifikasi.

  12. Klik Save.

Kebijakan pemberitahuan berbasis log Anda kini siap untuk diuji.

Menguji contoh kebijakan pemberitahuan berbasis log

Untuk menguji kebijakan pemberitahuan yang Anda buat, Anda dapat secara manual menulis entri log yang cocok dengan kueri. Untuk menulis entri log, lakukan langkah-langkah berikut:

  1. Konfigurasikan entri log berikut dengan mengubah variabel PROJECT_ID menjadi 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",
          },
        },
      },
      ],
    }
    
  2. Buka halaman referensi logEntries.write, atau klik tombol berikut:

    Buka logEntries.write

  3. Salin entri log yang Anda konfigurasi sebelumnya.

  4. Di panel Try this API, lakukan hal berikut:

    1. Ganti konten kolom Request body di APIs Explorer dengan entri log yang Anda salin di langkah sebelumnya.

    2. Klik Jalankan. Jika diminta, ikuti alur autentikasi.

      Jika panggilan logEntries.write berhasil, Anda akan mendapatkan kode respons 200 HTTP dan isi respons kosong, {}. Untuk informasi selengkapnya tentang APIs Explorer, lihat Menggunakan APIs Explorer dalam dokumentasi Monitoring; APIs Explorer berfungsi dengan cara yang sama seperti Logging API.

Entri log cocok dengan filter yang ditentukan untuk kebijakan pemberitahuan dengan cara berikut:

  • Nilai logName menentukan log syslog yang ada di project Google Cloud Anda.
  • Nilai severity untuk entri log ini adalah NOTICE.
  • 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 dan memicu pemberitahuan.
  • Insiden dibuka di Cloud Monitoring.
  • Anda menerima notifikasi untuk insiden tersebut. Jika Anda mengonfigurasi saluran notifikasi email, notifikasi akan terlihat seperti screenshot berikut:

    Contoh kebijakan pemberitahuan berbasis log menghasilkan notifikasi email.

Anda dapat mengklik Lihat insiden di email untuk melihat insiden di Cloud Monitoring. Untuk informasi selengkapnya tentang insiden, lihat Mengelola insiden untuk pemberitahuan berbasis log.

Skenario lainnya: Pemberitahuan pada log audit

Contoh dalam Membuat pemberitahuan berbasis log bersifat buatan; Anda biasanya tidak membuat kebijakan pemberitahuan, kemudian menulis entri log secara manual untuk memicu pemberitahuan. Entri log biasanya ditulis oleh aplikasi atau layanan lainnya. Namun, sumber entri log tidak menjadi masalah; untuk pemberitahuan berbasis log, yang penting adalah kueri yang Anda gunakan untuk memilih entri log.

Bagian berikut menjelaskan skenario realistis untuk pemberitahuan berbasis log berdasarkan isi log audit. Setiap skenario menggambarkan cara membuat kueri yang memilih entri log audit yang sesuai. Jika tidak, prosedur untuk membuat pemberitahuan berbasis log sama seperti yang ditunjukkan dalam Membuat pemberitahuan berbasis log.

Notifikasi tentang 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 menyertakan nama rahasia dan identitas pemanggil.

Anda dapat membuat kebijakan pemberitahuan berbasis log yang memberi tahu Anda ketika ada pengguna manusia yang mengakses suatu secret.

Berikut adalah kutipan entri log audit yang ditulis oleh Secret Manager. Cuplikan ini menunjukkan 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.iam.gserviceaccount.com",
      "serviceAccountDelegationInfo": [],
      "principalSubject": "serviceAccount:my-svc-account@PROJECT_ID.iam.gserviceaccount.com"
    },
    ...
  },
  ...
}

Subkolom protoPayload berikut merupakan hal yang 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, parameternya adalah metode AccessSecretVersion.
  • authenticationInfo.principalEmail: mencatat akun yang memanggil metode di kolom methodName. Nilai yang diharapkan untuk kolom ini adalah akun layanan, yang diakhiri dengan gserviceaccount.com.

Guna menemukan entri log untuk 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 gserviceaccount.com. 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 !~ "gserviceaccount.com$"

Untuk membuat kebijakan pemberitahuan berbasis log untuk akses rahasia secara manual, gunakan kueri ini di panel Choose logs to include in the alert.

Notifikasi terkait 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.

Agar dapat menemukan entri log untuk 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 gserviceaccount.com, 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 !~ "gserviceaccount.com$"

Untuk membuat kebijakan pemberitahuan berbasis log bagi dekripsi yang dilakukan oleh pengguna manusia, gunakan kueri ini di panel Choose logs to include in the alert.

Kelola pemberitahuan berbasis log di Monitoring

Anda dapat melihat, mengedit, dan menghapus pemberitahuan berbasis log dengan menggunakan Konsol Google Cloud untuk Monitoring atau dengan menggunakan Monitoring API. Dokumen ini menjelaskan cara mengelola kebijakan pemberitahuan dengan menggunakan Konsol Google Cloud. Untuk mengetahui informasi tentang cara menggunakan Monitoring API untuk mengelola kebijakan pemberitahuan, lihat Mengelola kebijakan pemberitahuan dengan API.

Untuk melihat daftar semua kebijakan pemberitahuan di project Google Cloud Anda, lakukan salah satu langkah berikut:

  • Untuk keluar dari Logging:

    1. Di panel navigasi konsol Google Cloud, pilih Logging, lalu pilih Logs Explorer:

      Buka Logs Explorer

    2. Di header panel Query results, menu Actions, lalu pilih Manage alerts.

  • Untuk keluar dari Monitoring:

    1. Di panel navigasi konsol Google Cloud, pilih Monitoring, lalu pilih  Alerting:

      Buka Alerting

    2. Untuk melihat semua kebijakan dan mengaktifkan pemfilteran, di panel Policies, klik See all policies.

Kedua tindakan ini akan mengarahkan Anda ke halaman Policy 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 menyetel nilai ke kecocokan persis untuk nama kebijakan, atau kecocokan sebagian. Kecocokan tidak peka huruf besar/kecil. Jika Anda menentukan beberapa filter, filter secara implisit akan digabungkan oleh AND yang logis, kecuali jika Anda menyisipkan filter OR. Screenshot berikut mencantumkan kebijakan pemberitahuan yang diaktifkan dan dibuat setelah 1 Januari 2021:

Daftar kebijakan pemberitahuan aktif 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 Opsi lainnya, lalu pilih salah satu opsi. Mengedit dan menyalin kebijakan mirip dengan prosedur yang dijelaskan dalam Membuat kebijakan pemberitahuan berbasis log. Anda dapat mengubah dan, dalam beberapa kasus, menghapus nilai dalam kolom. Setelah selesai, klik Simpan.

    Anda juga dapat mengedit kebijakan pemberitahuan berbasis log dengan mengklik namanya di daftar kebijakan.

  • Untuk menghapus kebijakan, klik Opsi lainnya , lalu pilih Hapus. Dalam dialog konfirmasi, pilih Delete.

  • Untuk mengaktifkan atau menonaktifkan kebijakan pemberitahuan, klik tombol yang berada di bawah judul Enabled.

Membuat kebijakan pemberitahuan berbasis log menggunakan Monitoring API

Anda dapat membuat pemberitahuan berbasis log dengan menggunakan Monitoring API. Anda memberikan informasi yang sama ke Monitoring API yang Anda berikan saat menggunakan Logs Explorer di Konsol Google Cloud:

  • Nama dan deskripsi untuk notifikasi.
  • Log yang notifikasinya ingin Anda terima.
  • Waktu di antara notifikasi.
  • Waktu untuk penutupan insiden secara otomatis.
  • Siapa yang akan diberi tahu.

Untuk membuat kebijakan pemberitahuan menggunakan Monitoring API, buat objek AlertPolicy dan kirimkan 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 menampilkan kebijakan pemberitahuan menggunakan struktur AlertPolicy. Struktur AlertPolicy memiliki beberapa struktur tersemat, termasuk deskripsi kondisi yang memicu pemberitahuan. Kebijakan pemberitahuan berbasis log berbeda dengan kebijakan pemberitahuan berbasis metrik dalam hal berikut:

  • Anda mendeskripsikan kondisi menggunakan jenis kondisi LogMatch. Kebijakan pemberitahuan berbasis metrik menggunakan jenis kondisi yang berbeda-beda.
  • 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 antar-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 pemberitahuan berbasis log, jenis kondisinya adalah LogMatch. Saat Anda menggunakan Monitoring API untuk mengelola kebijakan pemberitahuan, tidak ada perbedaan dalam cara mencantumkan, mengedit, atau menghapus metrik dan kebijakan berbasis log. Mengelola kebijakan pemberitahuan dengan API menjelaskan cara membuat, mencantumkan, mengedit, dan menghapus kebijakan pemberitahuan menggunakan Monitoring API.

Mendesain kebijakan pemberitahuan

Bagian berjudul Membuat kebijakan pemberitahuan berbasis log dengan menggunakan Logs Explorer menjelaskan satu cara untuk membuat 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 dengan menggunakan Monitoring API, buat 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 deskripsi

Kebijakan pemberitahuan memiliki nama tampilan dan dokumentasi terkait yang disediakan dengan notifikasi untuk membantu responden. Di Logs Explorer, kolom ini disebut Alert Name dan Alert Description. Anda mewakili nilai-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 menyertakan "(API)" sehingga Anda dapat membedakan antara dua contoh kebijakan saat melihat daftar kebijakan di Konsol Google Cloud. Halaman Policies Monitoring mencantumkan kebijakan menurut nama tampilan dan menunjukkan apakah kebijakan tersebut didasarkan pada metrik atau log. Untuk mengetahui informasi selengkapnya, lihat Mengelola pemberitahuan berbasis log di Monitoring.

Di subkolom content, kolom documentation mencakup deskripsi yang mungkin Anda berikan saat menggunakan Logs Explorer. Subkolom kedua, mimeType diperlukan saat Anda menentukan nilai untuk kolom 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 Define log logs to alert on. Anda mewakili nilai-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 kondisi.

  • Nilai kolom displayName adalah deskripsi singkat kondisi. Saat Anda menggunakan Logs Explorer untuk membuat pemberitahuan berbasis log, nama tampilan akan selalu "Log match condition". Saat menggunakan Monitoring API, Anda dapat memberikan nama tampilan yang lebih akurat. Nilai wajib diisi.

  • Nilai kolom conditionMatchedLog adalah struktur LogMatch, dan nilai kolom filter adalah kueri yang Anda tentukan di Logs Explorer. Karena kueri ini disediakan sebagai nilai kolom JSON, seluruh kueri akan muncul dalam tanda kutip, dan setiap tanda kutip dalam kueri itu sendiri harus di-escape dengan karakter \ (garis miring terbalik).

  • Struktur LogMatch juga mencakup kolom labelExtractors opsional. Anda dapat menggunakan ekstraktor label untuk membuat 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 disebut vm_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 gunakan REGEXP_EXTRACT untuk mencocokkan substring berdasarkan ekspresi reguler. Fungsi ini sama dengan yang digunakan untuk ekstraksi label di metrik berbasis log. Baca Membuat label untuk informasi selengkapnya.

    Anda dapat menggunakan label yang diekstrak ini dalam dokumentasi kebijakan pemberitahuan, sehingga label tersebut dilaporkan dalam notifikasi. Di kolom documentation pada kebijakan pemberitahuan, Anda merujuk ke label yang diekstrak menggunakan variabel dalam format ${log.extracted_label.KEY}, dengan KEY adalah nama yang Anda berikan pada label yang diekstrak.

    Contoh berikut menunjukkan cara merujuk ke kunci untuk label yang diekstrak vm_identifier, sehingga nilai label log labels."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 dari beberapa kondisi dalam kebijakan pemberitahuan berbasis metrik. Anda hanya dapat menggunakan satu kondisi dalam pemberitahuan berbasis log, dan Anda harus menentukan kolom combiner dengan nilai "OR". Anda tidak dapat membuat pemberitahuan berbasis log dengan beberapa kondisi.

Menetapkan nilai notifikasi dan tutup otomatis

Kebijakan pemberitahuan berbasis log menentukan waktu minimum antar-notifikasi. Di Logs Explorer, Anda memilih nilai dari menu Time between notifications. Anda mewakili 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 insiden penutupan secara otomatis. Nilai defaultnya adalah 7 hari. Di Logs Explorer, Anda dapat memilih nilai yang berbeda dari menu Incident autoclose duration. Opsi ini sesuai dengan kolom autoclose di struktur AlertStrategy API. Jika 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 dapat memilih saluran dari menu. Anda mewakili nilai-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"
  ]
}

Bila Anda membuat saluran notifikasi, saluran tersebut akan diberi nama resource. Untuk mengetahui informasi tentang cara mengambil daftar saluran notifikasi yang tersedia, yang menyertakan nama resource-nya, baca bagian Mengambil saluran dalam dokumentasi Monitoring. Anda tidak bisa mendapatkan ID saluran dengan menggunakan Konsol Google Cloud.

Mengirim kebijakan pemberitahuan ke Monitoring API

Untuk membuat kebijakan pemberitahuan menggunakan Monitoring API, buat objek AlertPolicy dan kirimkan ke metode alertPolicies.create. Anda dapat memanggil alertPolicies.create menggunakan Google Cloud CLI, yang memanggil Monitoring API secara langsung.

Anda juga dapat membuat pemberitahuan berbasis log 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 hal berikut:

  1. Masukkan representasi JSON dari kebijakan pemberitahuan Anda ke dalam file teks, misalnya, ke dalam file bernama alert-invalid-ip.json.

  2. Teruskan file JSON ini ke gcloud CLI menggunakan perintah berikut:

    gcloud alpha monitoring policies create --policy-from-file="alert-invalid-ip.json"
    
  3. Jika berhasil, perintah ini akan menampilkan nama resource kebijakan yang 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:

  1. Buka halaman referensi alertPolicies.create.

  2. Di panel Try this API, lakukan hal berikut:

    1. Di kolom name, masukkan nilai berikut:

      projects/PROJECT_ID
      
    2. Salin representasi JSON dari kebijakan pemberitahuan Anda dan ganti konten kolom Request body di APIs Explorer dengan kebijakan pemberitahuan yang disalin.

    3. Klik Jalankan.

      Jika panggilan alertPolicies.create berhasil, Anda akan mendapatkan kode respons 200 HTTP dan isi respons kosong, {}. Untuk 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 di bagian 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:

  1. Di panel navigasi konsol Google Cloud, pilih Logging, lalu pilih Logs Explorer:

    Buka Logs Explorer

  2. 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 kolom textPayload yang berisi string "Ups".

  3. Klik Buat pemberitahuan dan selesaikan dialog. Anda harus memasukkan nama untuk kebijakan tersebut, seperti Alert on Oops. Kueri yang Anda masukkan pada langkah sebelumnya otomatis disertakan dalam kebijakan pemberitahuan.

  4. 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 ini memiliki tingkat keparahan ERROR dan mencakup kolom textPayload.

  5. Di Logs Explorer, klik Run query.

    Setelah layar dimuat ulang, Anda dapat melihat detail entri log yang Anda tulis di langkah sebelumnya.

  6. Untuk melihat pemberitahuan, di panel navigasi, pilih Monitoring lalu Alerting. 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 segera mengulangi perintah Google Cloud CLI. Setelan kebijakan pemberitahuan menentukan jangka waktu minimum antar-insiden. Anda dapat melihat dan mengubah pengaturan tersebut dengan mengedit kebijakan.