bimdata.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
Информация об авторе
ansible-galaxy install bimdata.fluentbit