Installation Logstash

De EjnTricks

Cet article présente l'installation de Logstash sur une machine Ubuntu.

Un paquet est disponible, mais il est préféré d'effectuer l'installation manuellement pour gérer totalement l'installation et les mises à jour.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


User-icon.png Compte de service

Un compte de service est créé pour démarrer le serveur Logstash. Ceci est inspiré du script preinst pour le paquet. Dans celui-ci, le groupe et l'utilisateur sont créés séparément.

Un compte logstash est créé en système et sans possibilité de connexion, pas de home ni de bash.

#sudo adduser --system --no-create-home --disabled-password --shell /bin/false --group logstash
Ajout de l'utilisateur système « logstash » (UID 131) ...
Ajout du nouveau groupe « logstash » (GID 140) ...
Ajout du nouvel utilisateur « logstash » (UID 131) avec pour groupe d'appartenance « logstash » ...
Le répertoire personnel « /home/logstash » n'a pas été créé.

Attention avec cette commande le compte n'est pas ajouté automatiquement dans le groupe, contrairement au script.


Folder-icon.png Initialisation

L'application va être installée sous /var/opt/logstash avec une organisation qui doit permettre de faciliter les montées de version.

#sudo mkdir /var/opt/logstash
#sudo chown logstash:logstash /var/opt/logstash
#sudo chmod 700 /var/opt/logstash


Download-icon.png Téléchargement

L'application est téléchargée, en version 6.2.3 dans le répertoire /var/opt/logstash avec le nom logstash-6.2.3.tar.gz.


System-Install-icon.png Installation

L'application va être installée sous /var/opt/logstash, avec modification de l'emplacement racine pour être 6.2.3.

#sudo tar --transform 's/^logstash-6.2.3/6.2.3/' -C /var/opt/logstash -xzvf /var/opt/logstash/logstash-6.2.3.tar.gz

Le fichier téléchargé peut être supprimé.

#sudo rm /var/opt/logstash/logstash-6.2.3.tar.gz


Icon File Owner.png Propriétaire fichiers

L'installation a été réalisée avec le compte root. Il est préférable de donner la propriété au compte de démarrage du serveur web, soit logstash dans le cadre de cette installation.

#sudo chown -R logstash:logstash /var/opt/logstash


Icon ACL.png Sécurisation

Au niveau de la procédure d'installation, il est indiqué de placer les permissions pour tous les comptes. Cependant, cela présente un problème évident de sécurité. Les droits mis en place seront uniquement pour le compte d'exécution, soit logstash dans le cadre de cet article.

#sudo chmod -R go-rwx /var/opt/logstash/6.2.3


Vues-icon.png Référencement version

Afin de faciliter les montées de versions, le lien /var/opt/logstash/installed est mis en place pour référencer la version active.

#sudo ln -s /var/opt/logstash/6.2.3 /var/opt/logstash/installed
#sudo chown -h logstash:logstash /var/opt/logstash/installed


Share-icon.png Fichiers communs

Un répertoire common est mis en place pour externaliser les fichiers de configurations.

#sudo mkdir /var/opt/logstash/common
#sudo chown logstash:logstash /var/opt/logstash/common
#sudo chmod go-rwx /var/opt/logstash/common

On déplace le répertoire de configuration dans cette externalisation.

#sudo mv /var/opt/logstash/6.2.3/config /var/opt/logstash/common/

Examples-icon.png A noter qu'aucun lien n'est mis en place dans l'instance. L'emplacement des configurations sera spécifié dans les scripts de démarrage de service.


Icon-log.png Emplacement logs

Afin de centraliser les logs, les fichiers seront placés dans le répertoire /var/log/logstash. Il est nécessaire de préparer l'environnement.

#sudo mkdir /var/log/logstash
#sudo chown logstash:adm /var/log/logstash
#sudo chmod o-rwx /var/log/logstash

A noter, les permissions sont accordées au groupe adm comme cela est d'usage pour ce type de fichier sur une instance Linux.

Warning-icon.png Attention, il peut être nécessaire de modifier la configuration des fichiers trace, dans le fichier metricbeat.yml, comme explicité dans l'article suivant.


Icon-Configuration-Settings.png Configuration

Process-icon.png Instance

Les configurations de l'instance se trouvent dans le fichier logstash.yml dans le répertoire config, initialement dans le répertoire config de la distribution. Les modifications mises en place permettent de configurer les traces dans un fichier, option path.logs, et l'emplacement des données, option path.data.

Dans le cadre de cette installation, les traces seront créés dans le répertoire /var/log/logstash.

# ------------ Debugging Settings --------------
#
# Options for log.level:
#   * fatal
#   * error
#   * warn
#   * info (default)
#   * debug
#   * trace
#
# log.level: info
# path.logs:
path.logs: /var/log/logstash

Pour cet article, les datas seront placés dans /var/opt/logstash/common/datas

#sudo mkdir /var/opt/logstash/common/datas
#sudo chown logstash:logstash /var/opt/logstash/common/datas
#sudo chmod go-rwx /var/opt/logstash/common/datas

La configuration est modifiée ainsi pour prendre en compte cet emplacement. Et modification de la configuration

# ------------ Data path ------------------
#
# Which directory should be used by logstash and its plugins
# for any persistent needs. Defaults to LOGSTASH_HOME/data
#
# path.data:
path.data: /var/opt/logstash/common/datas

Afin de spécialisation les permissions, la commande setfacl est utilisée pour forcer les permissions pour les fichiers et répertoire créé sous le répertoire.

#sudo setfacl -dm g::0,o::0 /var/opt/logstash/common/datas

Celle-ci permet de supprimer les droits d'accès pour l'ensemble des utilisateurs. Les permissions affectées au propriétaire, lecture sur fichiers et lecture + exécution sur répertoires, sont suffisantes dans ce cas.

Ainsi, les permissions sont spécifiées ainsi.

#sudo getfacl /var/opt/logstash/common/datas
getfacl : suppression du premier « / » des noms de chemins absolus
# file: var/opt/logstash/common/datas
# owner: logstash
# group: logstash
user::rwx
group::---
other::---
default:user::rwx
default:group::---
default:other::---

Dans le cas où des données sont déjà générées dans ce répertoire, il est possible d'affecter les droits à toute la hiérarchie.

#sudo setfacl -Rdm g::0,o::0 /var/opt/logstash/common/datas

Il peut être nécessaire de modifier de nouveau les sécurités.

#sudo chmod -R go-rwx /var/opt/logstash/common/datas

likn= Démarrage

Les configurations de démarrage se trouvent dans le fichier startup.options dans le répertoire config. L'option JAVACMD permet de spécifier l'emplacement de l'instance JAVA utilisée. Par défaut, l'emplacement /usr/bin/java est utilisé, ce qui est correcte dans le cadre cette installation sous Ubuntu.

# Override Java location
JAVACMD=/usr/bin/java

L'option LS_HOME va permettre de spécifier l'emplacement racine de l'instance. Dans le cadre de cette installation, un lien a été mis en place pour faciliter les montées de version, et c'est cette valeur qui est utilisée.

# Set a home directory
#LS_HOME=/usr/share/logstash
LS_HOME=/var/opt/logstash/installed

Les configurations ayant été externalisées dans le répertoire /var/opt/logstash/common/config, il est nécessaire de modifier l'option LS_SETTINGS_DIR ainsi.

# logstash settings directory, the path which contains logstash.yml
#LS_SETTINGS_DIR="${LS_HOME}/config"
LS_SETTINGS_DIR="/var/opt/logstash/common/config"

L'option LS_PIDFILE permet de spécifier l'emplacement du fichier PID. L'existance de l'arborescence est gérée lors de l'installation du service. Pour cette installation, l'emplacement est spécifié avec la valeur /var/run/logstash/logstash.pid.

# pidfiles aren't used the same way for upstart and systemd; this is for sysv users.
#LS_PIDFILE=/var/run/logstash.pid
LS_PIDFILE=/var/run/logstash/logstash.pid

Warning-icon.png A noter que malgré la disponibilité de cette option, aucun fichier PID n'est créé sur un OS Linux. Dans le cadre de Logstash, une demande a été réalisé sur le gestionnaire de source, https://github.com/elastic/logstash/issues/3577, cependant cela ne semble pas être attendu lors de la rédaction de cet article.

Robot-icon.png Pipelines

Logstash fonctionne avec des configurations pour spécifier les sources de données. Ces configurations sont référencées à travers le fichier pipelines.yml, dans le répertoire config. Le contenu de ce fichier pour le paquet Debian est le suivant.

# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
#   https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html

- pipeline.id: main
  path.config: "/etc/logstash/conf.d/*.conf"

Le même principe est repris mais en plaçant les configurations dans le répertoire /var/opt/logstash/common/conf.d dont il faut s'assurer de l'existance.

#sudo mkdir /var/opt/logstash/common/conf.d
#sudo chown logstash:logstash /var/opt/logstash/common/conf.d
#sudo chmod go-rwx /var/opt/logstash/common/conf.d

Le fichier pipelines.yml est complété en ajoutant les lignes suivantes en fin de fichier.

- pipeline.id: main
  path.config: "/var/opt/logstash/common/conf.d/*.conf"


Start-icon.png Installation service

Viewer icon.png Voir aussi

Documentation officielle: https://www.elastic.co/guide/en/logstash/6.2/installing-logstash.html#installing-binary

Installation paquet Debian: https://www.elastic.co/guide/en/logstash/6.2/installing-logstash.html#package-repositories