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
- 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_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
(ataumetric.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
(ataumetric.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
(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 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 kecommand
dengan OR logis. Proses dihitung jika cocok dengan salah satu filter.user
digabungkan kecommand_line
(command
) dengan logika AND. Proses hanya cocok 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 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")