Dans le processus d'exploitation et de maintenance du serveur, il est souvent nécessaire de surveiller diverses ressources du serveur, telles que : la surveillance de la charge du processeur, la surveillance de l'utilisation du disque, la surveillance du numéro de processus, etc., afin d'alarmer et de notifier rapidement quand une anomalie se produit dans le système Administrateur. Cet article présente plusieurs exigences de surveillance courantes et l'écriture de scripts shell sous les systèmes Linux.
Répertoire des articles :
1.Linux utilise Shell pour vérifier si le processus existe
2.Linux utilise Shell pour détecter l'utilisation du processeur du processus
3.Linux utilise Shell pour détecter l'utilisation de la mémoire des processus
4.Linux utilise Shell pour détecter l'utilisation du handle de processus
5.Linux utilise Shell pour vérifier si un port TCP ou UDP écoute
6.Linux utilise Shell pour vérifier le nombre de processus en cours d'exécution d'un certain nom de processus
7.Linux utilise Shell pour détecter la charge du processeur du système
8.Linux utilise Shell pour détecter l'espace disque du système
9. Résumé
Vérifiez si le processus existe
Lors de la surveillance d'un processus, nous avons généralement besoin d'obtenir l'ID du processus. L'ID du processus est l'identifiant unique du processus. Cependant, il peut parfois y avoir plusieurs processus avec le même nom de processus exécutés sous différents utilisateurs sur le serveur. . La fonction suivante GetPID Elle donne la fonction d'obtenir l'ID de processus du nom de processus spécifié sous l'utilisateur spécifié (actuellement, on considère uniquement le démarrage d'un processus avec ce nom de processus sous cet utilisateur. Elle a deux paramètres : le nom d'utilisateur et le nom de processus). Il utilise d'abord ps pour trouver les informations sur le processus, et en même temps utilise grep pour filtrer le processus requis, et enfin utilise sed et awk pour trouver la valeur ID du processus requis (cette fonction peut être modifiée en fonction de la situation réelle , par exemple si d'autres informations doivent être filtrées, etc.).
Liste 1. Surveiller le processus
Exemple de démo :
1) Programme source (par exemple, recherchez l'ID du processus où l'utilisateur est root et le nom du processus est CFTestApp)
3) Analyse des résultats
Comme le montre la sortie ci-dessus : 11426 est l'ID de processus du programme CFTestApp sous l'utilisateur root.
4) Introduction aux commandes
1. ps : affichez les informations instantanées sur le processus dans le système. Paramètres : -u
Parfois, il est possible que le processus ne démarre pas. La fonction suivante consiste à vérifier si l'ID du processus existe. Si le processus n'est pas en cours d'exécution, le résultat est :
.
Détecter l'utilisation du processeur du processus
Lors de la maintenance des services d'application, nous rencontrons souvent des situations où le processeur est trop élevé, provoquant une congestion et une interruption des activités. Un excès de CPU peut être dû à des situations anormales telles qu'une surcharge commerciale ou des boucles sans fin. Le CPU du processus métier est constamment surveillé via des scripts. Le personnel de maintenance peut être averti à temps lorsque l'utilisation du CPU est anormale, ce qui permet au personnel de maintenance d'analyser, de localiser et de détecter. éviter les affaires en temps opportun, les interruptions, etc. La fonction suivante obtient l'utilisation du processeur du processus pour un ID de processus spécifié. Il a un paramètre pour l'ID du processus. Il utilise d'abord ps pour trouver les informations sur le processus, tout en filtrant la ligne %CPU via grep -v, et utilise enfin awk pour trouver la partie entière du pourcentage d'utilisation du processeur (s'il y en a plusieurs). CPU dans le système, l'utilisation du CPU peut être supérieure à 100 %).
Liste 2. Surveillance en temps réel du CPU des processus métier
1) Programme source (en supposant que l'ID de processus de CFTestApp a été interrogé ci-dessus comme 11426)
Détecter l'utilisation de la mémoire du processus
Lors de la maintenance des services d'application, nous rencontrons souvent des situations où le processus plante en raison d'une utilisation excessive de la mémoire, provoquant une interruption de l'activité (par exemple, l'espace mémoire adressable maximum d'un programme 32 bits est de 4G. S'il est dépassé, la mémoire l'application échouera et la mémoire physique est également limitée). Une utilisation excessive de la mémoire peut être due à des fuites de mémoire, à une accumulation de messages, etc. L'utilisation de la mémoire du processus métier est constamment surveillée via des scripts. Des alarmes peuvent être envoyées à temps (par exemple, par SMS) lorsque l'utilisation de la mémoire est anormale, de sorte que. le personnel de maintenance peut le gérer en temps opportun. La fonction suivante obtient l'utilisation de la mémoire du processus pour un ID de processus spécifié. Il a un paramètre pour l'ID du processus, il utilise d'abord ps pour trouver les informations sur le processus, tout en filtrant les lignes VSZ via grep -v, puis obtient l'utilisation de la mémoire en mégaoctets en divisant par 1 000.Liste 4. Surveiller l'utilisation de la mémoire des processus métier
Listing 5. Déterminer si l'utilisation de la mémoire dépasse la limite
1) Programme source (en supposant que l'ID de processus de CFTestApp a été interrogé ci-dessus comme 11426)
Comme le montre la sortie ci-dessus : l'utilisation actuelle de la mémoire du programme CFTestApp est de 248 Mo, ce qui est normal et ne dépasse pas la limite d'alarme de 1,6 G.
Détecter l'utilisation du gestionnaire de processus
Lors de la maintenance des services applicatifs, nous rencontrons souvent des interruptions d'activité dues à une utilisation excessive des handles. L'utilisation de handles de processus sur chaque plateforme est limitée. Par exemple, sur la plateforme Linux, nous pouvons utiliser la commande ulimit – n (ouvrir les fichiers (-n) 1024) ou afficher le contenu de /etc/security/limits.conf pour obtenir la limite de gestion du processus. Une utilisation excessive du handle peut être due à une charge excessive, à une fuite du handle, etc. L'utilisation du handle du processus métier est constamment surveillée via des scripts. Des alertes peuvent être envoyées à temps lorsque des anomalies se produisent (par exemple, par SMS), afin que le personnel de maintenance puisse le faire. les traiter en temps opportun. La fonction suivante obtient l’utilisation du handle de processus pour un ID de processus spécifié. Il a un paramètre pour l'ID de processus. Il utilise d'abord ls pour afficher les informations de descripteur de processus, puis utilise wc -l pour compter le nombre de descripteurs de sortie.
Exemple de démo :
1) Programme source (en supposant que l'ID de processus de CFTestApp trouvé dans la requête ci-dessus est 11426)
2) Sortie du résultat
Comme le montre la sortie ci-dessus : l'utilisation actuelle du handle du programme CFTestApp est de 528, ce qui est normal et ne dépasse pas la limite d'alarme de 900.
4) Introduction aux commandes
wc : compte le nombre d'octets, de mots et de lignes dans le fichier spécifié, et affiche et affiche les résultats statistiques. Paramètres : -l compte le nombre de lignes. -c compte les octets. -w Compte le nombre de mots.
Vérifiez si un port TCP ou UDP est à l'écoute
La détection de port est souvent rencontrée dans la détection des ressources système, en particulier dans les situations de communication réseau, la détection de l'état du port est souvent très importante. Parfois, le processus, le processeur, la mémoire, etc. peuvent être dans un état normal, mais le port est dans un état anormal et l'entreprise ne fonctionne pas normalement. La fonction suivante peut déterminer si le port spécifié écoute. Il a un paramètre pour le port à détecter. Il utilise d'abord netstat pour afficher les informations d'occupation du port, puis filtre le nombre de ports TCP d'écoute via grep, awk et wc. La deuxième instruction affiche le nombre de ports UDP de surveillance. . Si l'écoute des ports TCP et UDP est entièrement 0, renvoyez 0, sinon renvoyez 1.
.Liste 6. Détection de ports
Comme le montre la sortie ci-dessus : le port 8080 de ce serveur Linux est en état d'écoute.
4) Introduction aux commandes
netstat : Utilisé pour afficher les données statistiques liées aux protocoles IP, TCP, UDP et ICMP. Il est généralement utilisé pour vérifier la connexion réseau de chaque port de la machine. Paramètres : -a affiche toutes les sockets de la connexion. -n Utiliser l'adresse IP directement sans passer par un serveur de noms de domaine.
La fonction suivante détecte également si un certain port TCP ou UDP est dans un état normal.
egrep : recherche la chaîne spécifiée dans le fichier. L'effet d'exécution de egrep est similaire à grep -E. La syntaxe et les paramètres utilisés peuvent faire référence à la commande grep. La différence avec grep réside dans la méthode d'interprétation des chaînes. egrep utilise une syntaxe d'expression régulière étendue pour interpréter, tandis que grep utilise des expressions régulières de base. Syntaxe, les expressions régulières étendues ont des spécifications d'expression plus complètes que les expressions régulières de base.
Afficher le nombre de processus en cours d'exécution d'un certain nom de processus
Parfois, nous pouvons avoir besoin d'obtenir le nombre de processus démarrés sur le serveur. La fonction suivante consiste à détecter le nombre de processus en cours d'exécution. Par exemple, le nom du processus est CFTestApp.
Lors de la maintenance du serveur, nous rencontrons parfois des interruptions d'activité en raison d'une charge (utilisation) excessive du processeur système. Plusieurs processus peuvent être en cours d'exécution sur le serveur. Il est normal de visualiser le processeur d'un seul processus, mais la charge du processeur de l'ensemble du système peut être anormale. La charge du processeur du système est constamment surveillée via des scripts et des alarmes peuvent être envoyées à temps lorsque des anomalies se produisent, permettant au personnel de maintenance de les traiter en temps opportun et d'éviter les accidents. La fonction suivante peut détecter l'utilisation du processeur du système. Utilisez vmstat pour obtenir la valeur d'inactivité du processeur du système 5 fois, prendre la moyenne, puis obtenir la valeur réelle d'utilisation du processeur en prenant la différence de 100.
1) Programme source
3)結果分析
從上面的輸出可見:目前 Linux 伺服器系統 CPU 使用率為 87%,是正常的,沒有超過 90% 的警告限制。
4)指令介紹
vmstat:Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、進程、CPU 活動進行監控。
參數: -n 表示在週期性循環輸出時,輸出的頭部資訊僅顯示一次。
偵測系統磁碟空間
系統磁碟空間偵測是系統資源偵測的重要部分,在系統維護維護中,我們經常需要查看伺服器磁碟空間使用量。因為有些業務要時時寫話單,日誌,或者臨時文件等,如果磁碟空間用盡,也可能會導致業務中斷,下面的函數可以檢測當前系統磁碟空間中某個目錄的磁碟空間使用情況. 輸入參數為需要偵測的目錄名,使用df 輸出系統磁碟空間使用訊息,然後透過grep 和awk 過濾得到某個目錄的磁碟空間使用百分比。
範例示範:
1)原始程式(偵測目錄為 /boot)
2)結果輸出
從上面的輸出可見:目前此 Linux 伺服器系統上 /boot 目錄的磁碟空間已經使用了 14%,是正常的,沒有超過使用 90% 的警告限制。
4)指令介紹
df:檢查檔案系統的磁碟空間佔用情況。可以利用此指令來取得硬碟被佔用了多少空間,目前還剩下多少空間等資訊。 參數:-k 以 k 位元組為單位顯示。
總結
在 Linux 平台下,shell 腳本監控是一個非常簡單,方便,有效的對伺服器,進程進行監控的方法,對系統開發以及進程維護人員非常有幫助。它不僅可以對上面的訊息進行監控,發送告警,同時也可以監控進程的日誌等等的訊息,希望本文對大家有幫助。