Sous Linux, Systemd est le candidat parfait pour gérer ses propres services. La bonne nouvelle c’est que c’est extrêmement simple d’en créer un. Voyons comment faire au travers d’un exemple : créer un service pour le démon Apache Exporter (utilisé pour récupérer les métrics d’Apache).
Ecrire le service
Rien de plus simple :
$ nano /etc/systemd/system/apache-exporter.service
Et on met dedans :
[Unit]
Description=Prometheus Apache Exporter
[Service]
User=nicolas
Group=nicolas
WorkingDirectory=/usr/bin
Type=simple
ExecStart=/usr/bin/apache_exporter
Restart=always
[Install]
WantedBy=multi-user.target
Et voilà. Rien de plus. En fait si, recharger la config :
$ systemctl daemon-reload
Opérations usuelles
Désormais, les commandes usuelles sont disponibles. On peut vérifier le status :
$ systemctl status apache-exporter
apache-exporter.service - Prometheus Apache Exporter
Loaded: loaded (/etc/systemd/system/apache-exporter.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Activer le service :
$ systemctl start apache-exporter
Vérifier que le démon ciblé fonctionne correctement :
$ ss -lpt
LISTEN 0 128 *:9117 *:* users:(("apache_exporter",pid=904,fd=3))
Parfait, le démon écoute bien sur le port 9117. Autres actions :
# Arrêter le service
$ systemctl stop apache-exporter
# Redémarrer le service
$ systemctl restart apache-exporter
# Activer le service au démarrage
$ systemctl enable apache-exporter
Created symlink /etc/systemd/system/multi-user.target.wants/apache-exporter.service → /etc/systemd/system/apache-exporter.service.
# Désactiver le service au démarrage
$ systemctl disable apache-exporter
Cas plus complexe
Supposons que nous voulions passer des paramètres. Par exemple, l’exporter mysql pour Prometheus requiert les identifiants à la base de données. Ces identifiants sont passés dans la variable d’environnement DATA_SOURCE_NAME
. Au lieu de coder en dur ces paramètres créons un fichier de configuration :
$ nano /etc/default/mysql-exporter
Et on met dedans (adapter à vos besoin, ici il faut indiquer l’utilisateur qui a accès aux statistiques de MySQL) :
DATA_SOURCE_NAME=<user>:<password>#@(localhost:3306)/
Créer la configuration du service, on ajoute simplement la ligne EnvironmentFile
:
[Unit]
Description=Prometheus Mysql Exporter
[Service]
User=nicolas
Group=nicolas
WorkingDirectory=/usr/bin
Type=simple
ExecStart=/usr/bin/mysqld_exporter
Restart=always
EnvironmentFile=/etc/default/mysql-exporter
[Install]
WantedBy=multi-user.target
Reste plus qu’à activer le service comme précédemment.
Commentaires récents