geerlingguy.logstash

Rôle Ansible : Logstash

CI

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.

Installer
ansible-galaxy install geerlingguy.logstash
Licence
mit
Téléchargements
247.7k
Propriétaire
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns