Table des matières:
- Étape 1: Utilisation des méthodes fournies par Systemd
- Étape 2: Configuration et utilisation des scripts de Service Checker
- Étape 3: Réflexions finales
Vidéo: Script Service Monitor pour serveurs Linux : 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:09
Avoir un système stable et toujours opérationnel, même si vous utilisez Linux, peut être une tâche difficile.
En raison de la complexité des progiciels modernes et du mauvais codage, certains processus peuvent inévitablement planter de temps en temps. Cela pourrait être une mauvaise chose si vous utilisez un serveur et que certaines personnes dépendent de ces services.
Étape 1: Utilisation des méthodes fournies par Systemd
Comme vous le savez peut-être déjà, la plupart des systèmes d'exploitation Linux modernes utilisent systemd.
Si vous n'êtes pas familier avec systemd, voici, selon wikipedia:
"… un système d'initialisation utilisé dans les distributions Linux pour amorcer l'espace utilisateur et gérer tous les processus par la suite, au lieu des systèmes d'initialisation UNIX System V ou Berkeley Software Distribution (BSD). …"
Beaucoup de gens se demandent encore pourquoi il était nécessaire de remplacer le bon vieux système d'initialisation par ce système de gestion de processus plus compliqué, mais sur le lien suivant, on pourrait trouver une bonne explication:
www.tecmint.com/systemd-replaces-init-in-l…
L'amélioration la plus importante serait qu'il est capable de lancer le système plus rapidement que init, en raison du traitement simultané et parallèle au démarrage au lieu de l'approche séquentielle d'init
Sans entrer dans les profondeurs de systemd, pour ajouter un processus au systemd, vous devez créer un fichier de service. La syntaxe d'un tel fichier peut aller de très simple à tout à fait compliquée, et nous n'entrerons pas dans les détails. Pour avoir un fichier.service basique, il suffit d'utiliser les entrées suivantes:
[Unit]Description=Description de l'applicationDocumentation=https://wikipedia.org/ After=local-fs.target network.target[Service]Type=simpleExecStart=/usr/sbin/applicationExecReload=/usr/sbin/application reloadExecStop=/ usr/sbin/application stopRestart=always[Install]WantedBy=multi-user.target
Placez-les dans le fichier application.service du dossier /lib/systemd/system.
Le rôle de chacune de ces options est expliqué dans le lien suivant:
access.redhat.com/documentation/en-US/Red_…
Afin de démarrer votre application, exécutez la commande suivante:
sudo systemctl démarrer application.service
Remarque: l'extension.service peut être omise.
Pour arrêter l'application:
sudo systemctl arrêter application.service
Si le fichier de configuration a été modifié et que vous souhaitez recharger les paramètres:
sudo systemctl recharger application.service
Pour redémarrer l'application:
sudo systemctl redémarrer application.service
Pour activer le démarrage automatique au démarrage:
sudo systemctl activer application.service
Si cela est activé, le gestionnaire de processus systemd essaiera de démarrer l'application en fonction des paramètres fournis par le fichier système.
Pour le désactiver, utilisez la même commande que ci-dessus, mais avec le paramètre 'disable'.
Si vous placez Restart=always dans le fichier de service, systemd surveillera le processus et s'il est introuvable dans la liste des processus, il essaiera de le redémarrer automatiquement.
Si vous placez
RedémarrerSec=30
après la directive de redémarrage, il attendra 30 secondes avant d'essayer de redémarrer le processus. Cela peut être utile, car une tentative de redémarrage continu d'un service/d'une application défaillante peut entraîner une forte demande sur le système (écriture de journaux d'erreurs, etc.)
Comme vous pouvez le voir, systemd fournit déjà des moyens de surveiller les processus. Cependant, dans certains cas, cela peut ne pas être suffisant. Que se passe-t-il si un processus ne se termine pas (il sera toujours dans la liste des processus), mais qu'il cesse de répondre. Dans ce cas, afin de s'assurer qu'un processus est bien opérationnel, vous devrez peut-être effectuer des vérifications supplémentaires.
Voici où les scripts de cette instructable vous seront utiles.
Étape 2: Configuration et utilisation des scripts de Service Checker
Si vous avez besoin de plus de contrôle sur vos processus/services en cours d'exécution, ces scripts vous seront certainement utiles.
Comme le code est légèrement volumineux, il est téléchargé sur github et se trouve dans le référentiel suivant:
github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh
Le « cœur » de l'ensemble est le
checkService.sh
Avant de l'utiliser, vous devez remplacer le chemin complet du dossier de service. Celui-ci se trouve au début du script.
Le script peut surveiller plusieurs processus et effectuer des tâches supplémentaires, comme décrit ci-dessous:
Il parcourt chaque fichier du sous-dossier /services ayant les extensions.serv ou.check et vérifie s'il existe un processus actif appelé "application".
S'il n'y a pas de fichier '.check' pour une application, seul le fichier application.serv:
Si le processus est actif, il considérera le processus comme étant actif
Si le processus est inactif, il redémarrera le service en exécutant la commande suivante:
application de redémarrage systemctl
si le fichier.serv est vide !
Si le fichier.serv n'est pas vide et possède des droits d'exécution, il essaiera de l'exécuter comme un simple script BASH.
Ceci est utile si quelque chose doit être fait en plus du simple redémarrage du service.
Par exemple, dans le fichier spamd.serv, à partir du référentiel ci-dessus, au cas où le service spamd est mort, le service spamassassin doit être redémarré à la place, ce qui redémarrera également spamd. Redémarrer juste spamd ne serait pas suffisant.
On peut éditer le contenu d'un tel fichier serv selon les besoins.
Un autre exemple est le fichier pcscd.serv. Dans ce cas, plusieurs autres processus ont également été redémarrés/arrêtés.
S'il existe un fichier de vérification, après avoir vérifié si le processus est en cours d'exécution, il exécutera également ce fichier de script pour effectuer des vérifications supplémentaires.
Par exemple, pour le service oscam, nous avons créé un fichier de vérification qui essaie de se connecter à son interface Web pour voir s'il réussit. Sinon, alors que le processus est actif, le service ne répond pas et doit être redémarré. Le redémarrage du service doit être effectué/appelé par le fichier.check lui-même.
Un autre exemple serait le service DLNA mediatomb.
Il s'agit d'un petit serveur qui fournit du contenu vidéo/audio aux clients DLNA et se diffuse sur le réseau. Parfois, le service se bloque et il n'est plus détectable, mais le processus sera toujours actif. Pour vérifier si le service est détectable, l'utilitaire CLI appelé gssdp-discover a été utilisé. L'ensemble du code qui vérifie le serveur DLNA a été placé dans un script mediatomb.check.
Ce ne sont là que quelques exemples d'utilisation des fichiers.serv et.check.
Afin de surveiller un nouveau service, vous devez créer un.serv et, si nécessaire également un fichier de contrôle et écrire le script correspondant à l'intérieur.
Si seule la vérification de la présence du processus est suffisante, alors un fichier.serv vide sera suffisant. Si des contrôles supplémentaires doivent être effectués, un fichier.check doit être créé et un petit script doit être écrit pour effectuer le travail.
Bien sûr, le script.sh doit être exécuté périodiquement, donc une tâche cron doit également être créée pour cela:
#check les services en cours d'exécution toutes les 5 minutes*/5 * * * * /var/bin/ServiceCheck/checkService.sh >/dev/null
Étape 3: Réflexions finales
J'espère que vous trouverez ce package utile car il peut grandement simplifier la surveillance des processus Linux et, espérons-le, minimisera les temps d'arrêt de vos services.
N'hésitez pas à télécharger des scripts supplémentaires sur github, si vous en créez de nouveaux. Faites-le moi savoir et je vous ajouterai en tant que contributeur.
Conseillé:
SilverLight : moniteur environnemental basé sur Arduino pour les salles de serveurs : 3 étapes (avec images)
SilverLight : Moniteur environnemental basé sur Arduino pour les salles de serveurs : Une fois, on m'a confié la tâche de rechercher une sonde environnementale pour surveiller la température dans la salle des serveurs de mon entreprise. Ma première idée était : pourquoi ne pas simplement utiliser un Raspberry PI et un capteur DHT, il peut être configuré en moins d'une heure y compris l'OS
Seroma : Gestionnaire de salle de serveurs : 20 étapes
Seroma : Server Room Manager : Seroma est un gestionnaire de salle de serveurs tout-en-un qui permet aux utilisateurs de vérifier l'état des serveurs (température et humidité), les journaux d'accès de la salle des serveurs, ainsi que de surveiller la salle des serveurs elle-même. pour toute faille de sécurité
Changez vos serveurs DNS en OpenDNS : 6 étapes
Changez vos serveurs DNS en OpenDNS : récemment, les serveurs AOL ont été un peu de mauvaise qualité et ne fonctionnaient pas correctement, ce qui signifie que certaines âmes malheureuses, comme moi, n'ont pas pu accéder à certains sites Web (principalement wiggle.co.uk). Le moyen de résoudre ce problème est de changer le DNS
Serveurs privés WoW : 3 étapes
Serveurs privés WoW : Cela vous montrera comment jouer à World of Warcraft sans payer !!! Il existe des serveurs qui vous donnent instantanément le niveau 80, des objets gratuits, etc. Il existe également des serveurs réguliers si vous voulez jouer pour de vrai. Remarque : vous devrez peut-être payer pour le jeu réel
Configuration pour programmer un Picaxe via un script Shell (linux): 5 étapes
Configuration pour programmer un Picaxe via un script Shell (linux): Une simple procédure qui montre comment créer un script shell qui téléchargera un programme à partir d'un site ftp puis le compilera puis le téléchargera sur le picaxe. (C'est aussi mon premier instructable)