sadsfae.ansible_elk
ansible-elk
Ansible Playbook pour configurer la pile ELK/EFK et le client Filebeat sur des hôtes distants.
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
et2.4
d'ELK sont maintenues sous forme de branches et la branchemaster
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.
- Les versions
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
dansgroup_vars/all.yml
.
- Définissez
- Installez curator en définissant
install_curator_tool: true
dansinstall/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
- nom d'utilisateur :
Créez votre modèle d'index Kibana
- Ensuite, connectez-vous à votre instance Kibana et créez un modèle d'index Kibana.
- Remarque : Les données d'exemple peuvent être utiles, vous pouvez essayer plus tard.
- À 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.
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 :
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