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 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

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:

  1. Di konsol Google Cloud , buka halaman Logs Explorer:

    Buka Logs Explorer

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

  2. 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 log syslog 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.

  3. Di toolbar Query results, luaskan menu Actions, lalu pilih Create log alert.

  4. Di panel Detail pemberitahuan, lakukan hal berikut:

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

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

    3. 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.

  5. Untuk melanjutkan ke langkah berikutnya, klik Berikutnya.

  6. Di panel Pilih log untuk disertakan dalam pemberitahuan, lakukan hal berikut:

    1. Masukkan kueri dan/atau edit kueri yang ada untuk memfilter log yang tersedia. Entri log yang cocok dengan kueri akan menyebabkan kebijakan pemberitahuan dipicu.

    2. Untuk memverifikasi kueri, klik Pratinjau log.

    3. 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}, dengan KEY adalah nama yang Anda berikan untuk label yang diekstrak.

  7. Klik Berikutnya.

  8. 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.

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

  10. Klik Berikutnya.

  11. 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.

  12. 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:

  1. 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",
          },
        },
      },
      ],
    }
  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 Isi permintaan di APIs Explorer dengan entri log yang Anda salin pada langkah sebelumnya.

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

      Jika panggilan logEntries.write berhasil, Anda akan mendapatkan kode respons HTTP 200 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 log syslog yang ada di projectGoogle 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. 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:

    Contoh kebijakan pemberitahuan berbasis log akan menghasilkan notifikasi email.

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 adalah AccessSecretVersion.
  • authenticationInfo.principalEmail: mencatat akun yang memanggil metode di kolom methodName. 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:

    1. Di konsol Google Cloud , buka halaman Logs Explorer:

      Buka Logs Explorer

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

    2. Di toolbar Query results, luaskan menu Actions, lalu pilih Manage log alerts.

  • Untuk membuka halaman dari Monitoring:

    1. Di konsol Google Cloud , buka halaman  Pemberitahuan:

      Buka Alerting

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

    2. 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:

Daftar kebijakan pemberitahuan yang diaktifkan dan 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 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 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 struktur LogMatch, dan nilai kolom filter 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 kolom labelExtractors 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 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 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}, dengan KEY 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 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 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:

  1. Masukkan representasi JSON 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 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 kebijakan pemberitahuan Anda dan ganti isi kolom Isi permintaan di APIs Explorer dengan kebijakan pemberitahuan yang disalin.

    3. Klik Jalankan.

      Jika panggilan alertPolicies.create berhasil, Anda akan mendapatkan kode respons HTTP 200 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:

  1. Di konsol Google Cloud , buka halaman Logs Explorer:

    Buka Logs Explorer

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

  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 "Oops".

  3. Di toolbar Query results, luaskan menu Actions, lalu pilih 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.

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

  5. Di Logs Explorer, klik Run query.

    Setelah tampilan diperbarui, Anda dapat melihat detail entri log yang Anda tulis pada langkah sebelumnya.

  6. Di konsol Google Cloud , buka halaman  Pemberitahuan:

    Buka Alerting

    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.