sadsfae.ansible_elk

ansible-elk

Ansible Playbook pour configurer la pile ELK/EFK et le client Filebeat sur des hôtes distants.

ELK

GA

Que fait-il ?

  • Déploiement automatisé d'une pile ELK ou EFK complète de la série 6.x (Elasticsearch, Logstash/Fluentd, Kibana)
    • Les versions 5.6 et 2.4 d'ELK sont maintenues sous forme de branches et la branche master sera actuellement la 6.x.
    • Utilise Nginx comme proxy inverse pour Kibana, ou Apache en option avec apache_reverse_proxy: true.
    • Génère des certificats SSL pour Filebeat ou Logstash-forwarder.
    • Ajoute des règles iptables ou firewalld si le pare-feu est actif.
    • Ajuste la taille du tas d'Elasticsearch à la moitié de votre mémoire, avec un maximum de 32 Go.
    • Déploie les clients ELK en utilisant SSL et Filebeat pour Logstash (par défaut).
    • Déploie rsyslog si Fluentd est choisi au lieu de Logstash, récupérant le même ensemble de journaux liés à OpenStack dans /var/log/*.
    • Tous les ports de service peuvent être modifiés dans install/group_vars/all.yml.
    • Installe optionnellement curator.
    • Installe optionnellement Elastic X-Pack Suite.
    • Ceci est également disponible sur Ansible Galaxy.

Exigences

  • Serveur/client RHEL7 ou CentOS7 sans modifications.
  • RHEL7/CentOS7, Rocky ou Fedora pour les clients ELK utilisant Filebeat.
  • Serveur ELK/EFK avec au moins 8 Go de mémoire (vous pouvez essayer avec moins, mais la série 5.x est assez exigeante - essayez la série 2.4 si vous avez des ressources limitées).
  • Vous voudrez peut-être modifier vm.swappiness car ELK/EFK est exigeant et la mémoire swap affecte la réactivité.
    • Je vous laisse juger à ce sujet.
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p

Remarques

  • La version actuelle d'ELK est la 6.x mais vous pouvez consulter la branche 5.6 ou 2.4 si vous souhaitez cette série.
  • Je mettrai à jour ce playbook pour les principales versions d'ELK à l'avenir, le temps le permettant.
  • Définit par défaut le htpasswd de nginx à admin/admin.
  • Les ports nginx par défaut sont 80/8080 pour Kibana et la récupération du certificat SSL (configurable).
  • Utilise OpenJDK pour Java.
  • C'est assez rapide, cela prend environ 3 minutes sur une VM de test.
  • Fluentd peut être substitué à Logstash par défaut.
    • Définissez logging_backend: fluentd dans group_vars/all.yml.
  • Installez curator en définissant install_curator_tool: true dans install/group_vars/all.yml.
  • Installez Elastic X-Pack Suite pour Elasticsearch, LogStash ou Kibana via :
    • install_elasticsearch_xpack: true
    • install_kibana_xpack: true
    • install_logstash_xpack: true
    • Remarque : Le déploiement de X-Pack ajoutera une authentification et une sécurité supplémentaires à votre ES, par exemple, Kibana aura maintenant ses propres identifiants - le par défaut est le nom d'utilisateur : elastic et le mot de passe : changeme.

Instructions pour le serveur ELK/EFK

  • Clonez le dépôt et configurez votre fichier hosts.
git clone https://github.com/sadsfae/ansible-elk
cd ansible-elk
sed -i 's/host-01/elkserver/' hosts
sed -i 's/host-02/elkclient/' hosts
  • Si vous utilisez un utilisateur non-root pour Ansible, par exemple, AWS EC2 utilise souvent ec2-user, définissez ce qui suit, le défaut est root.
ansible_system_user: ec2-user
  • Exécutez le playbook.
ansible-playbook -i hosts install/elk.yml
  • (voir les messages du playbook).
  • Accédez à ELK à http://host-01:80 (par défaut, nginx) ou http://host-01/kibana (apache).
  • La connexion par défaut est :
    • nom d'utilisateur : admin
    • mot de passe : admin

Créez votre modèle d'index Kibana

  • Ensuite, connectez-vous à votre instance Kibana et créez un modèle d'index Kibana.

ELK

  • Remarque : Les données d'exemple peuvent être utiles, vous pouvez essayer plus tard.

ELK

ELK

ELK

ELK

  • À ce stade, vous pouvez configurer vos clients pour commencer à envoyer des données via Filebeat/SSL.

Instructions pour le client ELK

  • Exécutez le playbook client contre la variable elk_server générée.
ansible-playbook -i hosts install/elk-client.yml --extra-vars 'elk_server=X.X.X.X'
  • Une fois cela terminé, revenez à votre ELK et vous verrez les résultats de journalisation arrivés de clients ELK/EFK via Filebeat.

ELK

5.6 ELK/EFK (Obsolète)

  • La série 5.6 d'ELK/EFK est également disponible, pour l'utiliser, il suffit d'utiliser la branche 5.6.
git clone https://github.com/sadsfae/ansible-elk
cd ansible-elk
git checkout 5.6

2.4 ELK/EFK (Obsolète)

  • La série 2.4 d'ELK/EFK est également disponible, pour l'utiliser, il suffit d'utiliser la branche 2.4.
git clone https://github.com/sadsfae/ansible-elk
cd ansible-elk
git checkout 2.4
  • Vous pouvez voir une vidéo de déploiement ici :

Ansible Elk

Hiérarchie des fichiers

.
├── hosts
├── install
│   ├── elk_client.yml
│   ├── elk.yml
│   ├── group_vars
│   │   └── all.yml
│   └── roles
│       ├── apache
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── 8080vhost.conf.j2
│       │       └── kibana.conf.j2
│       ├── curator
│       │   ├── files
│       │   │   └── curator.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── curator-action.yml.j2
│       │       └── curator-config.yml.j2
│       ├── elasticsearch
│       │   ├── files
│       │   │   ├── elasticsearch.in.sh
│       │   │   └── elasticsearch.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── elasticsearch.yml.j2
│       ├── elk_client
│       │   ├── files
│       │   │   └── elk.repo
│       │   └── tasks
│       │       └── main.yml
│       ├── filebeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── filebeat.yml.j2
│       │       └── rsyslog-openstack.conf.j2
│       ├── firewall
│       │   ├── handlers
│       │   │   └── main.yml
│       │   └── tasks
│       │       └── main.yml
│       ├── fluentd
│       │   ├── files
│       │   │   ├── filebeat-index-template.json
│       │   │   └── fluentd.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── openssl_extras.cnf.j2
│       │       └── td-agent.conf.j2
│       ├── heartbeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── heartbeat.yml.j2
│       ├── instructions
│       │   └── tasks
│       │       └── main.yml
│       ├── kibana
│       │   ├── files
│       │   │   └── kibana.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── kibana.yml.j2
│       ├── logstash
│       │   ├── files
│       │   │   ├── filebeat-index-template.json
│       │   │   └── logstash.repo
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── 02-beats-input.conf.j2
│       │       ├── logstash.conf.j2
│       │       └── openssl_extras.cnf.j2
│       ├── metricbeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── metricbeat.yml.j2
│       ├── nginx
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       ├── kibana.conf.j2
│       │       └── nginx.conf.j2
│       ├── packetbeat
│       │   ├── meta
│       │   │   └── main.yml
│       │   ├── tasks
│       │   │   └── main.yml
│       │   └── templates
│       │       └── packetbeat.yml.j2
│       └── xpack
│           └── tasks
│               └── main.yml
└── meta
    └── main.yml

56 répertoires, 52 fichiers
À propos du projet

Playbook for setting up an ELK/EFK stack and clients.

Installer
ansible-galaxy install sadsfae.ansible_elk
Licence
apache-2.0
Téléchargements
1.2k
Propriétaire
hobo devop/sysadmin/SRE