bimdata.fluentd

Rol de Ansible Fluentd

Este rol instala y configura Fluentd.

Requisitos

  • Este rol solo ha sido probado en Debian 12.x (Bookworm).

Variables del Rol

Este rol intenta mantener la misma configuración predeterminada como si hubieras instalado Fluentd manualmente. Puedes encontrar más información sobre cada opción en la documentación de Fluentd.

Variables utilizadas para la instalación:

Variables Valor predeterminado Descripción
fluentd_prerequisites ['apt-transport-https', 'curl', 'gnupg'] Lista de paquetes que deben instalarse antes de Fluentd.
fluentd_major_version 5 Versión principal de Fluentd que deseas instalar.
fluentd_apt_key_url https://packages.treasuredata.com/GPG-KEY-td-agent La clave APT para el paquete de Fluentd.
fluentd_apt_repos_url "https://packages.treasuredata.com/{{ fluentd_major_version }}/{{ ansible_distribution lower }}/{{ ansible_distribution_release
fluentd_apt_repos_suites "{{ ansible_distribution_release lower }}"
fluentd_apt_repos_components ['contrib'] Los componentes del repositorio APT.
fluentd_pkg_name fluent-package El nombre del paquete APT de Fluentd.
fluentd_pkg_version: "" Instalar una versión específica del paquete.
fluentd_pkg_version_hold "{{ fluentd_pkg_version default(False)
fluentd_svc_name fluentd El nombre del servicio de Fluentd para iniciar/detener el demonio.

Variables utilizadas para eliminar elementos antiguos (por ejemplo, si se instaló antes del cambio de nombre de td-agent a fluentd)

Variables Valor predeterminado Descripción
fluentd_apt_cleanup_legacy false Eliminar claves antiguas y fuentes APT antiguas si es verdadero.
fluentd_apt_key_legacy_id BEE682289B2217F45AF4CC3F901F9177AB97ACBE ID de la antigua clave GPG para eliminar del llavero.
fluentd_naming_cleanup_legacy false Eliminar antiguo servicio / conf / apt con el nombre td-agent.
fluentd_pkg_name_legacy td-agent Nombre del paquete que será eliminado por el limpiador de legado.
fluentd_svc_name_legacy td-agent Nombre del servicio que será eliminado por el limpiador de legado.
fluentd_conf_directory_legacy /etc/td-agent/ Directorio de configuración que será eliminado por el limpiador de legado.

Variables utilizadas para la configuración general:

Variables Valor predeterminado Descripción
fluentd_plugins [] Lista de plugins para instalar.
fluentd_gem_exec_path /usr/sbin/fluent-gem Ruta del binario Gem para instalar plugins de fluentd.
fluentd_system {} Configuración del sistema de fluentd.
fluentd_conf_directory "/etc/fluent" Directorio de configuración de Fluentd.
fluentd_conf_file_path "{{ fluentd_conf_directory }}/fluentd.conf" Ruta del archivo de configuración de Fluentd.
fluentd_include_directory Indefinido Puede usarse para incluir otros archivos de configuración. Se añadirá @include {{ fluentd_include_directory }}*.conf en la configuración.

Para fluentd_system, cada clave se usa como un nombre de opción de configuración y los valores como valores. Puedes ver todas las opciones disponibles en la documentación de Fluentd

fluentd_plugins es una lista de los plugins que serán instalados por fluentd_gem_exec_path. Puedes especificar la versión deseada para cada plugin:

fluentd_plugins:
  - name: fluent-plugin-prometheus
    version: 2.0.0

Variables para el procesamiento de logs:

Variables Valor predeterminado Descripción
_fluentd_sources: "{{ lookup('template', './lookup/get_sources.j2') }}" Lista de diccionarios que definen todas las configuraciones de fuentes.
_fluentd_filters: "{{ lookup('template', './lookup/get_filters.j2') }}" Lista de diccionarios que definen todas las configuraciones de filtros.
_fluentd_labels: "{{ lookup('template', './lookup/get_labels.j2') }}" Lista de diccionarios que definen todas las configuraciones de etiquetas.
_fluentd_matches: "{{ lookup('template', './lookup/get_matches.j2') }}" Lista de diccionarios que definen todas las configuraciones de coincidencias.

En la mayoría de los casos, no deberías modificar estas variables. Se utiliza la creación de plantillas para construir estas listas con otras variables.

  • _fluentd_sources agregará todas las variables cuyo nombre coincida con esta expresión regular: ^fluentd_.+_source(s)?$.
  • _fluentd_filters agregará todas las variables cuyo nombre coincida con esta expresión regular: ^fluentd_.+_filter(s)?$.
  • _fluentd_labels agregará todas las variables cuyo nombre coincida con esta expresión regular: ^fluentd_.+_label(s)$.
  • _fluentd_matches agregará todas las variables cuyo nombre coincida con esta expresión regular: ^fluentd_.+_match(es)?$.

Cada variable que coincida con estas expresiones regulares debe ser:

  • un diccionario que defina una fuente/filtro/etiqueta/coincidencia o
  • una lista de diccionarios que definen una o más fuentes/filtros/etiquetas/coincidencias.

Cada diccionario se usa para definir una sección <source>, <filter>, <label> o <match> en el archivo de configuración de Fluentd. Cada sección de configuración se configura con pares clave/valor, por lo que las claves del diccionario se utilizan como claves de configuración y los valores como valores.

Al algunas claves tienen comportamientos especiales:

  • type será reemplazado por @type.
  • id será reemplazado por @id.
  • label será reemplazado por @label.
  • log_level será reemplazado por @log_level.
  • _section_args es una clave especial utilizada para definir cosas como etiquetas que coincidirán con la configuración.
  • Para la configuración de etiquetas (variables que coinciden con ^fluentd_.+_label(s)$), la clave name se utiliza para definir el nombre de la etiqueta, como esto <label @my_name>.
  • Los diccionarios no pueden tener claves duplicadas, así que cada clave que necesite repetirse puede ir precedida por un prefijo que coincida con esta expresión regular ^[0-9]+__. El prefijo se eliminará cuando se genere la configuración.

Por ejemplo:

fluentd_default_forward_source:
  type: forward
  id: forward
  bind: 0.0.0.0
  port: 24224

fluentd_systemd_filters:
  - _section_args: "systemd.**"
    type: systemd_entry
    id: parse_systemd
    field_map: '{"_HOSTNAME": "host"}'
    field_map_strict: "false"
    fields_lowercase: "true"
    fields_strip_underscores: "true"
  - _section_args: "systemd.unknown"
    type: record_modifier
    id: parse_unknown
    record:
      comm: unknown

fluentd_archive_label:
  name: archive
  filter:
    _section_args: "**"
    type: record_modifier
    whitelist_keys: host, message
  0__match:
    _section_args: "syslog.*.4 syslog.*.10"
    type: file
    id: archives_syslog_auth
    path: /logs/archives/${host}/auth-%Y%m%d
  1__match:
    _section_args: "**"
    type: "null"
    id: archives_drop

creará:

<source>                                                                                                  
  @type forward                                                                                           
  @id forward                                                                                             
  bind 0.0.0.0                                                                                            
  port 24224                                                                                              
</source>

<filter systemd.**>                                                                                       
  @type systemd_entry                                                                                     
  @id parse_systemd                                                                                       
  field_map {"_HOSTNAME": "host"}                                                                         
  field_map_strict false                                                                                  
  fields_lowercase true                                                                                   
  fields_strip_underscores true                                                                           
</filter>                                                                                                 
<filter systemd.unknown>                                                                                  
  @type record_modifier                                                                                   
  @id parse_unknown                                                                                       
  <record>                                                                                                
    comm unknown                                                                                          
  </record>                                                                                               
</filter>

<label @archive>
  <filter **>
    @type record_modifier
    whitelist_keys host, message
  </filter>
  <match syslog.*.4 syslog.*.10>
    @type file
    @id archives_syslog_auth
    path /logs/archives/${host}/auth-%Y%m%d
  </match>
  <match **>
    @type null
    @id archives_drop
  </match>
</label>

Te permite definir variables en múltiples group_vars y acumulándolas para hosts en múltiples grupos sin necesidad de reescribir la lista completa.

Dependencias

Ninguna

Licencia

BSD

Información del Autor

BIMData.io

Acerca del proyecto

This role installs and configures Fluentd.

Instalar
ansible-galaxy install bimdata.fluentd
Licencia
mit
Descargas
1.1k
Propietario