sadsfae.ansible_elk
ansible-elk
Playbook de Ansible para configurar la pila ELK/EFK y el cliente Filebeat en hosts remotos
¿Qué hace?
- Despliegue automatizado de una pila completa de ELK o EFK de la serie 6.x (Elasticsearch, Logstash/Fluentd, Kibana)
- Se mantienen las versiones ELK
5.6
y2.4
como ramas, y la ramamaster
será 6.x actualmente. - Usa Nginx como un proxy inverso para Kibana, o opcionalmente Apache configurando
apache_reverse_proxy: true
. - Genera certificados SSL para Filebeat o Logstash-forwarder.
- Agrega reglas de iptables o firewalld si el cortafuegos está activo.
- Ajusta el tamaño de la memoria de Elasticsearch a la mitad de tu memoria, con un máximo de 32G.
- Despliega clientes de ELK usando SSL y Filebeat para Logstash (por defecto).
- Despliega rsyslog si se elige Fluentd en lugar de Logstash, recogiendo el mismo conjunto de logs relacionados con OpenStack en /var/log/*.
- Todos los puertos de servicio se pueden modificar en
install/group_vars/all.yml
. - Instalación opcional de curator.
- Instalación opcional del Elastic X-Pack Suite.
- También está disponible en Ansible Galaxy.
- Se mantienen las versiones ELK
Requisitos
- Servidor/cliente RHEL7 o CentOS7 sin modificaciones.
- RHEL7/CentOS7, Rocky o Fedora para los clientes de ELK usando Filebeat.
- Servidor ELK/EFK con al menos 8G de memoria (puedes intentar con menos, pero la serie 5.x es bastante exigente; prueba la serie 2.4 si tienes recursos limitados).
- Es posible que desees modificar
vm.swappiness
ya que ELK/EFK es exigente y la paginación afecta la capacidad de respuesta.- Dejo esto a tu juicio.
echo "vm.swappiness=10" >> /etc/sysctl.conf
sysctl -p
Notas
- La versión actual de ELK es 6.x, pero puedes consultar la rama 5.6 o 2.4 si deseas esa serie.
- Actualizaré este playbook para las versiones principales de ELK en adelante, según el tiempo lo permita.
- Establece la contraseña de nginx en admin/admin inicialmente.
- Los puertos de nginx son 80/8080 por defecto para Kibana y recuperación de certificados SSL (configurables).
- Usa OpenJDK para Java.
- Es bastante rápido, toma alrededor de 3 minutos en una máquina virtual de prueba.
- Fluentd puede ser sustituido por el Logstash por defecto.
- Establece
logging_backend: fluentd
engroup_vars/all.yml
.
- Establece
- Instala curator configurando
install_curator_tool: true
eninstall/group_vars/all.yml
. - Instala Elastic X-Pack Suite para Elasticsearch, LogStash o Kibana configurando:
install_elasticsearch_xpack: true
install_kibana_xpack: true
install_logstash_xpack: true
- Nota: Desplegar X-Pack envolverá tu ES con autenticación y seguridad adicionales; Kibana, por ejemplo, tendrá sus propias credenciales ahora - el usuario por defecto es:
elastic
y la contraseña:changeme
.
Instrucciones para el Servidor ELK/EFK
- Clona el repositorio y configura tu archivo de 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 estás usando un usuario que no es root para Ansible, por ejemplo, AWS EC2 utiliza ec2-user, configura lo siguiente, el valor por defecto es root.
ansible_system_user: ec2-user
- Ejecuta el playbook.
ansible-playbook -i hosts install/elk.yml
- (ver mensajes del playbook)
- Navega a ELK en http://host-01:80 (por defecto, nginx) o http://host-01/kibana (apache).
- El inicio de sesión por defecto es:
- usuario:
admin
- contraseña:
admin
- usuario:
Crea tu Patrón de Índice en Kibana
- A continuación, iniciarás sesión en tu instancia de Kibana y crearás un patrón de índice en Kibana.
- Nota: Los datos de muestra pueden ser útiles; puedes probarlo más tarde.
- En este punto, puedes configurar tu(s) cliente(s) para comenzar a enviar datos a través de Filebeat/SSL.
Instrucciones para el Cliente ELK
- Ejecuta el playbook del cliente contra la variable generada
elk_server
.
ansible-playbook -i hosts install/elk-client.yml --extra-vars 'elk_server=X.X.X.X'
- Una vez que esto se complete, regresa a tu ELK y verás los resultados de logs provenientes de los clientes ELK/EFK a través de Filebeat.
ELK/EFK 5.6 (Obsoleto)
- La serie 5.6 de ELK/EFK también está disponible; para usar esta serie, simplemente utiliza la rama 5.6.
git clone https://github.com/sadsfae/ansible-elk
cd ansible-elk
git checkout 5.6
ELK/EFK 2.4 (Obsoleto)
- La serie 2.4 de ELK/EFK también está disponible; para usar esta serie, simplemente utiliza la rama 2.4.
git clone https://github.com/sadsfae/ansible-elk
cd ansible-elk
git checkout 2.4
- Puedes ver un video de despliegue aquí:
Jerarquía de Archivos
.
├── 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 directorios, 52 archivos
Acerca del proyecto
Playbook for setting up an ELK/EFK stack and clients.
Instalar
ansible-galaxy install sadsfae.ansible_elk
Licencia
apache-2.0
Descargas
1.2k
Propietario
hobo devop/sysadmin/SRE