In diesem Leitfaden wird beschrieben, wie Sie die Anzahl der Prozesse zählen, die auf Ihren virtuellen Maschinen (VMs) ausgeführt werden und die den von Ihnen angegebenen Filterbedingungen entsprechen. Sie können Benachrichtigungsrichtlinien und Diagramme erstellen, die Prozesse zählen über die Cloud Monitoring API oder die Google Cloud Console.
Wenn Sie Informationen zu laufenden Prozessen erhalten möchten, z. B. die CPU-Auslastung für bestimmte Prozesse, sehen Sie unter Prozessmesswerte nach.
Die Struktur des Monitoring-Filters, wenn er zum Zählen von Prozessen verwendet wird, ähnelt der Struktur, die verwendet wird, wenn Sie mit diesen Filtern überwachte Ressourcen oder Messwerttypen angeben. Allgemeine Informationen finden Sie unter Filter überwachen.
Hinweis
Wenn Sie mit Messwerten, Zeitreihen und überwachten Ressourcen nicht vertraut sind, Siehe Messwerte, Zeitachsen und Ressourcen.
Gezählte Prozesse
Monitoring zählt Prozesse durch Anwenden eines regulären Ausdrucks auf der Befehlszeile, die den Prozess aufgerufen hat. Wenn für einen Prozess kein Befehlszeilenfeld verfügbar ist, wird er nicht gezählt.
Eine Möglichkeit, um zu bestimmen, ob ein Prozess gezählt werden kann
Sehen Sie sich die Ausgabe des Linux-Befehls ps
an:
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]
Wenn der Eintrag in der Spalte COMMAND
in eckige Klammern gesetzt wird,
z. B. [nfsd]
, werden die Befehlszeileninformationen für den Prozess
und der Prozess nicht gezählt wird.
Struktur des Prozessintegritätsfilters
Ein Prozessintegritätsfilter bestimmt die zu zählenden Prozesse sowie eine oder mehrere Ressourcen, deren Prozesse gezählt werden sollen. Folgende JSON-Datei beschreibt beispielsweise eine Benachrichtigungsrichtlinie, die eine Benachrichtigung auslöst, wenn die Anzahl der Prozesse auf einer beliebigen Compute Engine-VM-Instanz kleiner als 30 ist:
{ "displayName": "Count all processes", "conditionThreshold": { "aggregations": [], "comparison": "COMPARISON_LT", "duration": "0s", "filter": "select_process_count(\"*\") resource.type=\"gce_instance\"", "thresholdValue": 30, "trigger": { "count": 1 } } }
In diesem Beispiel ist der Wert der filter
-Anweisung ein String mit zwei Klauseln. Die erste Klausel, select_process_count(\"*\")
, gibt an, dass alle Prozesse gezählt werden. Die zweite Klausel, resource.type=\"gce_instance\"
, gibt an, dass Compute Engine-VMs überwacht werden sollen.
Wenn Sie die Google Cloud Console verwenden, geben Sie den Wert eines Monitoring-Filters im direkten Filtermodus ein. Entfernen Sie jedoch alle Escape-Sequenzen, die einen Teilstring schützen. Wenn Sie beispielsweise alle Prozesse für Compute Engine-VMs zählen möchten, geben Sie Folgendes ein:
select_process_count("*") resource.type="gce_instance"
Informationen zum Zugriff auf den direkten Filtermodus bei der Verwendung von Metrics Explorer oder zum Erstellen von Benachrichtigungsrichtlinien oder Diagrammen in Dashboards finden Sie in folgenden Dokumenten:
- Benachrichtigungen: Direkter Filtermodus
- Diagramme: Direkter Filtermodus
- Metrics Explorer: Direktfiltermodus
Ressourcenkennzeichner
In einem Prozessintegritätsfilter muss das Feld resource.type
festgelegt werden, um die VMs anzugeben, deren Prozesse gezählt werden sollen. Bei dem Wert dieses Filters muss es sich um einen der folgenden Werte handeln:
Folgendes:
gce_instance
aws_ec2_instance
Wenn Sie nur das resource.type
-Feld angeben, werden Prozesse auf allen VMs gezählt:
- Um eine einzelne VM-Instanz auszuwählen, fügen Sie ein
metric.labels.instance_name
-Filterobjekt hinzu. - Wenn Sie eine Gruppe an VMs auswählen möchten, fügen Sie ein
group.id
-Filterobjekt hinzu.
Weitere Informationen zum resource.type
-Feld finden Sie unter Monitoring-Filter.
Prozess-ID
Ein Prozessintegritätsfilter muss die Funktion select_process_count
aufrufen.
Die Argumente dieser Funktion identifizieren die zu zählenden Prozesse.
Es gibt drei Filterobjekte, die Sie über einen Aufruf an select_process_count
angeben können:
command_line
(odermetric.labels.command_line
): Dieser Filter gilt für Befehlszeile, mit der der Prozess gestartet wird. Befehlszeilen werden nach 1.024 Zeichen abgeschnitten, sodass Text in einer Befehlszeile, der diesen Grenzwert überschreitet, nicht mit diesem Wert verglichen werden kann.command
(odermetric.labels.command
): Dieser Filter gilt für den Befehl Zeile, in der der Prozess gestartet wird. Befehle sind abgeschnitten nach 1024 Zeichen, sodass Text in einem Befehl über dieser Grenze liegt nicht abgeglichen werden kann.user
(odermetric.labels.user
): Dieser Filter gilt für den Nutzer, der den Prozess gestartet haben.
Sie können entweder Positionsargumente oder benannte Argumente im Aufruf von
select_process_count
Wenn Sie mit dem Namen
Argumenten verwenden, müssen Sie das Filterobjekt, eine Gleichheitsanweisung, =
,
und einen Wert. Wenn Sie Positionsargumente verwenden, geben Sie nur den Wert an.
Bei einem Stringtest wird zwischen Groß- und Kleinschreibung unterschieden, um festzustellen, ob ein Prozess eine Übereinstimmung mit dem
aus.
Der Wert eines Filterobjekts kann sein:
- String (genau passend)
*
(Platzhalter)has_substring(string)
starts_with(string)
ends_with(string)
monitoring.regex.full_match(string)
Wenn Sie mehrere Filter angeben, gelten folgende Regeln:
command_line
ist durch ein logisches OR mitcommand
verknüpft. Ein Prozess wird gezählt, wenn er mit einem der Filter übereinstimmt.user
ist durch ein logisches AND mitcommand_line
(command
) verknüpft. Ein Prozess gilt nur dann als Übereinstimmung, wenn er mit demuser
-Filter und demcommand_line
(command
)-Filter übereinstimmt.- Wenn Sie alle Filter anwenden, wird ein Prozess gezählt, wenn er mit dem
user
-Filter und mit demcommand_line
- odercommand
-Filter übereinstimmt.
Benannte Argumente
Wenn Sie benannte Argumente verwenden möchten, geben Sie den Filternamen, eine Gleichheitsanweisung, =
und
und dann den Filterwert. Sie können benannte Argumente in beliebiger Reihenfolge angeben.
Folgende Abfrage stimmt beispielsweise mit allen Prozessen überein, die vom Root gestartet werden, falls die Befehlszeile den String nginx
enthielt:
select_process_count("command_line=has_substring(\"nginx\")","user=root")
In diesem Beispiel wird eine Übereinstimmung mit einem regulären Ausdruck in der Befehlszeile verwendet:
select_process_count("command_line=monitoring.regex.full_match(\".*nginx.*\")","user=starts_with(\"root\")")
In diesem Beispiel werden alle Prozesse gezählt, deren Befehlszeile /bin/bash
war:
select_process_count("command=/bin/bash")
In diesem Beispiel werden alle Prozesse gezählt, die vom Nutzer www
gestartet wurden und deren Befehlszeile mit /bin/bash
beginnt:
select_process_count("user=www", "command_line=starts_with(\"/bin/bash \")")
Positionsargumente
Wenn Sie Positionsargumente nutzen möchten, geben Sie nur den Filterwert an. Folgende Regeln gelten für Positionsargumente:
- Ist ein einzelnes Argument angegeben, wird dieses Argument als Befehlszeilenfilterobjekt interpretiert:
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.*\")")
- Wenn zwei Argumente angegeben werden, wird das erste Argument als Befehlszeilenfilter und das zweite als Nutzerfilter interpretiert. Ein Prozess wird gezählt wenn es mit beiden Filterobjekten übereinstimmt:
select_process_count("/sbin/init", "root")