fluentbit

Ansible роль Fluentbit

Эта роль устанавливает и настраивает Fluentbit.

Требования

  • Эта роль протестирована только с Ansible >= 2.9.

Переменные роли

Эта роль старается сохранить ту же конфигурацию по умолчанию, как если бы вы вручную устанавливали Fluentbit. Вы можете найти дополнительную информацию о каждой опции в документации Fluentbit.

Переменные, используемые для установки:

Переменные Значение по умолчанию Описание
fluentbit_prerequisites ['apt-transport-https', 'curl', 'gnupg'] Список пакетов, которые нужно установить перед Fluentbit.
fluentbit_apt_key_path "/usr/share/keyrings/fluentbit-keyring.gpg" Путь к APT ключу для хранения ключа Fluentbit.
fluentbit_apt_key_url https://packages.fluentbit.io/fluentbit.key Ключ APT для пакета Fluentbit.
fluentbit_apt_repos_url "https://packages.fluentbit.io/{{ ansible_distribution | lower }}/{{ ansible_distribution_release | lower }}" Адрес APT репозитория для установки Fluentbit.
fluentbit_apt_repos_component main Компонент APT репозитория.
fluentbit_pkg_name fluent-bit Имя пакета Fluentbit для APT.
fluentbit_pkg_version "" Установить конкретную версию пакета.
fluentbit_pkg_version_hold "{{ fluentbit_pkg_version | default(False) | ternary(True, False) }}" Заблокировать версию пакета, чтобы предотвратить случайные обновления. По умолчанию True, если определено fluentbit_pkg_version, иначе False.
fluentbit_svc_name fluent-bit Имя сервиса Fluentbit для запуска/остановки демона.
fluentbit_apt_cleanup_legacy false Удалить старые ключи и источники APT, если true.
fluentbit_apt_key_legacy_id F209D8762A60CD49E680633B4FF8368B6EA0722A ID старого GPG ключа для удаления из ключницы.
fluentbit_naming_cleanup_legacy false Удалить старые сервисы / конфигурации / apt с именем td-agent.
fluentbit_pkg_name_legacy td-agent-bit Имя пакета, который будет удален старым очистителем.
fluentbit_svc_name_legacy td-agent-bit Имя сервиса, которое будет удалено старым очистителем.
fluentbit_conf_directory_legacy /etc/td-agent-bit/ Директория конфигурации, которая будет удалена старым очистителем.

Переменные, используемые для общей конфигурации:

Переменные Значение по умолчанию Описание
fluentbit_svc_flush 5 Время сброса в формате seconds.nanoseconds.
fluentbit_svc_grace 5 Установить время ожидания в секундах.
fluentbit_svc_daemon "off" Включить/выключить значение, чтобы указать, работает ли Fluentbit как демон. Должно быть выключено, когда используется предоставленный юнит Systemd.
fluentbit_svc_logfile "" Абсолютный путь к необязательному лог-файлу. Лог будет записываться в stdout, если не указано.
fluentbit_svc_loglevel info Установить уровень подробности логирования.
fluentbit_svc_parsers_file ["parsers.conf"] Список путей к конфигурационным файлам parsers.
fluentbit_svc_plugins_file ["plugins.conf"] Список путей к конфигурационным файлам plugins.
fluentbit_svc_streams_file [] Список путей к файлам конфигурации stream processors.
fluentbit_managed_parsers_enable "{{ ((_fluentbit_parsers | length) or (_fluentbit_mlparsers | length)) | bool }}" Определить, должен ли Ansible создавать/обновлять пользовательский файл для определенного парсера.
fluentbit_managed_parsers_file "{{ fluentbit_conf_directory }}/managed-parsers.conf" Файл, в котором определены пользовательские парсеры, если это необходимо.
fluentbit_svc_http {} Словарь для конфигурации встроенного HTTP сервера.
fluentbit_svc_storage {} Словарь для конфигурации хранения/буфера.
fluentbit_svc_limit_open_files Неопределено Настроить LimitNOFILE для сервиса systemd, если определено

Для fluentbit_svc_http каждый ключ используется как имя опции конфигурации, а значения - как значения. Но вам не нужно добавлять префикс HTTP_, он будет добавлен шаблоном. Например, вы можете определить это так:

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

То же самое и для fluentbit_svc_storage: вам не нужно указывать префикс storage.. Пример:

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

Другие переменные:

Переменные Значение по умолчанию Описание
fluentbit_dbs_path "" Путь к директории, которая будет создана ролью. Например, для хранения ваших файлов БД ввода.

Переменные для обработки логов:

Переменные Значение по умолчанию Описание
_fluentbit_inputs "{{ lookup('template', 'get_vars.j2'), template_vars=dict(var_type='input') }}" Список словарей, определяющих все входы логов.
_fluentbit_filters "{{ lookup('template', 'get_vars.j2'), template_vars=dict(var_type='filter') }}" Список словарей, определяющих все фильтры логов.
_fluentbit_outputs "{{ lookup('template', 'get_vars.j2'), template_vars=dict(var_type='output') }}" Список словарей, определяющих все выходы логов.
_fluentbit_parsers "{{ lookup('template', 'get_vars.j2'), template_vars=dict(var_type='parser') }}" Список словарей, определяющих все управляемые парсеры логов.
_fluentbit_mlparsers "{{ lookup('template', 'get_vars.j2'), template_vars=dict(var_type='mlparser') }}" Список словарей, определяющих все управляемые парсеры многострочных логов.

В большинстве случаев вы не должны изменять эти переменные. Шаблонизация используется для создания этих списков с другими переменными.

  • _fluentbit_inputs будет агрегировать все переменные, имена которых соответствуют этому регулярному выражению: ^fluentbit_.+_input(s)?$'.
  • _fluentbit_filters будет агрегировать все переменные, имена которых соответствуют этому регулярному выражению: ^fluentbit_.+_filter(s)?$'.
  • _fluentbit_outputs будет агрегировать все переменные, имена которых соответствуют этому регулярному выражению: ^fluentbit_.+_output(s)?$'.
  • _fluentbit_parsers будет агрегировать все переменные, имена которых соответствуют этому регулярному выражению: ^fluentbit_.+_parser(s)?$'.
  • _fluentbit_outputs будет агрегировать все переменные, имена которых соответствуют этому регулярному выражению: ^fluentbit_.+_mlparser(s)?$'.

Каждая переменная, соответствующая этим регулярным выражениям, должна быть:

  • словарем, определяющим один вход/фильтр/выход/парсер или
  • списком словарей, определяющим один или несколько входов/фильтров/выходов/парсеров.

Каждый словарь используется для определения одного секции [INPUT], [FILTER], [OUTPUT], [PARSER] или [MULTILINE_PARSER] в конфигурационном файле Fluentbit или в файле управляемого парсера. Каждая секция конфигурации настроена с помощью пар ключ/значение, поэтому ключи словаря используются как ключи конфигурации, а значения как значения.

Например:

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

будет создавать:

[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

Это позволяет вам определять переменные в нескольких group_vars и суммировать их для хостов в различных группах без необходимости переписывать полный список.

Словари Ansible не могут иметь одинаковые ключи несколько раз. Это может быть проблемой при использовании таких вещей, как record. Чтобы избежать этой проблемы, каждый ключ может быть префиксирован номером, который будет удален в шаблонном файле. Он должен соответствовать этому регулярному выражению: '^[0-9]+__'.

Например:

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

будет создавать:

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

Зависимости

Отсутствуют

Пример плейбука

в 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 }}"

в group_vars/web.yml:

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

в playbook.yml:

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

Лицензия

BSD

Информация об авторе

BIMData.io

О проекте

This role installs and configures Fluentbit.

Установить
ansible-galaxy install bimdata/ansible_role_fluentbit
Лицензия
mit
Загрузки
2028
Владелец