bimdata.fluentbit

Rôle Ansible Fluentbit

Ce rôle installe et configure Fluentbit.

Exigences

  • Ce rôle est testé uniquement avec Ansible >= 2.9.

Variables du rôle

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

Variables utilisées pour l'installation :

Variables Valeur par défaut Description
fluentbit_prerequisites ['apt-transport-https', 'curl', 'gnupg'] Liste des paquets à installer avant Fluentbit.
fluentbit_apt_key_path "/usr/share/keyrings/fluentbit-keyring.gpg" Chemin du keyring APT utilisé pour stocker la clé Fluentbit.
fluentbit_apt_key_url https://packages.fluentbit.io/fluentbit.key La clé APT pour le paquet Fluentbit.
fluentbit_apt_repos_url "https://packages.fluentbit.io/{{ ansible_distribution | lower }}/{{ ansible_distribution_release | lower }}" L'adresse du dépôt APT nécessaire pour installer Fluentbit.
fluentbit_apt_repos_component main Composant du dépôt APT.
fluentbit_pkg_name fluent-bit Le nom du paquet APT Fluentbit.
fluentbit_pkg_version "" Installer une version spécifique du paquet.
fluentbit_pkg_version_hold "{{ fluentbit_pkg_version | default(False) | ternary(True, False) }}" Verrouiller la version du paquet pour éviter les mises à jour accidentelles. Par défaut, True si fluentbit_pkg_version est défini, False sinon.
fluentbit_svc_name fluent-bit Le nom du service Fluentbit à démarrer/arrêter.
fluentbit_apt_cleanup_legacy false Supprimer les anciennes clés et anciennes sources APT si vrai.
fluentbit_apt_key_legacy_id F209D8762A60CD49E680633B4FF8368B6EA0722A ID de l'ancienne clé GPG à supprimer du keyring.
fluentbit_naming_cleanup_legacy false Supprimer les anciens services / conf / apt avec le nom td-agent.
fluentbit_pkg_name_legacy td-agent-bit Nom du paquet qui sera supprimé par le nettoyeur legacy.
fluentbit_svc_name_legacy td-agent-bit Nom du service qui sera supprimé par le nettoyeur legacy.
fluentbit_conf_directory_legacy /etc/td-agent-bit/ Répertoire de configuration qui sera supprimé par le nettoyeur legacy.

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

Variables Valeur par défaut Description
fluentbit_svc_flush 5 Temps de vidage en format secondes.nanosecondes.
fluentbit_svc_grace 5 Définir le temps de grâce en secondes.
fluentbit_svc_daemon "off" Valeur On/Off pour spécifier si Fluentbit fonctionne en tant que démon. Doit être désactivé lors de l'utilisation de l'unité Systemd fournie.
fluentbit_svc_logfile "" Chemin absolu pour un fichier journal optionnel. Écrit dans stdout si non précisé.
fluentbit_svc_loglevel info Définir le niveau de verbosité des journaux.
fluentbit_svc_parsers_file ["parsers.conf"] Liste des chemins pour les fichiers de configuration parsers.
fluentbit_svc_plugins_file ["plugins.conf"] Liste des chemins pour les fichiers de configuration plugins.
fluentbit_svc_streams_file [] Liste des chemins pour les fichiers de configuration stream processors.
fluentbit_managed_parsers_enable "{{ ((_fluentbit_parsers | length) or (_fluentbit_mlparsers | length)) | bool }}" Définir si Ansible doit créer/mettre à jour un fichier personnalisé pour le parser défini par l'utilisateur.
fluentbit_managed_parsers_file "{{ fluentbit_conf_directory }}/managed-parsers.conf" Fichier où les parsers personnalisés sont définis si nécessaire.
fluentbit_svc_http {} Dictionnaire pour la configuration du serveur HTTP intégré.
fluentbit_svc_storage {} Dictionnaire pour la configuration de stockage/tampon.
fluentbit_svc_limit_open_files Indéfini Configurer LimitNOFILE pour le service systemd si défini

Pour fluentbit_svc_http, chaque clé est utilisée comme nom d'option de configuration et les valeurs comme valeurs. Mais vous n'avez pas besoin d'ajouter le préfixe HTTP_, il sera ajouté par le template. Par exemple, vous pouvez le définir de cette manière :

fluentbit_svc_http:
  server: On
  listen: 0.0.0.0
  port: "{{ fluentbit_monitoring_port }}"

C'est la même chose pour fluentbit_svc_storage : vous n'avez pas besoin de spécifier le préfixe storage.. Exemple :

fluentbit_svc_storage:
  path: /var/log/flb-storage/
  sync: full
  checksum: "off"

Autres variables :

Variables Valeur par défaut Description
fluentbit_dbs_path "" Un chemin pour un répertoire qui sera créé par le rôle. Par exemple pour stocker vos fichiers DB d'entrée.

Variables pour le traitement des journaux :

Variables Valeur par défaut Description
_fluentbit_inputs "{{ lookup('template', 'get_vars.j2'), template_vars=dict(var_type='input') }}" Liste de dictionnaires définissant toutes les entrées de journaux.
_fluentbit_filters "{{ lookup('template', 'get_vars.j2'), template_vars=dict(var_type='filter') }}" Liste de dictionnaires définissant tous les filtres de journaux.
_fluentbit_outputs "{{ lookup('template', 'get_vars.j2'), template_vars=dict(var_type='output') }}" Liste de dictionnaires définissant toutes les sorties de journaux.
_fluentbit_parsers "{{ lookup('template', 'get_vars.j2'), template_vars=dict(var_type='parser') }}" Liste de dictionnaires définissant tous les parsers gérés de journaux.
_fluentbit_mlparsers "{{ lookup('template', 'get_vars.j2'), template_vars=dict(var_type='mlparser') }}" Liste de dictionnaires définissant tous les parsers multilignes gérés de journaux.

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

  • _fluentbit_inputs va agréger toutes les variables dont le nom correspond à cette expression régulière : ^fluentbit_.+_input(s)?$'.
  • _fluentbit_filters va agréger toutes les variables dont le nom correspond à cette expression régulière : ^fluentbit_.+_filter(s)?$'.
  • _fluentbit_outputs va agréger toutes les variables dont le nom correspond à cette expression régulière : ^fluentbit_.+_output(s)?$'.
  • _fluentbit_parsers va agréger toutes les variables dont le nom correspond à cette expression régulière : ^fluentbit_.+_parser(s)?$'.
  • _fluentbit_outputs va agréger toutes les variables dont le nom correspond à cette expression régulière : ^fluentbit_.+_mlparser(s)?$'.

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

  • un dictionnaire définissant une entrée/filter/sortie/parser ou
  • une liste de dictionnaires définissant une ou plusieurs entrées/filtres/sorties/parsers.

Chaque dictionnaire est utilisé pour définir une section [INPUT], [FILTER], [OUTPUT], [PARSER] ou [MULTILINE_PARSER] dans le fichier de configuration Fluentbit ou dans le fichier de parser géré. Chaque section de configuration est configurée avec des paires clé/valeur, donc les clés du dictionnaire sont utilisées comme clés de configuration et les valeurs comme valeurs.

Par exemple :

fluentbit_nginx_input:
  - name: tail
    path: /var/log/nginx/access.log
  - name: tail
    path: /var/log/nginx/error.log

fluentbit_kernel_input:
  name: tail
  path: /var/log/kern.log

créera :

[INPUT]
  name tail
  path /var/log/nginx/access.log
[INPUT]
  name tail
  path /var/log/nginx/error.log
[INPUT]
  name tail
  path /var/log/kern.log

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.

Les dictionnaires Ansible ne peuvent pas avoir la même clé plusieurs fois. Cela peut être un problème pour utiliser des éléments comme record. Pour contourner ce problème, chaque clé peut être prefixée par un numéro qui sera supprimé dans le fichier de template. Il doit correspondre à cette expression régulière : '^[0-9]+__'.

Par exemple :

fluentbit_add_context_filter:
  - name: record_modifier
    match: '*'
    0__record: hostname ${HOSTNAME}
    1__record: product Awesome_Tool

créera :

[FILTER]
  name record_modifier
  match *
  record hostname ${HOSTNAME}
  record product Awesome_Tool

Dépendances

Aucune

Exemple de Playbook

dans group_vars/all.yml :

fluentbit_kernel_input:
  name: tail
  path: /var/log/kern.log

fluentbit_env_filter:
  name: record_modifier
  match: '*'
  record: "env {{ env }}"

fluentbit_central_output:
  name: forward
  match: '*'
  host: "{{ logs_server_address }}"
  port: "{{ log_forward_port }}"

dans group_vars/web.yml :

fluentbit_nginx_input:
  - name: tail
    path: /var/log/nginx/access.log
  - name: tail
    path: /var/log/nginx/error.log

dans playbook.yml :

- hosts: web
  gather_facts: True
  become: yes
  roles:
    - bimdata.fluentbit

Licence

BSD

Informations sur l'auteur

BIMData.io

À propos du projet

This role installs and configures Fluentbit.

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