freedomofpress.elk

Rol de Ansible para ELK

Instala el stack ELK (Elasticsearch, Logstash y Kibana) para la agregación y monitoreo de logs. Está destinado a la integración con Riemann para funcionalidad de alertas.

Requisitos

Variables del rol

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

# Permite desactivar la funcionalidad de instantáneas. No está bien
# probado, así que dejar false como defecto por ahora. Si se establece en true en una primera
# ejecución, se debería añadir `meta: flush_handlers` antes de ejecutar para asegurar que
# la variable `path.repo:` sea reconocida por el servicio de elasticsearch en ejecución.
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

# Sería bueno utilizar iso8601 en lugar de epoch, pero la API de ElasticSearch
# genera un error de invalid_snapshot_name con el formato iso8601.
elk_elasticsearch_snapshot_name: "snapshot-{{ ansible_date_time.epoch }}"

# Límites a establecer en /etc/security/limits.conf. Asegúrate de copiar toda la
# lista si sobreescribes cualquier elemento individual.
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 de Riemann para alertas, filtro de de-dot para compatibilidad con ElasticSearch v2.
# Ver: https://www.elastic.co/blog/introducing-the-de_dot-filter
elk_logstash_plugins:
  - logstash-output-riemann
  - logstash-filter-de_dot

# Interfaz utilizada para restricciones de firewall y búsquedas IPv4
elk_network_interface: eth0

elk_cluster_name: elk-logging

# SSL desactivado por defecto. Establece estas variables a las rutas completas de los
# certificados SSL que deseas usar y Nginx forzará las conexiones HTTPS.
# Debes colocar los certificados SSL allí en un play separado.
elk_nginx_ssl_certificate: ""
elk_nginx_ssl_certificate_key: ""
elk_nginx_server_name: localhost

# ¡No seguro para uso en producción! Sobrescribe para asegurar inicios de sesión.
elk_kibana_username: kibana
elk_kibana_password: kibana

# Sobrescribe para cambiar la página de inicio, por ejemplo, un dashboard personalizado:
# "dashboard/Nombre-De-Tu-Dashboard". Debes reemplazar los espacios en
# los nombres de los dashboards con guiones, ya que Kibana lo espera.
elk_kibana_default_app: discover

# Habilita la configuración automática de la lista blanca de IP para "logclients".
# Utiliza ufw. Desactiva si estás usando otro rol para la configuración del firewall.
elk_configure_firewall: true

# Permite que otros playbooks utilicen la configuración personalizada del servidor web
# Establece esto en false para omitir el despliegue de nginx de este rol
elk_configure_nginx: true

# Permite que otros playbooks sobreescriban patrones y lista de filtros fileglob
elk_logstash_patterns:
  - logstash-patterns/*
elk_logstash_filters:
  - logstash-configs/*

# Declara fileglob de bases de datos GeoIP a copiar. Desactivado por defecto.
elk_logstash_geoipdbs: []

Uso

Utiliza el rol en un playbook así:

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

Agregar visualizaciones

El rol aún no crea visualizaciones de Kibana automáticamente. Sin embargo, puedes importar visualizaciones guardadas que vienen con el rol en files/kibana-dashboards.json. Ve a Configuración -> Objetos -> Importar en la interfaz de Kibana y busca el archivo JSON.

Ejecutar las pruebas

Este rol utiliza Molecule y ServerSpec para las pruebas. Para usarlo:

pip install molecule
gem install serverspec
molecule test

También puedes ejecutar comandos selectivos:

molecule idempotence
molecule verify

Consulta la documentación de Molecule para más información.

Lecturas adicionales

Instalación

Desarrollo de filtros personalizados

Consulta el directorio examples/writing-filters en este repositorio para un entorno de desarrollo preconfigurado. Copia ese directorio a un servidor con logstash instalado, o usa una VM de pruebas con Vagrant.

Mantenimiento

Licencia

MIT

Acerca del proyecto

Stands up ELK stack for log aggregation.

Instalar
ansible-galaxy install freedomofpress.elk
Licencia
Unknown
Descargas
152
Propietario
Defending and supporting cutting-edge transparency journalism in the face of adversity.