Panduan ini menjelaskan cara menghitung jumlah proses yang berjalan di virtual machine (VM) Anda 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 pemakaian 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 jenis metrik atau resource yang dipantau. Untuk informasi umum, lihat Filter pemantauan.
Sebelum memulai
Jika Anda belum terbiasa dengan metrik, deret waktu, dan resource yang dipantau, 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, maka proses tersebut tidak 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 diapit 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 mendeskripsikan kebijakan pemberitahuan yang mengirimkan notifikasi jika jumlah proses kurang dari 30 pada instance VM Compute Engine mana pun:
{
"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. Klausul pertama, select_process_count(\"*\"), menentukan bahwa
semua proses dihitung. Klausul kedua, resource.type=\"gce_instance\",
mengidentifikasi bahwa VM Compute Engine harus dipantau.
Jika Anda menggunakan konsol Google Cloud , gunakan mode filter langsung untuk memasukkan nilai filter Monitoring. Namun, pastikan untuk menghapus semua 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 pemberitahuan atau diagram di dasbor, lihat dokumen berikut:
- Pemberitahuan: Mode filter langsung
- Diagram: Mode filter langsung
- Metrics Explorer: Mode filter langsung
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_instanceaws_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
Memantau filter.
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(ataumetric.labels.command_line): Filter ini berlaku untuk command line yang digunakan untuk memulai proses. Baris perintah dipangkas setelah 1.024 karakter, sehingga teks dalam baris perintah yang melebihi batas tersebut tidak dapat dicocokkan.command(ataumetric.labels.command): Filter ini berlaku untuk command line yang digunakan untuk memulai proses. Perintah dipangkas setelah 1.024 karakter, sehingga teks dalam perintah di luar batas tersebut tidak dapat dicocokkan.user(ataumetric.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 Anda menggunakan argumen bernama, Anda harus menentukan objek filter, pernyataan sama dengan, =, dan nilai. Jika Anda menggunakan argumen posisional, Anda hanya menentukan nilai.
Pengujian string peka huruf besar/kecil menentukan apakah suatu proses cocok dengan
filter.
Nilai objek filter dapat berupa salah satu dari 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_linedigabungkan kecommanddengan OR logis. Proses dihitung jika cocok dengan salah satu filter.userdigabungkan kecommand_line(command) dengan logika AND. Proses hanya cocok jika cocok dengan filteruserdan filtercommand_line(command).- Jika Anda menerapkan semua filter, maka proses dihitung jika cocok dengan filter
userdan jika cocok dengan filtercommand_lineataucommand.
Argumen bernama
Untuk menggunakan argumen bernama, tentukan nama filter, pernyataan sama dengan, =, dan
kemudian nilai filter. Anda dapat menentukan argumen bernama dalam urutan apa pun.
Misalnya, berikut ini mencocokkan 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 kecocokan 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
diawali dengan /bin/bash:
select_process_count("user=www", "command_line=starts_with(\"/bin/bash \")")
Argumen posisi
Untuk menggunakan argumen posisi, Anda hanya perlu 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 jika cocok dengan kedua objek filter:
select_process_count("/sbin/init", "root")