geerlingguy.logstash

Rol de Ansible: Logstash

CI

Un rol de Ansible que instala Logstash en RedHat/CentOS Debian/Ubuntu.

Ten en cuenta que este rol instala un patrón grok de syslog por defecto; si deseas agregar más filtros, por favor añádelos dentro del directorio /etc/logstash/conf.d/. Como ejemplo, podrías crear un archivo llamado 13-myapp.conf con el filtro grok adecuado y reiniciar Logstash para comenzar a usarlo. Prueba tu regex grok usando el Grok Debugger.

Requisitos

Aunque hay otros métodos posibles, este rol está diseñado para funcionar con Elasticsearch como backend para almacenar mensajes de log.

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados (ver defaults/main.yml):

logstash_version: '7.x'

La versión principal de Logstash a instalar.

logstash_package: logstash

El paquete específico que se instalará. Puedes especificar una versión del paquete usando la sintaxis correcta para tu plataforma y gestor de paquetes cambiando el nombre del paquete.

logstash_listen_port_beats: 5044

El puerto por el cual Logstash escuchará por beats.

logstash_elasticsearch_hosts:
  - http://localhost:9200

Los hosts a los que Logstash debe enviar los logs a Elasticsearch.

logstash_dir: /usr/share/logstash

El directorio dentro del cual se instala Logstash.

logstash_ssl_dir: /etc/pki/logstash
logstash_ssl_certificate_file: logstash-forwarder-example.crt
logstash_ssl_key_file: logstash-forwarder-example.key

Rutas locales a los archivos de certificado SSL y clave, que se copiarán en el logstash_ssl_dir.

Consulta Generando un certificado autofirmado para información sobre cómo generar y usar certificados autofirmados con Logstash y Filebeat.

logstash_local_syslog_path: /var/log/syslog
logstash_monitor_local_syslog: true

Si la configuración para el archivo syslog local (definido como logstash_local_syslog_path) debe añadirse a Logstash. Establece esto en false si estás monitoreando el syslog local de manera diferente, o si no te importa el archivo syslog local. Otros logs locales pueden ser añadidos por tus propios archivos de configuración colocados en /etc/logstash/conf.d.

logstash_enabled_on_boot: true

Establece esto en false si no quieres que Logstash se ejecute al iniciar el sistema.

logstash_install_plugins:
  - logstash-input-beats
  - logstash-filter-multiline

Una lista de plugins de Logstash que deben instalarse.

logstash_setup_default_config: true

Establece esto en false si no deseas agregar los archivos de configuración predeterminados que vienen con este rol (dentro del directorio files/filters). Puedes agregar tus propios archivos de configuración en /etc/logstash/conf.d.

Generando un certificado autofirmado

Para mayor seguridad, deberías usar tu propio certificado y archivo de clave válidos, y actualizar las variables logstash_ssl_* en tu playbook para usar tu certificado.

Para generar un par de certificado/clave autofirmado, puedes usar el comando:

$ openssl req -x509 -batch -nodes -days 3650 -newkey rsa:2048 -keyout logstash.key -out logstash.crt -subj '/CN=example.com'

Ten en cuenta que Filebeat y Logstash pueden no funcionar correctamente con certificados autofirmados a menos que también tengas la cadena de confianza completa (incluyendo la Autoridad Certificadora para tu certificado autofirmado) en tu servidor. Consulta: https://github.com/elastic/logstash/issues/4926#issuecomment-203936891

Las versiones más recientes de Filebeat y Logstash también requieren una clave privada en formato pkcs8, que se puede generar convirtiendo la clave generada anteriormente, por ejemplo:

openssl pkcs8 -in logstash.key -topk8 -nocrypt -out logstash.p8

Otras Notas

Si ves un alto uso de CPU por uno de los procesos logstash, y estás usando Logstash junto con otra aplicación que se ejecuta en el puerto 80 en una plataforma como Ubuntu con upstart, el proceso logstash-web puede quedar atrapado en un bucle intentando iniciar en el puerto 80, fallando y tratando de iniciar de nuevo, debido a que la opción restart está presente en /etc/init/logstash-web.conf. Para evitar este problema, ya sea cambia esa línea para agregar un limit a la declaración de respawn, o establece el servicio logstash-web en enabled=no en tu playbook, por ejemplo:

- name: Asegurarse de que el proceso logstash-web esté detenido y deshabilitado.
  service: name=logstash-web state=stopped enabled=no

Ejemplo de Playbook

- hosts: search

  pre_tasks:
    - name: Usar Java 8 en Debian/Ubuntu.
      set_fact:
        java_packages:
          - openjdk-8-jdk
      when: ansible_os_family == 'Debian'

  roles:
    - geerlingguy.java
    - geerlingguy.elasticsearch
    - geerlingguy.logstash

Licencia

MIT / BSD

Información del Autor

Este rol fue creado en 2014 por Jeff Geerling, autor de Ansible for DevOps.

Instalar
ansible-galaxy install geerlingguy.logstash
Licencia
mit
Descargas
247.7k
Propietario
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns