You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Fluent Bit中基于日志字段生成OpenSearch动态索引?

解决方案

问题原因

Fluent Bit的Logstash_Prefix参数不支持直接引用日志中的字段变量,会将$community当作字符串字面量处理,导致索引名不符合预期。

可行方案:使用Lua过滤器动态生成索引名

通过Lua过滤器从日志字段中提取community值,结合日期拼接成目标索引名,再在OpenSearch输出中引用该自定义字段。

步骤1:添加Lua过滤器配置

在你的fluent-bit.conf中,在[INPUT]之后、[OUTPUT]之前添加以下过滤器配置:

[FILTER]
    Name lua
    Match haproxy
    call set_target_index
    script /fluent-bit/etc/index_generator.lua

步骤2:编写Lua脚本文件

创建/fluent-bit/etc/index_generator.lua文件,内容如下:

function set_target_index(tag, timestamp, record)
    -- 从日志记录中获取community字段,不存在则用default兜底
    local community = record["community"] or "default"
    -- 利用日志时间戳生成YYYYMM格式的日期
    local date_str = os.date("%Y%m", timestamp)
    -- 拼接目标索引名并写入新字段
    record["target_index"] = "my-index-" .. community .. "-" .. date_str
    -- 返回修改后的记录(2代表保留tag和timestamp,仅修改record)
    return 2, timestamp, record
end

步骤3:修改OpenSearch输出配置

注释掉原有的Logstash格式相关配置,改用动态索引引用:

[OUTPUT]
    Name    opensearch
    Match   haproxy

    Host ...
    Port ...
    Path ...

    HTTP_User ...
    HTTP_Passwd ...

    # 注释掉原Logstash相关配置
    # Logstash_Format On
    # Logstash_Prefix my-index-$community
    # Logstash_Prefix_Separator -
    # Logstash_DateFormat %Y%m

    # 引用Lua生成的目标索引名字段
    Index ${record:target_index}

    tls on
    tls.ca_file ...

    Retry_Limit False
    Suppress_Type_Name On
    Workers 4

替代方案:使用record_modifier+inline Lua(简化版)

如果不想单独写Lua脚本,也可以结合record_modifier过滤器添加字段,再用inline Lua处理日期(需Fluent Bit 1.9+支持):

[FILTER]
    Name record_modifier
    Match haproxy
    # 拼接community部分
    Record index_prefix my-index-${record:community}
    # 用inline Lua生成YYYYMM日期,优先用日志时间戳,无则用系统时间
    Lua_Record index_date os.date("%Y%m", record["timestamp"] or os.time())
    # 拼接最终索引名
    Record target_index ${record:index_prefix}-${record:index_date}

[OUTPUT]
    # ... 其他配置 ...
    Index ${record:target_index}
    # ... 其他配置 ...

内容的提问来源于stack exchange,提问作者Daniel Portovedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 15:22:37