Filter kondisi proses

Panduan ini menjelaskan cara menghitung jumlah proses yang berjalan di virtual machine (VM) yang memenuhi kondisi filter yang Anda tentukan. Anda dapat membuat kebijakan pemberitahuan dan diagram yang menghitung proses menggunakan Cloud Monitoring API atau menggunakan Konsol Google Cloud.

Jika Anda tertarik dengan informasi tentang proses yang sedang berjalan, misalnya, Anda ingin mengetahui penggunaan CPU untuk proses tertentu, lihat Metrik proses.

Struktur filter Monitoring saat digunakan untuk menghitung proses mirip dengan struktur yang digunakan saat Anda menggunakan filter ini untuk menentukan resource atau jenis metrik yang dipantau. Untuk informasi umum, lihat Memfilter pemantauan.

Sebelum memulai

Jika Anda tidak terbiasa dengan metrik, deret waktu, dan resource yang dimonitor, lihat Metrik, Deret Waktu, dan Resource.

Proses yang dihitung

Monitoring menghitung proses dengan menerapkan ekspresi reguler ke command line yang memanggil proses. Jika proses tidak memiliki kolom command line yang tersedia, proses tersebut tidak akan dihitung.

Salah satu cara untuk menentukan apakah suatu proses dapat dihitung adalah dengan melihat output perintah ps Linux:

    ps aux | grep nfs
    USER      PID  %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root      1598  0.0  0.0      0     0 ?        S<   Oct25   0:00 [nfsd4]
    root      1639  0.0  0.0      0     0 ?        S    Oct25   2:33 [nfsd]
    root      1640  0.0  0.0      0     0 ?        S    Oct25   2:36 [nfsd]

Jika entri di kolom COMMAND digabungkan dengan tanda kurung siku, misalnya [nfsd], informasi command line untuk proses tidak tersedia sehingga proses tidak dihitung.

Struktur filter kondisi proses

Filter kondisi proses mengidentifikasi proses yang akan dihitung dan satu atau beberapa resource yang prosesnya akan dihitung. Misalnya, JSON berikut menjelaskan kebijakan pemberitahuan yang mengirim notifikasi jika jumlah proses kurang dari 30 pada instance VM Compute Engine:

     {
        "displayName": "Count all processes",
        "conditionThreshold": {
          "aggregations": [],
          "comparison": "COMPARISON_LT",
          "duration": "0s",
          "filter": "select_process_count(\"*\") resource.type=\"gce_instance\"",
          "thresholdValue": 30,
          "trigger": {
            "count": 1
          }
        }
     }

Dalam contoh ini, nilai pernyataan filter adalah string dengan dua klausa. Klausa pertama, select_process_count(\"*\"), menentukan bahwa semua proses dihitung. Klausa kedua, resource.type=\"gce_instance\", mengidentifikasi bahwa VM Compute Engine akan dipantau.

Jika Anda menggunakan konsol Google Cloud, gunakan mode filter langsung untuk memasukkan nilai filter Monitoring. Namun, pastikan untuk menghapus escape yang melindungi substring. Misalnya, untuk menghitung semua proses untuk VM Compute Engine, masukkan kode berikut:

    select_process_count("*") resource.type="gce_instance"

Untuk informasi tentang cara mengakses mode filter langsung saat menggunakan Metrics Explorer, atau saat membuat kebijakan pemberitahuan atau diagram di dasbor, lihat dokumen berikut

ID resource

Filter kondisi proses harus menetapkan kolom resource.type untuk menentukan VM yang prosesnya dihitung. Nilai filter ini harus berupa salah satu dari berikut:

  • gce_instance
  • aws_ec2_instance

Jika Anda hanya menentukan kolom resource.type, proses di semua VM akan dihitung:

  • Untuk memilih satu instance VM, tambahkan objek filter metric.labels.instance_name.
  • Untuk memilih grup VM, tambahkan objek filter group.id.

Untuk mengetahui informasi selengkapnya tentang kolom resource.type, lihat Filter pemantauan.

ID proses

Filter kondisi proses harus memanggil fungsi select_process_count. Argumen fungsi ini mengidentifikasi proses yang akan dihitung.

Ada tiga objek filter yang dapat Anda tentukan dalam panggilan ke select_process_count:

  • command_line (atau metric.labels.command_line): Filter ini berlaku untuk command line yang digunakan untuk memulai proses. Command line terpotong setelah 1.024 karakter, sehingga teks dalam command line di luar batas tersebut tidak dapat dicocokkan.

  • command (atau metric.labels.command): Filter ini berlaku untuk command line yang digunakan untuk memulai proses. Perintah terpotong setelah 1.024 karakter, sehingga teks dalam perintah di luar batas tersebut tidak dapat dicocokkan.

  • user (atau metric.labels.user): Filter ini berlaku untuk pengguna yang memulai proses.

Anda dapat menggunakan argumen posisional atau argumen bernama dalam panggilan ke select_process_count. Jika menggunakan argumen bernama, Anda harus menentukan objek filter, pernyataan sama dengan, =, dan nilai. Jika menggunakan argumen posisional, Anda hanya menentukan nilai. Pengujian string peka huruf besar/kecil menentukan apakah proses cocok dengan filter.

Nilai objek filter dapat berupa salah satu dari hal berikut:

  • string (pencocokan persis)
  • * (karakter pengganti)
  • has_substring(string)
  • starts_with(string)
  • ends_with(string)
  • monitoring.regex.full_match(string)

Jika Anda menentukan beberapa filter, aturan berikut akan berlaku:

  • command_line digabungkan ke command dengan OR logis. Proses dihitung jika cocok dengan salah satu filter.
  • user digabungkan ke command_line (command) dengan logika AND. Proses hanya cocok jika cocok dengan filter user dan filter command_line (command).
  • Jika Anda menerapkan semua filter, proses akan dihitung saat cocok dengan filter user dan saat cocok dengan filter command_line atau command.

Argumen bernama

Untuk menggunakan argumen bernama, tentukan nama filter, pernyataan sama dengan, =, lalu nilai filter. Anda dapat menentukan argumen bernama dalam urutan apa pun.

Misalnya, berikut ini cocok dengan semua proses yang dimulai oleh root saat command line menyertakan string nginx:

     select_process_count("command_line=has_substring(\"nginx\")","user=root")

Contoh ini menggunakan pencocokan ekspresi reguler di command line:

     select_process_count("command_line=monitoring.regex.full_match(\".*nginx.*\")","user=starts_with(\"root\")")

Contoh ini menghitung semua proses yang command line-nya adalah /bin/bash:

     select_process_count("command=/bin/bash")

Contoh ini menghitung semua proses yang dimulai oleh pengguna www yang command line-nya dimulai dengan /bin/bash:

     select_process_count("user=www", "command_line=starts_with(\"/bin/bash \")")

Argumen posisi

Untuk menggunakan argumen posisi, Anda hanya memberikan nilai filter. Aturan berikut berlaku untuk argumen posisional:

  • Jika satu argumen diberikan, argumen tersebut akan ditafsirkan sebagai objek filter command line:
        select_process_count("*")
        select_process_count("/sbin/init")
        select_process_count("starts_with(\"/bin/bash -c\")")
        select_process_count("ends_with(\"--alsologtostderr\")")
        select_process_count("monitoring.regex.full_match(\".*nginx.*\")")
  • Jika dua argumen diberikan, argumen pertama akan ditafsirkan sebagai filter command line dan argumen kedua adalah filter pengguna. Proses dihitung saat cocok dengan kedua objek filter:
        select_process_count("/sbin/init", "root")