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 dapat menerima notifikasi saat pesan tersebut muncul. Jenis kebijakan pemberitahuan ini disebut kebijakan pemberitahuan berbasis log. Dokumen ini menjelaskan cara melakukan hal berikut, 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. 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.

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

  • Berikan nama dan deskripsi untuk kebijakan pemberitahuan.
  • Pilih log yang notifikasinya ingin Anda terima.
  • Tetapkan waktu antara notifikasi.
  • Tetapkan waktu untuk penutupan insiden otomatis.
  • 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 menyertakan 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 saat alamat IPv4 yang tidak valid muncul di kolom jsonPayload.result entri log di syslog dengan tingkat keparahan NOTICE.

Untuk membuat kebijakan pemberitahuan ini, lakukan hal 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 dalam 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}$"
    

    Klik Run query untuk memvalidasi kueri.

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

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

    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. Masukkan deskripsi untuk kebijakan pemberitahuan Anda. Anda juga dapat menyertakan informasi yang mungkin 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 Choose logs to include in the alert, periksa kueri dan hasil dengan mengklik Preview logs.

    Sebaiknya buat kueri di panel Query Logs Explorer. Kueri yang Anda buat di panel Kueri 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 Pratinjau log.

  7. Klik Berikutnya.

  8. Pilih waktu minimum antarnotifikasi. Nilai ini memungkinkan Anda mengontrol jumlah notifikasi yang Anda dapatkan dari Pemantauan jika kondisi ini terpenuhi beberapa kali. Untuk contoh ini, pilih 5 menit dari opsi.

  9. Opsional: Pilih durasi penutupan insiden otomatis. Secara default, durasi tutup 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 memilih saluran tersebut dari daftar. Jika belum, klik Kelola saluran notifikasi dan tambahkan saluran email. Untuk 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. 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 telah Anda konfigurasi sebelumnya.

  4. Di panel Coba API ini, lakukan hal berikut:

    1. Ganti konten kolom Isi permintaan di API 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 200 HTTP dan isi respons kosong, {}. Untuk informasi selengkapnya tentang APIs Explorer, lihat Menggunakan APIs Explorer dalam dokumentasi Pemantauan; cara kerja APIs Explorer 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 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. Entri log memenuhi kondisi kebijakan pemberitahuan.
  • Insiden akan terbuka 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 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 secara manual menulis entri log yang memenuhi kondisi kebijakan pemberitahuan. Entri log biasanya ditulis oleh aplikasi atau layanan lainnya. Namun, sumber entri log tidak 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 mengilustrasikan 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 secret ini.

Jika Anda telah mengaktifkan logging audit untuk Secret Manager, setiap upaya yang berhasil mengakses secret akan membuat entri log audit. Setiap entri menyertakan nama secret dan identitas pemanggil.

Anda dapat membuat kebijakan pemberitahuan berbasis log yang memberi tahu Anda saat pengguna manusia mengakses secret.

Berikut adalah kutipan entri log audit yang ditulis oleh Secret Manager. Cuplikan ini menunjukkan kolom yang berguna untuk membuat kueri 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."
    },
    ...
  },
  ...
}

Subkolom 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, metodenya 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 prinsipal 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 bagi akses manusia ke secret, gunakan kueri ini di panel Choose logs to include in the alert.

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 kapan 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 Konsol Google 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 project Google Cloud Anda, lakukan salah satu hal berikut:

  • Untuk menavigasi 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 menavigasi dari Monitoring:

    1. Di konsol Google Cloud, buka halaman  Alerting:

      Buka Pemberitahuan

      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 pencocokan sebagian. Pencocokan tidak peka huruf besar/kecil. Jika Anda menentukan beberapa filter, filter tersebut akan digabungkan secara implisit oleh AND logis, kecuali jika Anda menyisipkan filter OR. Screenshot berikut mencantumkan kebijakan pemberitahuan yang diaktifkan dan dibuat setelah 1 Januari 2021:

Daftar kebijakan pemberitahuan yang diaktifkan 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 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. Dalam dialog konfirmasi, pilih Hapus.

  • Untuk mengaktifkan atau menonaktifkan kebijakan pemberitahuan, klik tombol alih yang terletak di bawah 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 yang Anda berikan saat menggunakan Logs Explorer di konsol Google Cloud:

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

Untuk membuat kebijakan pemberitahuan menggunakan Monitoring API, Anda harus 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 mewakili kebijakan pemberitahuan menggunakan struktur AlertPolicy. Struktur AlertPolicy memiliki beberapa struktur tersemat, 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 langsung dengan aturan notifikasi. Namun, untuk membuat kebijakan pemberitahuan berbasis log, Anda harus memiliki izin logging.notificationRules.create.

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

Kebijakan pemberitahuan memiliki nama tampilan dan dokumentasi terkait yang disertakan dengan notifikasi untuk membantu responden. Di Penjelajah Log, kolom ini disebut Nama Pemberitahuan dan Deskripsi Pemberitahuan. Anda mewakili 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 Kebijakan Pemantauan mencantumkan kebijakan berdasarkan nama tampilan dan menunjukkan apakah kebijakan didasarkan pada metrik atau log. Untuk 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. 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 entries to alert on. Anda mewakili 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 menggunakan daftar struktur Condition, walaupun 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 kebijakan pemberitahuan berbasis log, nama tampilannya 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 tanda kutip apa pun dalam kueri itu sendiri harus di-escape dengan karakter \ (backslash).

  • Struktur LogMatch juga menyertakan kolom labelExtractors opsional. Anda dapat menggunakan ekstraktor label untuk membuat label khusus dari entri log, lalu mereferensikan label tersebut dalam notifikasi.

    Misalnya, untuk mengekstrak nilai label labels."compute.googleapis.com/resource_id" dari entri log ke dalam 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 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 dalam kebijakan pemberitahuan, Anda merujuk ke label yang diekstrak menggunakan variabel berbentuk ${log.extracted_label.KEY}, dengan KEY adalah nama yang Anda berikan ke 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 Waktu antara notifikasi. 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 Penjelajah Log, 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 menyertakan 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 informasi tentang cara mengambil daftar saluran notifikasi yang tersedia, yang mencakup nama resource-nya, lihat Mengambil saluran dalam dokumentasi Pemantauan. Anda tidak dapat mendapatkan ID saluran menggunakan konsol Google Cloud.

Mengirim kebijakan pemberitahuan ke Monitoring API

Untuk membuat kebijakan pemberitahuan menggunakan Monitoring API, Anda harus membuat objek AlertPolicy dan mengirimkannya ke metode alertPolicies.create. Anda dapat memanggil alertPolicies.create menggunakan Google Cloud CLI, yang 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 lain; 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 yang disebut 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 Coba API ini, lakukan hal berikut:

    1. Di kolom name, masukkan nilai berikut:

      projects/PROJECT_ID
      
    2. Salin representasi JSON kebijakan pemberitahuan Anda dan ganti konten kolom Isi permintaan di API 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 API Explorer, lihat Menggunakan API Explorer dalam dokumentasi Pemantauan.

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

  5. Di Logs Explorer, klik Run query.

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

  6. Di konsol Google Cloud, buka halaman  Alerting:

    Buka 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 Pemberitahuan, tunggu beberapa menit, lalu muat ulang halaman.

Anda tidak akan melihat insiden lain atau mendapatkan notifikasi lain jika langsung mengulangi perintah Google Cloud CLI. Setelan kebijakan pemberitahuan menentukan jangka waktu minimum antar-insiden. Anda dapat melihat dan mengubah setelan tersebut dengan mengedit kebijakan.