elasticsearch - 如何在 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
解决方案
您可以在 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}"
}
}
推荐阅读
- typescript - 创建一个从方法中提取返回值的泛型类型
- java - 如何使用列表视图调用对话框片段并从片段中搜索过滤器并将父片段中的选定项目值保存为字符串?
- excel - 如何从 Uipath 中的多个 excel 工作簿中读取数据
- python - 如何修复“+:'dict'和'int'不支持的操作数类型”
- react-native - 使用 redux-thunk 对 React-Native Redux 应用程序进行异步操作后重定向到屏幕
- ios - 首次加载时显示 collectionView 的底部,无需滚动和延迟加载
- ionic-framework - 如何在 Ionic 应用程序中打开外部 URL
- javascript - 如何从响应中删除额外的数组括号。Javascript
- instagram - 与 Instagram 操作按钮合作
- python - 无法在 Python 3.8 虚拟环境中安装 Pillow