geerlingguy.logstash
Rol de Ansible: Logstash
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.
ansible-galaxy install geerlingguy.logstash