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
- Pemberitahuan: Mode filter langsung
- Diagram: Mode filter langsung
- Metrics Explorer: Mode filter langsung
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
(ataumetric.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
(ataumetric.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
(ataumetric.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 kecommand
oleh logika-OR. Sebuah proses dihitung jika cocok dengan salah satu filter.user
digabungkan kecommand_line
(command
) oleh AND logis. Proses akan cocok hanya jika cocok dengan filteruser
dan filtercommand_line
(command
).- Jika Anda menerapkan semua filter, proses akan dihitung saat cocok dengan
filter
user
dan saat cocok dengan filtercommand_line
ataucommand
.
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")