geerlingguy.logstash
Rôle Ansible : Logstash
Un rôle Ansible qui installe Logstash sur RedHat/CentOS Debian/Ubuntu.
Notez que ce rôle installe un modèle grok pour syslog par défaut ; si vous souhaitez ajouter plus de filtres, veuillez les ajouter dans le répertoire /etc/logstash/conf.d/
. Par exemple, vous pouvez créer un fichier nommé 13-myapp.conf
avec le filtre grok approprié et redémarrer Logstash pour commencer à l’utiliser. Testez votre regex grok avec le Grok Debugger.
Exigences
Bien que d'autres méthodes soient possibles, ce rôle est conçu pour fonctionner avec Elasticsearch comme backend pour le stockage des messages de logs.
Variables du rôle
Les variables disponibles sont énumérées ci-dessous, avec leurs valeurs par défaut (voir defaults/main.yml
) :
logstash_version: '7.x'
La version majeure de Logstash à installer.
logstash_package: logstash
Le package spécifique à installer. Vous pouvez spécifier une version du package en utilisant la syntaxe correcte pour votre plateforme et votre gestionnaire de packages en changeant le nom du package.
logstash_listen_port_beats: 5044
Le port sur lequel Logstash écoutera les beats.
logstash_elasticsearch_hosts:
- http://localhost:9200
Les hôtes où Logstash doit expédier les logs vers Elasticsearch.
logstash_dir: /usr/share/logstash
Le répertoire dans lequel Logstash est installé.
logstash_ssl_dir: /etc/pki/logstash
logstash_ssl_certificate_file: logstash-forwarder-example.crt
logstash_ssl_key_file: logstash-forwarder-example.key
Chemins locaux vers les fichiers de certificat SSL et de clé, qui seront copiés dans logstash_ssl_dir
.
Voir Génération d'un certificat auto-signé pour des informations sur la génération et l'utilisation de certificats auto-signés avec Logstash et Filebeat.
logstash_local_syslog_path: /var/log/syslog
logstash_monitor_local_syslog: true
Indique si la configuration pour le fichier syslog local (défini comme logstash_local_syslog_path
) doit être ajoutée à Logstash. Mettez-le sur false
si vous surveillez le syslog local différemment, ou si vous ne vous souciez pas du fichier syslog local. D'autres logs locaux peuvent être ajoutés par vos propres fichiers de configuration placés dans /etc/logstash/conf.d
.
logstash_enabled_on_boot: true
Mettez cela sur false
si vous ne souhaitez pas que Logstash s'exécute au démarrage du système.
logstash_install_plugins:
- logstash-input-beats
- logstash-filter-multiline
Une liste de plugins Logstash qui doivent être installés.
logstash_setup_default_config: true
Mettez cela sur false
si vous ne souhaitez pas ajouter les fichiers de configuration par défaut fournis avec ce rôle (dans le répertoire files/filters
). Vous pouvez ajouter vos propres fichiers de configuration dans /etc/logstash/conf.d
.
Générer un certificat auto-signé
Pour une sécurité maximale, vous devez utiliser votre propre certificat valide et fichier de clé, et mettre à jour les variables logstash_ssl_*
dans votre playbook pour utiliser votre certificat.
Pour générer un certificat/clé auto-signé, vous pouvez utiliser la commande :
$ openssl req -x509 -batch -nodes -days 3650 -newkey rsa:2048 -keyout logstash.key -out logstash.crt -subj '/CN=example.com'
Notez que Filebeat et Logstash peuvent ne pas fonctionner correctement avec des certificats auto-signés à moins que vous n'ayez également la chaîne complète de confiance (y compris l'autorité de certification pour votre certificat auto-signé) ajoutée sur votre serveur. Voir : https://github.com/elastic/logstash/issues/4926#issuecomment-203936891
Les versions plus récentes de Filebeat et Logstash nécessitent également une clé privée au format pkcs8, qui peut être générée en convertissant la clé générée précédemment, par exemple :
openssl pkcs8 -in logstash.key -topk8 -nocrypt -out logstash.p8
Autres remarques
Si vous constatez une utilisation élevée du CPU par l'un des processus logstash
, et que vous utilisez Logstash avec une autre application s'exécutant sur le port 80 sur une plateforme comme Ubuntu avec upstart, le processus logstash-web
peut être bloqué dans une boucle essayant de démarrer sur le port 80, échouant, et essayant de redémarrer à cause de la présence du flag restart
dans /etc/init/logstash-web.conf
. Pour éviter ce problème, soit changez cette ligne pour ajouter une limite
à l'instruction de redémarrage, soit définissez le service logstash-web
sur enabled=no
dans votre playbook, par exemple :
- name: Assurez-vous que le processus logstash-web est arrêté et désactivé.
service: name=logstash-web state=stopped enabled=no
Exemple de Playbook
- hosts: search
pre_tasks:
- name: Utiliser Java 8 sur Debian/Ubuntu.
set_fact:
java_packages:
- openjdk-8-jdk
when: ansible_os_family == 'Debian'
roles:
- geerlingguy.java
- geerlingguy.elasticsearch
- geerlingguy.logstash
Licence
MIT / BSD
Informations sur l'auteur
Ce rôle a été créé en 2014 par Jeff Geerling, auteur de Ansible for DevOps.
ansible-galaxy install geerlingguy.logstash