Filter kesehatan proses

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

Jika Anda tertarik dengan informasi tentang cara menjalankan proses, misalnya, Anda ingin mengetahui pemakaian CPU untuk proses tertentu, lalu lihat Metrik proses.

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

Sebelum memulai

Jika Anda belum memahami 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 suatu 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 dalam kolom COMMAND digabungkan dengan tanda kurung siku, misalnya [nfsd], informasi command line untuk proses tidak tersedia sehingga prosesnya 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 di instance VM Compute Engine apa pun kurang dari 30:

     {
        "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 perintah berikut:

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

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

Pengidentifikasi sumber daya

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 pada 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 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 akan dipotong setelah 1.024 karakter, sehingga teks dalam command line yang melebihi batas tersebut tidak dapat dicocokkan.

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

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

Anda dapat menggunakan argumen posisi 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 posisi, Anda hanya menentukan nilainya. Pengujian string yang peka huruf besar/kecil menentukan apakah proses cocok dengan filter.

Nilai objek filter dapat berupa salah satu dari yang 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 oleh logika-OR. Sebuah proses dihitung jika cocok dengan salah satu filter.
  • user digabungkan ke command_line (command) oleh AND logis. Proses akan cocok hanya 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 yang dinamai

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

Misalnya, hal berikut 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 ekspresi reguler yang cocok dengan 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 diawali dengan /bin/bash:

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

Argumen posisi

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

  • Jika hanya memberikan satu argumen, 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 yang kedua adalah filter pengguna. Proses dihitung jika cocok dengan kedua objek filter:
        select_process_count("/sbin/init", "root")