freedomofpress.elk

Rôle Ansible ELK

Installe la pile ELK (Elasticsearch, Logstash et Kibana) pour l'agrégation et la surveillance des journaux. Destiné à être intégré avec Riemann pour les fonctionnalités d'alerte.

Exigences

Variables du rôle

elk_kibana_user: "kibana"
elk_kibana_logfile: "/var/log/kibana.log"

# Permet de désactiver la fonctionnalité de snapshot. Elle n'est pas bien
# testée, donc le laisser à false par défaut. Si défini sur true lors d'un premier
# exécution, il faut probablement ajouter `meta: flush_handlers` avant de procéder
# pour s'assurer que la variable `path.repo:` est reconnue par le service elasticsearch en cours d'exécution.
elk_elasticsearch_snapshot: false

elk_elasticsearch_snapshot_directory: /var/lib/elasticsearch/backups
elk_elasticsearch_snapshot_repository: es_backup
elk_elasticsearch_snapshot_initialization:
  type: fs
  settings:
    location: "{{ elk_elasticsearch_snapshot_directory }}"
    compress: yes
  _hack: null

# Ce serait bien d'utiliser iso8601 au lieu d'epoch, mais l'API ElasticSearch
# renvoie une erreur invalid_snapshot_name avec le format iso8601.
elk_elasticsearch_snapshot_name: "snapshot-{{ ansible_date_time.epoch }}"

# Limites à définir dans /etc/security/limits.conf. Assurez-vous de copier l'intégralité
# de la liste si vous écrasez l'un des éléments individuels.
elk_elasticsearch_pam_limits:
    - domain: elasticsearch
      limit_item: memlock
      limit_type: hard
      value: unlimited

    - domain: elasticsearch
      limit_item: memlock
      limit_type: soft
      value: unlimited

    - domain: elasticsearch
      limit_item: nofile
      limit_type: soft
      value: 65535

    - domain: elasticsearch
      limit_item: nofile
      limit_type: hard
      value: 65535

# Plugin Riemann pour les alertes, filtre de dé-point pour la compatibilité avec ElasticSearch v2.
# Voir : https://www.elastic.co/blog/introducing-the-de_dot-filter
elk_logstash_plugins:
  - logstash-output-riemann
  - logstash-filter-de_dot

# Interface utilisée pour les restrictions de pare-feu et les recherches IPv4
elk_network_interface: eth0

elk_cluster_name: elk-logging

# SSL est désactivé par défaut. Définissez ces variables sur les chemins complets vers les certificats SSL
# que vous souhaitez utiliser, et Nginx forcera les connexions HTTPS.
# Vous devez placer les certificats SSL là-bas dans une tâche séparée.
elk_nginx_ssl_certificate: ""
elk_nginx_ssl_certificate_key: ""
elk_nginx_server_name: localhost

# Pas sûr pour une utilisation en production ! Écrasez pour sécuriser les connexions.
elk_kibana_username: kibana
elk_kibana_password: kibana

# Écrasez pour changer la page d'accueil, par exemple un tableau de bord personnalisé :
# "dashboard/Votre-Nom-de-Dashboard". Vous devez remplacer les espaces dans
# les noms de tableau de bord par des traits d'union, car Kibana s'y attend.
elk_kibana_default_app: discover

# Activer la configuration automatique de la liste blanche IP pour les "logclients".
# Utilise ufw. Désactivez si vous utilisez un autre rôle pour la configuration du pare-feu.
elk_configure_firewall: true

# Permet aux playbooks en aval d'utiliser la configuration du serveur web personnalisée
# Réglez cela sur false pour sauter le déploiement nginx de ce rôle.
elk_configure_nginx: true

# Permet aux playbooks en aval d'écraser les patterns et la liste de fichiers glob pour les filtres
elk_logstash_patterns:
  - logstash-patterns/*
elk_logstash_filters:
  - logstash-configs/*

# Déclarez le fichier glob des bases de données GeoIP à copier. Désactivé par défaut.
elk_logstash_geoipdbs: []

Utilisation

Utilisez le rôle dans un playbook comme ceci :

- hosts: logserver
  roles:
    - role: elk
      elk_kibana_username: admin
      elk_kibana_password: WowWhatAStrongPassword4

Ajout de visualisations

Le rôle ne crée pas encore automatiquement des visualisations Kibana. Vous pouvez cependant importer des visualisations sauvegardées qui sont fournies avec le rôle dans files/kibana-dashboards.json. Allez dans Paramètres -> Objets -> Importer dans l'interface de Kibana et parcourez le fichier JSON.

Exécution des tests

Ce rôle utilise Molecule et ServerSpec pour les tests. Pour l'utiliser :

pip install molecule
gem install serverspec
molecule test

Vous pouvez également exécuter des commandes spécifiques :

molecule idempotence
molecule verify

Consultez la documentation de Molecule pour plus d'informations.

Lecture complémentaire

Configuration

Développement de filtres personnalisés

Consultez le répertoire examples/writing-filters dans ce dépôt pour un environnement de développement préconfiguré. Copiez ce répertoire sur un serveur avec Logstash installé, ou utilisez une VM de test Vagrant.

Maintenance

Licence

MIT

À propos du projet

Stands up ELK stack for log aggregation.

Installer
ansible-galaxy install freedomofpress.elk
Licence
Unknown
Téléchargements
152
Propriétaire
Defending and supporting cutting-edge transparency journalism in the face of adversity.