apache-kafka - logstash kafka 输入具有不同编解码器的多个主题
问题描述
这是我的logstash conf
input {
kafka {
bootstrap_servers => "127.0.0.1:9092"
topics => ["filebeat", "access"]
group_id => "test-consumer-group"
consumer_threads => 1
decorate_events => true
}
}
我有两个主题,但我想为不同的主题使用不同的编解码器。我怎样才能做到这一点?
我尝试添加
if ([topic] == "filebeat") {
codec => "json"
}
在 kafka 输入配置中,logstash 返回错误。
Failed to execute action {:action=>LogStash::PipelineAction::Create/pipeline_id:main, :exception=>"LogStash::ConfigurationError", :message=>"Expected one of #, => at line 6, column 8 (byte 143) after input {\n kafka {\n bootstrap_servers => \"127.0.0.1:9092\"\n topics => [\"filebeat\", \"access\"]\n group_id => \"test-consumer-group\"\n if "
解决方案
您可以使用不同的编解码器创建 2 个单独的 kafka 输入。
另一种选择是添加一个过滤器,根据主题解析 json 对象
filter {
if([topic] == "filebeat") {
json {
source => "message"
}
}
}
更多信息检查: https ://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html
推荐阅读
- php - 在 MakeCrud.php 第 103 行:调用成员函数 getRepositoryClass() on null
- c# - 关于在 ASP.NET Core 和 Docker 中持久化数据的初学者问题
- c# - 使用 Unity3D 写入 HoloLens 2 上的 Application.persistentDataPath,然后通过设备门户网站访问文件
- python - 如何使“Python / C API”中的函数可用?
- r - 替换 NA 值
- java - 测试在本地 Windows 机器上工作,但在 Linux 服务器上失败
- jsoup - 如何阻止 jsoup.clean 取消转义 € 和其他特殊字符
- python-3.x - 正则表达式使用 match 方法匹配 python3 中的模式
- c - 使用 Tcl C API 的 Lib 崩溃可能是由于错误的 refCount 使用
- prolog - Prolog:过滤目标列表并保留成功的目标