首页 > 解决方案 > 如何在 logstash 过滤器中添加文件中的字段

问题描述

我有一个带有许多过滤器的 logstash 管道,它使用 netflow 模块摄取 netflow 数据。

我想在输出结果中添加一个字段。该字段的名称为:“站点”

站点将是文件中存在的数值。如何从文件中创建字段?

例如:

 mutate {
        id => "site"
        add_field => {
            "[flow][policy_violation]" => "false"
            "[flow][threat]" => "false"
            "[flow][site_id]" => //=======> read file /tmp/site.id and assign value 

        }
    }

文件:

/tmp/site.id

site.id 包含:

12345678

标签: elasticsearchlogstashlogstash-configuration

解决方案


您可以在 Logstash 配置中利用环境变量。首先,在运行 Docker/Logstash 之前导出变量:

export SITE_ID=$(</tmp/site.id)

然后使用环境变量运行 docker:

docker run ... --env SITE_ID

然后在您的 Logstash 配置中,您可以像这样引用变量:

mutate {
    id => "site"
    add_field => {
        "[flow][policy_violation]" => "false"
        "[flow][threat]" => "false"
        "[flow][site_id]" => "${SITE_ID}"

    }
}

推荐阅读