bimdata.fluentd

Rôle Ansible Fluentd

Ce rôle installe et configure Fluentd.

Exigences

  • Ce rôle est uniquement testé sur Debian 12.x (Bookworm).

Variables du rôle

Ce rôle essaie de conserver la même configuration par défaut que si vous installiez Fluentd manuellement. Vous pouvez trouver plus d'informations sur chaque option dans la documentation de Fluentd.

Variables utilisées pour l'installation :

Variables Valeur par défaut Description
fluentd_prerequisites ['apt-transport-https', 'curl', 'gnupg'] Liste des paquets à installer avant Fluentd.
fluentd_major_version 5 Version majeure de Fluentd que vous souhaitez installer.
fluentd_apt_key_url https://packages.treasuredata.com/GPG-KEY-td-agent La clé APT pour le paquet 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'] Les composants des dépôts APT.
fluentd_pkg_name fluent-package Nom du paquet APT de Fluentd.
fluentd_pkg_version: "" Installer une version spécifique du paquet.
fluentd_pkg_version_hold "{{ fluentd_pkg_version default(False)
fluentd_svc_name fluentd Le nom du service Fluentd pour démarrer/arrêter le démon.

Variables utilisées pour supprimer les éléments hérités (par exemple si installés avant le renommage de td-agent -> fluentd)

Variables Valeur par défaut Description
fluentd_apt_cleanup_legacy false Supprime les anciennes clés et anciennes sources APT si vrai.
fluentd_apt_key_legacy_id BEE682289B2217F45AF4CC3F901F9177AB97ACBE ID de l'ancienne clé GPG à supprimer de la clé.
fluentd_naming_cleanup_legacy false Supprime les anciens services / conf / apt avec le nom td-agent.
fluentd_pkg_name_legacy td-agent Nom du paquet qui sera supprimé par le nettoyeur hérité.
fluentd_svc_name_legacy td-agent Nom du service qui sera supprimé par le nettoyeur hérité.
fluentd_conf_directory_legacy /etc/td-agent/ Répertoire de configuration qui sera supprimé par le nettoyeur hérité.

Variables utilisées pour la configuration générale :

Variables Valeur par défaut Description
fluentd_plugins [] Liste des plugins à installer.
fluentd_gem_exec_path /usr/sbin/fluent-gem Chemin binaire gem pour installer des plugins Fluentd.
fluentd_system {} Configuration système de Fluentd.
fluentd_conf_directory "/etc/fluent" Répertoire de configuration de Fluentd.
fluentd_conf_file_path "{{ fluentd_conf_directory }}/fluentd.conf" Chemin du fichier de configuration de Fluentd.
fluentd_include_directory Indéfini Peut être utilisé pour inclure d'autres fichiers de configuration. Cela ajoutera @include {{ fluentd_include_directory }}*.conf dans la conf.

Pour fluentd_system, chaque clé est utilisée comme nom d'option de configuration et les valeurs comme valeurs. Vous pouvez voir toutes les options disponibles dans la documentation de Fluentd.

fluentd_plugins est une liste des plugins qui seront installés par fluentd_gem_exec_path. Vous pouvez spécifier la version souhaitée pour chaque plugin :

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

Variables pour le traitement des logs :

Variables Valeur par défaut Description
_fluentd_sources: "{{ lookup('template', './lookup/get_sources.j2') }}" Liste de dictionnaires définissant toutes les sources de configuration.
_fluentd_filters: "{{ lookup('template', './lookup/get_filters.j2') }}" Liste de dictionnaires définissant toutes les configurations de filtre.
_fluentd_labels: "{{ lookup('template', './lookup/get_labels.j2') }}" Liste de dictionnaires définissant toutes les configurations d'étiquettes.
_fluentd_matches: "{{ lookup('template', './lookup/get_matches.j2') }}" Liste de dictionnaires définissant toutes les configurations de correspondance.

Dans la plupart des cas, vous ne devez pas modifier ces variables. Le templating est utilisé pour construire ces listes avec d'autres variables.

  • _fluentd_sources regroupera toutes les variables dont le nom correspond à cette expression régulière : ^fluentd_.+_source(s)?$.
  • _fluentd_filters regroupera toutes les variables dont le nom correspond à cette expression régulière : ^fluentd_.+_filter(s)?$.
  • _fluentd_labels regroupera toutes les variables dont le nom correspond à cette expression régulière : ^fluentd_.+_label(s)$.
  • _fluentd_matches regroupera toutes les variables dont le nom correspond à cette expression régulière : ^fluentd_.+_match(es)?$.

Chaque variable correspondant à ces expressions régulières doit être :

  • un dictionnaire définissant une source/un filtre/une étiquette/une correspondance ou
  • une liste de dictionnaires définissant une ou plusieurs sources/filtres/étiquettes/correspondances.

Chaque dictionnaire est utilisé pour définir une section <source>, <filter>, <label> ou <match> dans le fichier de configuration de Fluentd. Chaque section de configuration est configurée avec des couples clé/valeur, les clés du dictionnaire étant utilisées comme clés de configuration et les valeurs comme valeurs.

Certaines clés ont des comportements spéciaux :

  • type sera remplacé par @type.
  • id sera remplacé par @id.
  • label sera remplacé par @label.
  • log_level sera remplacé par @log_level.
  • _section_args est une clé spéciale utilisée pour définir des choses comme des tags qui seront adaptés par la configuration.
  • Pour la configuration des étiquettes (variables correspondant à ^fluentd_.+_label(s)$), la clé name est utilisée pour définir le nom de l'étiquette, comme ceci <label @my_name>.
  • Les dictionnaires ne peuvent pas avoir de clés dupliquées, donc chaque clé devant être répétée peut être précédée d'un préfixe qui correspond à cette expression régulière ^[0-9]+__. Le préfixe sera supprimé lorsque la configuration sera générée.

Par exemple :

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

créera :

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

Cela vous permet de définir des variables dans plusieurs group_vars et de les cumuler pour des hôtes dans plusieurs groupes sans avoir besoin de réécrire la liste complète.

Dépendances

Aucune

Licence

BSD

Informations sur l'auteur

BIMData.io

À propos du projet

This role installs and configures Fluentd.

Installer
ansible-galaxy install bimdata.fluentd
Licence
mit
Téléchargements
1.1k
Propriétaire