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" 用于存储 Fluentbit 密钥的 APT 密钥环路径。
fluentbit_apt_key_url https://packages.fluentbit.io/fluentbit.key Fluentbit 包的 APT 密钥。
fluentbit_apt_repos_url "https://packages.fluentbit.io/{{ ansible_distribution | lower }}/{{ ansible_distribution_release | lower }}" 安装 Fluentbit 所需的 APT 存储库地址。
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) }}" 锁定包版本以防止意外更新。如果定义了 fluentbit_pkg_version,默认值为 True,否则为 False
fluentbit_svc_name fluent-bit 启动/停止守护进程的 Fluentbit 服务名称。
fluentbit_apt_cleanup_legacy false 如果为真,则删除旧密钥和旧的 APT 源。
fluentbit_apt_key_legacy_id F209D8762A60CD49E680633B4FF8368B6EA0722A 要从密钥环中删除的旧 GPG 密钥 ID。
fluentbit_naming_cleanup_legacy false 删除旧的服务/配置/以 td-agent 名称的 APT。
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 刷新时间,单位为 秒.纳秒 格式。
fluentbit_svc_grace 5 设置的宽限时间,单位为
fluentbit_svc_daemon "off" 指定 Fluentbit 是否作为守护进程运行的开关值。当使用提供的 Systemd 单元时应为 Off。
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 Undefined 如果定义则配置 systemd 服务的 LimitNOFILE。

对于 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 "" 角色将创建的目录的路径。例如,用于存储输入 DB 文件。

用于日志处理的变量:

变量 默认值 描述
_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)?$' 的变量。

每个与这些正则表达式匹配的变量必须是:

  • 定义一个输入/过滤器/输出/解析器的字典
  • 定义一个或多个输入/过滤器/输出/解析器的字典列表。

每个字典用于定义 Fluentbit 配置文件或管理解析器文件中的一个 [INPUT][FILTER][OUTPUT][PARSER][MULTILINE_PARSER] 部分。每个配置部分通过键/值对配置,因此字典的键被用作配置键,值作为值。

例如:

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.fluentbit
许可证
mit
下载
2.7k
拥有者