Heim > Artikel > Web-Frontend > Shell-Skript implementiert Linux-System- und Prozessressourcenüberwachung_Grundkenntnisse
Im Prozess des Serverbetriebs und der Serverwartung ist es häufig erforderlich, verschiedene Ressourcen des Servers zu überwachen, z. B. CPU-Auslastungsüberwachung, Überwachung der Festplattennutzung, Überwachung der Prozessnummer usw., um rechtzeitig einen Alarm auszulösen und zu benachrichtigen Im Systemadministrator ist eine Anomalie aufgetreten. In diesem Artikel werden einige allgemeine Überwachungsanforderungen und das Schreiben von Shell-Skripten unter Linux-Systemen vorgestellt.
Artikelverzeichnis:
1.Linux verwendet Shell, um zu prüfen, ob der Prozess existiert
2.Linux verwendet Shell, um die CPU-Auslastung von Prozessen zu erkennen
3.Linux verwendet Shell, um die Prozessspeichernutzung zu erkennen
4.Linux verwendet Shell, um die Nutzung von Prozesshandles zu erkennen
5.Linux verwendet Shell, um zu prüfen, ob ein TCP- oder UDP-Port lauscht
6.Linux verwendet Shell, um die Anzahl der laufenden Prozesse eines bestimmten Prozessnamens zu überprüfen
7.Linux verwendet Shell, um die CPU-Auslastung des Systems zu erkennen
8.Linux verwendet Shell, um den Speicherplatz auf der Systemfestplatte zu erkennen
9. Zusammenfassung
Überprüfen Sie, ob der Prozess existiert
Bei der Überwachung eines Prozesses benötigen wir im Allgemeinen die ID des Prozesses. Die Prozess-ID ist die eindeutige Kennung des Prozesses. Manchmal können jedoch mehrere Prozesse mit demselben Prozessnamen unter verschiedenen Benutzern ausgeführt werden . Die folgende Funktion GetPID bietet die Funktion, die Prozess-ID des angegebenen Prozessnamens unter dem angegebenen Benutzer abzurufen (derzeit wird nur das Starten eines Prozesses mit diesem Prozessnamen unter diesem Benutzer in Betracht gezogen). Sie verfügt über zwei Parameter: Benutzername und Prozessname. Zuerst wird ps verwendet, um die Prozessinformationen zu finden, und gleichzeitig wird grep verwendet, um den erforderlichen Prozess herauszufiltern, und schließlich werden sed und awk verwendet, um den ID-Wert des erforderlichen Prozesses zu ermitteln (diese Funktion kann entsprechend der tatsächlichen Situation geändert werden). (z. B. wenn andere Informationen gefiltert werden müssen usw.).
Liste 1. Überwachen Sie den Prozess
Beispieldemo:
1) Quellprogramm (suchen Sie beispielsweise die Prozess-ID, bei der der Benutzer root ist und der Prozessname CFTestApp lautet)
3) Ergebnisanalyse
Wie aus der obigen Ausgabe ersichtlich ist: 11426 ist die Prozess-ID des CFTestApp-Programms unter dem Root-Benutzer.
4) Befehlseinführung
1. PS: Sofortige Prozessinformationen im System anzeigen. Parameter: -u
Manchmal ist es möglich, dass der Prozess nicht gestartet wird. Die folgende Funktion dient zur Überprüfung, ob die Prozess-ID vorhanden ist. Wenn der Prozess nicht ausgeführt wird, lautet die Ausgabe:
Prozess-CPU-Auslastung erkennen
Bei der Wartung von Anwendungsdiensten kommt es häufig zu Situationen, in denen die CPU zu hoch ist, was zu Geschäftsstaus und Geschäftsunterbrechungen führt. Eine übermäßige CPU-Auslastung kann auf abnormale Situationen wie Geschäftsüberlastung oder Endlosschleifen zurückzuführen sein. Das Wartungspersonal kann rechtzeitig benachrichtigt werden, wenn die CPU-Auslastung abnormal ist, was die Analyse, Lokalisierung und Erkennung erleichtert Vermeiden Sie rechtzeitig Geschäftsunterbrechungen usw. Die folgende Funktion ermittelt die Prozess-CPU-Auslastung für eine angegebene Prozess-ID. Es verfügt über einen Parameter für die Prozess-ID. Es verwendet zunächst ps, um die Prozessinformationen zu finden, während es die %CPU-Zeile über grep -v herausfiltert, und verwendet schließlich awk, um den ganzzahligen Teil des CPU-Auslastungsprozentsatzes zu ermitteln (falls es mehrere gibt). CPUs im System kann die CPU-Auslastung mehr als 100 % betragen.Liste 2. Echtzeitüberwachung der Geschäftsprozess-CPU
1) Quellprogramm (vorausgesetzt, dass die Prozess-ID von CFTestApp oben als 11426 abgefragt wurde)
Bei der Wartung von Anwendungsdiensten stoßen wir häufig auf Situationen, in denen der Prozess aufgrund übermäßiger Speichernutzung abstürzt, was zu Geschäftsunterbrechungen führt (z. B. beträgt der maximal adressierbare Speicherplatz eines 32-Bit-Programms 4 GB. Wenn dieser überschritten wird, wird der Speicher Die Anwendung schlägt fehl und der physische Speicher ist ebenfalls begrenzt. Übermäßige Speichernutzung kann auf Speicherlecks, Nachrichtenanhäufung usw. zurückzuführen sein. Die Speichernutzung des Geschäftsprozesses wird ständig durch Skripte überwacht. Wenn die Speichernutzung abnormal ist, können rechtzeitig Alarme gesendet werden (z. B. per SMS). Das Wartungspersonal kann rechtzeitig damit umgehen. Die folgende Funktion ermittelt die Prozessspeichernutzung für eine angegebene Prozess-ID. Es verfügt über einen Parameter für die Prozess-ID, verwendet zunächst ps, um die Prozessinformationen zu finden, filtert die VSZ-Zeilen über grep -v heraus und ermittelt dann die Speichernutzung in Megabyte, indem es durch 1000 dividiert wird.
Liste 4. Überwachen Sie die Speichernutzung von Geschäftsprozessen
Listing 5. Bestimmen, ob die Speichernutzung den Grenzwert überschreitet
1) Quellprogramm (vorausgesetzt, dass die Prozess-ID von CFTestApp oben als 11426 abgefragt wurde)
Wie aus der obigen Ausgabe ersichtlich ist: Die aktuelle Speichernutzung des CFTestApp-Programms beträgt 248 MB, was normal ist und die Alarmgrenze von 1,6 G nicht überschreitet.
Verwendung von Prozesshandles erkennen
Bei der Wartung von Anwendungsdiensten kommt es häufig zu Geschäftsunterbrechungen aufgrund der übermäßigen Nutzung von Handles. Die Verwendung von Prozesshandles ist auf jeder Plattform begrenzt. Auf der Linux-Plattform können wir beispielsweise den Befehl ulimit – n (Dateien öffnen (-n) 1024) verwenden oder den Inhalt von /etc/security/limits.conf anzeigen Prozess-Handle-Limit abrufen. Eine übermäßige Handle-Nutzung kann auf übermäßige Auslastung, Handle-Lecks usw. zurückzuführen sein. Die Handle-Nutzung des Geschäftsprozesses wird ständig durch Skripte überwacht. Bei Anomalien können rechtzeitig Warnungen gesendet werden (z. B. per SMS), sodass das Wartungspersonal dies tun kann Behandeln Sie sie rechtzeitig. Die folgende Funktion ruft die Prozess-Handle-Nutzung für eine angegebene Prozess-ID ab. Es verfügt über einen Parameter für die Prozess-ID. Es verwendet zunächst ls, um Prozess-Handle-Informationen auszugeben, und verwendet dann wc -l, um die Anzahl der Ausgabe-Handles zu zählen.
Beispieldemo:
1) Quellprogramm (vorausgesetzt, dass die in der obigen Abfrage gefundene Prozess-ID von CFTestApp 11426 ist)
2) Ergebnisausgabe
Wie aus der obigen Ausgabe ersichtlich ist, beträgt die aktuelle Handle-Nutzung des CFTestApp-Programms 528, was normal ist und die Alarmgrenze von 900 nicht überschreitet.
4) Befehlseinführung
wc: Zählen Sie die Anzahl der Bytes, Wörter und Zeilen in der angegebenen Datei und zeigen Sie die statistischen Ergebnisse an und geben Sie sie aus. Parameter: -l zählt die Anzahl der Zeilen. -c zählt Bytes. -w Anzahl der Wörter zählen.
Überprüfen Sie, ob ein TCP- oder UDP-Port lauscht
Porterkennung wird häufig bei der Erkennung von Systemressourcen angetroffen, insbesondere in Netzwerkkommunikationssituationen ist die Erkennung des Portstatus oft sehr wichtig. Manchmal befinden sich der Prozess, die CPU, der Speicher usw. möglicherweise in einem normalen Zustand, der Port befindet sich jedoch in einem abnormalen Zustand und das Geschäft läuft nicht normal. Die folgende Funktion kann ermitteln, ob der angegebene Port lauscht. Es verfügt über einen Parameter für den zu erkennenden Port. Es verwendet zunächst Netstat, um die Portbelegungsinformationen auszugeben, und filtert dann die Anzahl der überwachenden TCP-Ports über grep, awk und wc heraus. Die zweite Anweisung gibt die Anzahl der überwachten UDP-Ports aus . Wenn die TCP- und UDP-Portüberwachung alle 0 ist, geben Sie 0 zurück, andernfalls 1.
Liste 6. Porterkennung
Wie aus der obigen Ausgabe ersichtlich ist: Port 8080 dieses Linux-Servers befindet sich im Überwachungsstatus.
4) Befehlseinführung
netstat: Wird zum Anzeigen statistischer Daten zu den Protokollen IP, TCP, UDP und ICMP verwendet. Wird im Allgemeinen zum Überprüfen der Netzwerkverbindung jedes Ports der Maschine verwendet. Parameter: -a zeigt alle Sockets in der Verbindung an. -n Verwenden Sie die IP-Adresse direkt, ohne den Umweg über einen Domänennamenserver.
Die folgende Funktion erkennt auch, ob sich ein bestimmter TCP- oder UDP-Port in einem normalen Zustand befindet.
egrep: Suchen Sie die angegebene Zeichenfolge in der Datei. Der Ausführungseffekt von egrep ist wie bei grep -E. Die verwendete Syntax und die Parameter können sich auf den Befehl grep beziehen. Der Unterschied zu grep besteht darin, dass zur Interpretation eine erweiterte reguläre Ausdruckssyntax verwendet wird, während grep grundlegende reguläre Ausdrücke verwendet. Syntax: Erweiterte reguläre Ausdrücke verfügen über umfassendere Ausdrucksspezifikationen als grundlegende reguläre Ausdrücke.
Anzahl der laufenden Prozesse eines bestimmten Prozessnamens anzeigen
Manchmal müssen wir möglicherweise die Anzahl der gestarteten Prozesse auf dem Server ermitteln. Die folgende Funktion dient zum Ermitteln der Anzahl laufender Prozesse. Der Prozessname lautet beispielsweise CFTestApp.
Bei der Durchführung von Serverwartungen kommt es manchmal zu Betriebsunterbrechungen aufgrund einer übermäßigen CPU-Auslastung (Auslastung) des Systems. Auf dem Server können mehrere Prozesse ausgeführt werden. Es ist normal, die CPU eines einzelnen Prozesses anzuzeigen, die CPU-Auslastung des gesamten Systems kann jedoch abnormal sein. Die CPU-Auslastung des Systems wird ständig durch Skripte überwacht und bei Auftreten von Anomalien können rechtzeitig Alarme gesendet werden, sodass das Wartungspersonal diese rechtzeitig beheben und Unfälle verhindern kann. Die folgende Funktion kann die CPU-Auslastung des Systems ermitteln. Verwenden Sie vmstat, um den Leerlaufwert der System-CPU fünfmal zu ermitteln, den Durchschnitt zu ermitteln und dann die Differenz von 100 zu ermitteln, um den tatsächlichen CPU-Auslastungswert zu ermitteln.
1) Quellprogramm
3) Analyse des résultats
Comme le montre le résultat ci-dessus : l'utilisation actuelle du processeur du système serveur Linux est de 87 %, ce qui est normal et ne dépasse pas la limite d'alarme de 90 %.
4) Introduction aux commandes
vmstat : abréviation de Virtual Meomory Statistics (statistiques de la mémoire virtuelle), qui peut surveiller les activités de la mémoire virtuelle, des processus et du processeur du système d'exploitation.
Paramètres : -n indique que les informations d'en-tête de sortie ne seront affichées qu'une seule fois lors de la sortie périodique de la boucle.
Vérifier l'espace disque du système
La détection de l'espace disque système est une partie importante de la détection des ressources système. Lors de la maintenance du système, nous devons souvent vérifier l'utilisation de l'espace disque du serveur. Étant donné que certaines entreprises doivent rédiger des notes d'appel, des journaux ou des fichiers temporaires de temps en temps, si l'espace disque est utilisé, cela peut également entraîner une interruption de l'activité. La fonction suivante peut détecter l'utilisation de l'espace disque d'un répertoire dans le système actuel. espace disque.Paramètres d'entrée Pour le nom du répertoire qui doit être détecté, utilisez df pour afficher les informations sur l'utilisation de l'espace disque du système, puis filtrez via grep et awk pour obtenir le pourcentage d'utilisation de l'espace disque d'un certain répertoire.
Exemple de démo :
1) Programme source (le répertoire de détection est /boot)
2) Sortie du résultat
D'après le résultat ci-dessus, nous pouvons voir que 14 % de l'espace disque dans le répertoire /boot sur ce système serveur Linux a été utilisé, ce qui est normal et ne dépasse pas la limite d'alarme d'utilisation de 90 %.
4) Introduction aux commandes
df : Vérifiez l'utilisation de l'espace disque du système de fichiers. Vous pouvez utiliser cette commande pour obtenir des informations telles que la quantité d'espace occupée sur le disque dur et la quantité d'espace restant actuellement. Paramètres : -k Affichage en k octets.
Résumé
Sur la plate-forme Linux, la surveillance des scripts shell est une méthode très simple, pratique et efficace pour surveiller les serveurs et les processus. Elle est très utile pour les développeurs de systèmes et les responsables de processus. Il peut non seulement surveiller les informations ci-dessus et envoyer des alarmes, mais également surveiller les journaux de processus et d'autres informations. J'espère que cet article sera utile à tout le monde.