Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
serveurs:installation:script-srvstatus [2023/06/05 07:39] – [Installer script srvstatus] jpmilcent | serveurs:installation:script-srvstatus [2023/06/08 08:14] (Version actuelle) – [Stocker les logs du Cron dans leur propre fichier] jpmilcent |
---|
====== Installer script srvstatus ====== | ====== Installer script srvstatus ====== |
* **Notes** : le script [[https://github.com/ratibor78/srvstatus|ratibor78/srvstatus]] nous permet de surveiller le status de services //Systemd// via //Grafana//. | * **Notes** : |
| * le script [[https://github.com/ratibor78/srvstatus|ratibor78/srvstatus]] nous permet de surveiller le status de services //Systemd// via //Grafana//. |
| * le plugin ''inputs.systemd_status'' ne fonctionne pas dans un container Docker. Voir : https://github.com/influxdata/telegraf/issues/7689 |
* TODO : | * TODO : |
* tester l'utilisation de la commande suivante pour générer un fichier json de status à la place du script srvstatus: <code bash> | * tester l'utilisation de la commande suivante pour générer un fichier json de status à la place du script srvstatus: <code bash> |
systemctl list-units --type service --full --all --plain --no-legend --no-pager | sed 's/ \{1,\}/,/g' | jq --raw-input --slurp 'split("\n") | map(split(",")) | .[0:-1] | map( { "unit": .[0], "load": .[1], "active": .[2], "sub": .[3], "description": .[4] } ) | systemctl list-units --type service --full --all --plain --no-legend --no-pager | sed 's/ \{1,\}/,/g' | jq --raw-input --slurp 'split("\n") | map(split(",")) | .[0:-1] | map( { "unit": .[0], "load": .[1], "active": .[2], "sub": .[3], "description": .[4] } ) |
</code> | </code> |
* Sur Bullseye la commande suivante fonctionne :<code bash> systemctl list-units -t service --full --all --output=json --no-pager </code> | * Sur Bullseye la commande suivante fonctionne :<code bash> systemctl list-units -t service --full --all --output=json --no-pager </code> |
* **Problème** la commande n'affiche pas le temps de fonctionnement... | * **Problème** la commande n'affiche pas le temps de fonctionnement alors que le script //srvstatus// le fait... |
| |
===== Installer le script ===== | ===== Installer le script ===== |
* Installer les paquets requis : ''pip install -r requirements.txt'' | * Installer les paquets requis : ''pip install -r requirements.txt'' |
* Rendre exécutable le script : ''chmod +x ./service.py'' | * Rendre exécutable le script : ''chmod +x ./service.py'' |
| |
| ==== Mettre à jour le script ==== |
| * Se placer dans le dossier du script : ''cd /opt/srvstatus'' |
| * Mettre à jour le dépôt : ''git pull'' |
| * Activer le //venv// : ''source venv/bin/activate'' |
| * Installer les paquets requis : ''pip install -r requirements.txt'' |
| * Désactiver le //venv// : ''deactivate'' |
| * Vérifier le bon fonctionnement : ''vi status.json'' |
| |
===== Configurer le script ===== | ===== Configurer le script ===== |
* Ajouter dans le fichier //telegraf.conf// utiliser par le container //Docker// la configuration suivante : <code toml> | * Ajouter dans le fichier //telegraf.conf// utiliser par le container //Docker// la configuration suivante : <code toml> |
[[inputs.exec]] | [[inputs.exec]] |
commands = [ | commands = ["cat /opt/srvstatus/status.json"] |
"cat /opt/srvstatus/status.json" | |
] | |
timeout = "5s" | timeout = "5s" |
name_override = "services_stats" | name_override = "services_stats" |
data_format = "json" | data_format = "json" |
tag_keys = [ | tag_keys = ["service"] |
"service" | |
] | |
</code> | </code> |
| |
| ===== Stocker les logs du Cron dans leur propre fichier ===== |
| * **Objectif** : séparer les logs des Cron dans un fichier de log à part afin qu'ils ne surchargent pas le fichier syslog. Le script ''srvstatus'' écrit plusieurs lignes de log toutes les minutes. |
| * Éditer le fichier de config de Rsyslog : <code bash>vi /etc/rsyslog.conf</code> |
| * Remplacer la ligne : <code>*.*;auth,authpriv.none -/var/log/syslog</code> par <code>*.*;cron,auth,authpriv.none -/var/log/syslog</code> |
| * Dé-commenter la ligne : <code># cron.* /var/log/cron.log</code> |
| * Redémarrer le service Rsyslog avec : <code bash>systemctl restart rsyslog.service</code> |
| * Redémarrer le service Cron avec : <code bash>systemctl restart cron.service</code> |
| * Vérifier : |
| * la présence du fichier ''cron.log'' et l'ajout de nouveaux logs avec : <code bash>vi /var/log/cron.log</code> |
| * l'absence de log du Cron dans le fichier ''syslog'' avec : <code bash>vi /var/log/syslog</code> |