fluentd

Ansible роль Fluentd

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

Требования

  • Эта роль протестирована только на Debian 12.x (Bookworm).

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

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

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

Переменные Значение по умолчанию Описание
fluentd_prerequisites ['apt-transport-https', 'curl', 'gnupg'] Список пакетов, которые нужно установить перед Fluentd.
fluentd_major_version 5 Основная версия Fluentd, которую вы хотите установить.
fluentd_apt_key_url https://packages.treasuredata.com/GPG-KEY-td-agent APT-ключ для пакета 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 }}" Услуги репозиториев APT.
fluentd_apt_repos_components ['contrib'] Компоненты репозитория APT.
fluentd_pkg_name fluent-package Имя пакета APT для Fluentd.
fluentd_pkg_version: "" Установить конкретную версию пакета.
fluentd_pkg_version_hold "{{ fluentd_pkg_version | default(False) | ternary(True, False) }}" Зафиксировать версию пакета, чтобы предотвратить случайное обновление. По умолчанию True, если fluentd_pkg_version задан, в противном случае False.
fluentd_svc_name fluentd Имя службы Fluentd, чтобы запустить/остановить демон.

Переменные для удаления устаревших компонентов (например, если установлено до переименования td-agent -> fluentd)

Переменные Значение по умолчанию Описание
fluentd_apt_cleanup_legacy false Удалить старые ключи и старые источники APT, если истинно.
fluentd_apt_key_legacy_id BEE682289B2217F45AF4CC3F901F9177AB97ACBE ID старого GPG-ключа, который нужно удалить из хранилища.
fluentd_naming_cleanup_legacy false Удалить старые службы / конфигурации / apt с именем td-agent.
fluentd_pkg_name_legacy td-agent Имя пакета, которое будет удалено устаревшим очистителем.
fluentd_svc_name_legacy td-agent Имя службы, которое будет удалено устаревшим очистителем.
fluentd_conf_directory_legacy /etc/td-agent/ Директория конфигурации, которая будет удалена устаревшим очистителем.

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

Переменные Значение по умолчанию Описание
fluentd_plugins [] Список плагинов для установки.
fluentd_gem_exec_path /usr/sbin/fluent-gem Путь к бинарному файлу gem для установки плагинов fluentd.
fluentd_system {} Конфигурация системы fluentd.
fluentd_conf_directory "/etc/fluent" Директория конфигурации для Fluentd.
fluentd_conf_file_path "{{ fluentd_conf_directory }}/fluentd.conf" Путь к файлу конфигурации Fluentd.
fluentd_include_directory Не определено Может использоваться для включения других конфигурационных файлов. Оно добавит @include {{ fluentd_include_directory }}*.conf в конфигурацию.

Для fluentd_system каждый ключ используется как имя опции конфигурации, а значения — как значения. Вы можете увидеть все доступные опции в документации Fluentd

fluentd_plugins - это список плагинов, которые будут установлены с помощью fluentd_gem_exec_path. Вы можете указать необходимую версию для каждого плагина:

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

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

Переменные Значение по умолчанию Описание
_fluentd_sources: "{{ lookup('template', './lookup/get_sources.j2') }}" Список словарей, определяющих все конфигурации источников.
_fluentd_filters: "{{ lookup('template', './lookup/get_filters.j2') }}" Список словарей, определяющих все конфигурации фильтров.
_fluentd_labels: "{{ lookup('template', './lookup/get_labels.j2') }}" Список словарей, определяющих все конфигурации меток.
_fluentd_matches: "{{ lookup('template', './lookup/get_matches.j2') }}" Список словарей, определяющих все конфигурации совпадений.

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

  • _fluentd_sources будет агрегировать все переменные, имена которых соответствуют этому регулярному выражению: ^fluentd_.+_source(s)?$.
  • _fluentd_filters будет агрегировать все переменные, имена которых соответствуют этому регулярному выражению: ^fluentd_.+_filter(s)?$.
  • _fluentd_labels будет агрегировать все переменные, имена которых соответствуют этому регулярному выражению: ^fluentd_.+_label(s)$.
  • _fluentd_matches будет агрегировать все переменные, имена которых соответствуют этому регулярному выражению: ^fluentd_.+_match(es)?$.

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

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

Каждый словарь используется для определения одного <source>, <filter>, <label> или <match> раздела в файле конфигурации Fluentd. Каждый раздел конфигурации настраивается с помощью пар ключ/значение, поэтому ключи словаря используются как ключи конфигурации, а значения — как значения.

Некоторые ключи имеют специальные поведения:

  • type будет заменен на @type.
  • id будет заменен на @id.
  • label будет заменен на @label.
  • log_level будет заменен на @log_level.
  • _section_args — специальный ключ, используемый для определения таких вещей, как теги, которые будут соответствовать конфигурации.
  • Для конфигурации меток (переменные, соответствующие ^fluentd_.+_label(s)$), ключ name используется для определения имени метки, как <label @my_name>.
  • Словари не могут иметь дублирующихся ключей, поэтому каждый ключ, который нужно повторить, может быть предварен предшествующим номером, который соответствует этому регулярному выражению ^[0-9]+__. Префикс будет удален, когда конфигурация будет сгенерирована.

Например:

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

будет создано:

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

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

Зависимости

Нет

Лицензия

BSD

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

BIMData.io

О проекте

This role installs and configures Fluentd.

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