sadsfae.ansible_elk

ansible-elk

Playbook de Ansible para configurar la pila ELK/EFK y el cliente Filebeat en hosts remotos

ELK

GA

¿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 y 2.4 como ramas, y la rama master 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.

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 en group_vars/all.yml.
  • Instala curator configurando install_curator_tool: true en install/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

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.

ELK

  • Nota: Los datos de muestra pueden ser útiles; puedes probarlo más tarde.

ELK

ELK

ELK

ELK

  • 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

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í:

Ansible Elk

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