返回介绍

配置过滤器

发布于 2025-04-30 21:00:06 字数 5061 浏览 0 评论 0 收藏 0

Flume 提供了一种工具,用于以配置过滤器的形式将敏感或生成的数据注入配置。配置密钥可以设置为配置属性的值,它将由配置过滤器替换为它所代表的值。

配置过滤器的常见用法

格式类似于 Java 表达式语言,但它目前不是一个完全有效的 EL 表达式解析器,只是一种看起来像它的格式。

<agent_name>.configfilters = <filter_name>
<agent_name>.configfilters.<filter_name>.type = <filter_type>

<agent_name>.sources.<source_name>.parameter = ${<filter_name>['<key_for_sensitive_or_generated_data>']}
<agent_name>.sinks.<sink_name>.parameter = ${<filter_name>['<key_for_sensitive_or_generated_data>']}
<agent_name>.<component_type>.<component_name>.parameter = ${<filter_name>['<key_for_sensitive_or_generated_data>']}
#or
<agent_name>.<component_type>.<component_name>.parameter = ${<filter_name>["<key_for_sensitive_or_generated_data>"]}
#or
<agent_name>.<component_type>.<component_name>.parameter = ${<filter_name>[<key_for_sensitive_or_generated_data>]}
#or
<agent_name>.<component_type>.<component_name>.parameter = some_constant_data${<filter_name>[<key_for_sensitive_or_generated_data>]}

环境变量配置过滤器

属性名称默认说明
type-组件类型名称必须为 env

示例

要在配置中隐藏密码,请设置其值,如以下示例所示。

a1.sources = r1
a1.channels = c1
a1.configfilters = f1

a1.configfilters.f1.type = env

a1.sources.r1.channels =  c1
a1.sources.r1.type = http
a1.sources.r1.keystorePassword = ${f1['my_keystore_password']} #will get the value Secret123

在这里 a1.sources.r1.keystorePassword
配置属性将获得 my_keystore_password 的值
环境变量。设置环境变量的一种方法是运行如下所示的 flume 代理:

$ my_keystore_password=Secret123 bin/flume-ng agent --conf conf --conf-file example.conf ...

外部进程配置筛选器

属性名称默认说明
type-组件类型名称必须为 external
command-将执行以获取给定键值的命令。该命令将被调用为: <command> <key> 并且预期返回单行值,退出代码为 0
charsetUTF-8返回字符串的字符集。

示例

要在配置中隐藏密码,请设置其值,如以下示例所示。

a1.sources = r1
a1.channels = c1
a1.configfilters = f1

a1.configfilters.f1.type = external
a1.configfilters.f1.command = /usr/bin/passwordResolver.sh
a1.configfilters.f1.charset = UTF-8

a1.sources.r1.channels =  c1
a1.sources.r1.type = http
a1.sources.r1.keystorePassword = ${f1['my_keystore_password']} #will get the value Secret123

在此示例中,flume 将运行以下命令以获取值

$ /usr/bin/passwordResolver.sh my_keystore_password

passwordResolver.sh
将返回 Secret123
退出代码 0

示例 2

要生成滚动文件接收器的目录的一部分,请设置其值,如以下示例所示。

a1.sources = r1
a1.channels = c1
a1.configfilters = f1

a1.configfilters.f1.type = external
a1.configfilters.f1.command = /usr/bin/generateUniqId.sh
a1.configfilters.f1.charset = UTF-8

a1.sinks = k1
a1.sinks.k1.type = file_roll
a1.sinks.k1.channel = c1
a1.sinks.k1.sink.directory = /var/log/flume/agent_${f1['agent_name']} # will be /var/log/flume/agent_1234

在此示例中,flume 将运行以下命令以获取值

$ /usr/bin/generateUniqId.sh agent_name

generateUniqId.sh
将返回 1234
退出代码 0

Hadoop 凭据存储配置筛选器

此功能的类路径上需要一个 hadoop-common 库(2.6 版本)。如果安装了 hadoop,则代理会自动将其添加到类路径中

属性名称默认说明
type-组件类型名称必须为 hadoop
credential.provider.path-提供者路径。请参阅 hadoop 文档_here: https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/CredentialProviderAPI.html#Configuring_the_Provider_Path
credstore.java-keystore-provider.password-file-如果使用文件存储密码,则为密码文件的名称。该文件必须在类路径上。可以使用 HADOOP_CREDSTORE_PASSWORD 环境变量设置提供程序密码,也可以将其设置为空。

示例

要在配置中隐藏密码,请设置其值,如以下示例所示。

a1.sources = r1
a1.channels = c1
a1.configfilters = f1

a1.configfilters.f1.type = hadoop
a1.configfilters.f1.credential.provider.path = jceks://file/<path_to_jceks file>

a1.sources.r1.channels =  c1
a1.sources.r1.type = http
a1.sources.r1.keystorePassword = ${f1['my_keystore_password']} #will get the value from the credential store

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。