Installation Logstash
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.
Sommaire
Votre avis
Nobody voted on this yet
|
|
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.
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
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
.
#sudo wget -P /var/opt/logstash https://artifacts.elastic.co/downloads/logstash/logstash-6.2.3.tar.gz
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
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
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
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
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/
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.
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
.
Attention, il peut être nécessaire de modifier la configuration des fichiers trace, dans le fichier
metricbeat.yml
, comme explicité dans l'article suivant.
Configuration
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
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
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.
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"
Installation service
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