Installation service Logstash

De EjnTricks

Logstash a été installé depuis les binaires. Le déploiement a été réalisé dans le répertoire /var/opt/logstash.

Cet article présente la mise en place d'un service avec systemd, en s'inspirant du paquet Debian disponible.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Warning-icon.png Exécution

Logstash nécessite la mise en place de configurations pour les sources de données. En cas d'absence de configuration, le service mis en place démarre mais s'arrête automatiquement, n'ayant aucune source de données à exploiter.

De plus, la déclaration du service contient l'intruction suivante Restart=always. Donc, l'instance systemd relance l'instance Logstash suite à son arrêt, donnant l'impression que le service est disponible, alors qu'elle ne fait que s'arrêter / démarrer.


System-Install-icon.png Création service

Contrairement à ElasticSearch et Kibana, il n'exite pas de configuration prète à l'emploi pour la mise en place d'un service. Cependant, le paquet Debian contient le script postinst qui déclenche l'exécution du script system-install, cf https://github.com/elastic/logstash/blob/master/bin/system-install.

Ce script est exécuté en fournissant l'emplacement du fichier de configuration de démarrage, ie startup.options, pour générer l'ensemble des fichiers nécessaires pour la mise en place du service.

#sudo /var/opt/logstash/install/bin/system-install /var/opt/logstash/common/config/startup.options
Using provided startup.options file: /var/opt/logstash/common/config/startup.options
Successfully created system startup script for Logstash

La déclaration du service est générée dans le fichier /etc/systemd/system/logstash.service avec le contenu suivant.

[Unit]
Description=logstash

[Service]
Type=simple
User=logstash
Group=logstash
# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.
# Prefixing the path with '-' makes it try to load, but if the file doesn't
# exist, it continues onward.
EnvironmentFile=-/etc/default/logstash
EnvironmentFile=-/etc/sysconfig/logstash
ExecStart=/var/opt/logstash/installed/bin/logstash "--path.settings" "/var/opt/logstash/common/config"
Restart=always
WorkingDirectory=/
Nice=19
LimitNOFILE=16384

[Install]
WantedBy=multi-user.target

A noter, deux fichiers logstash sont référencés depuis les répertoire /etc/default et /etc/sysconfig. Seul celui dans /etc/default est également créé avec le contenu suivant.

JAVACMD="/usr/bin/java"
LS_HOME="/var/opt/logstash/installed"
LS_SETTINGS_DIR="/var/opt/logstash/common/config"
LS_PIDFILE="/var/run/logstash/logstash.pid"
LS_USER="logstash"
LS_GROUP="logstash"
LS_GC_LOG_FILE="/var/log/logstash/gc.log"
LS_OPEN_FILES="16384"
LS_NICE="19"
SERVICE_NAME="logstash"
SERVICE_DESCRIPTION="logstash"

En cas de modification, il est recommandé de placer les extensions dans le fichier /etc/sysconfig/logstash.


Run-icon.png Création service

Attention, le fichier a été créé à l'emplacement /etc/systemd/system/logstash.service. Afin d'harmoniser les installations sur une machine Ubuntu, ce fichier est déplacé dans le répertoire /lib/systemd/system.

#sudo mv /etc/systemd/system/logstash.service /lib/systemd/system

La déclaration du service s'effectue via la commande systemctl enable en fournissant l'emplacement du fichier, créant tous les liens nécessaires.

#sudo systemctl enable /lib/systemd/system/logstash.service
Created symlink /etc/systemd/system/multi-user.target.wants/logstash.service → /lib/systemd/system/logstash.service.

Pour le démarrer il suffit alors d'exécuter la commande systemctl avec l'argument start.

#sudo systemctl start logstash


Viewer icon.png Voir aussi

Sources installation service : https://github.com/elastic/logstash/blob/master/bin/system-install