我在 ELK 论坛上搜索过,没有收到任何答案。我在此处链接了此任务“Logstash configuration to global mutate sub index patterns”,它得到了正确解决-logtsash配置有效,我能够将所有内容全局转换为字符串作为索引模式。
但是,当我将此配置设置为不是从本地保存的静态日志文件而是从节拍输入流中工作时,由 Stackoverflow 上的 badger 链接的配置(Ruby 过滤器)不起作用。你认为用那个红宝石过滤器可以做到吗?
在节拍输入流上应用该编辑后,“typeD”到“string”的全局转换根本不起作用,并导致冗余错误。
我的beats配置如下:
input {
beats {
port => 5044
type => "json"
}
}
filter {
ruby {
code => '
def stringify(object, name, event)
if object == nil
event.set(name, "nil" )
elsif object.kind_of?(Hash) and object != {}
object.each { |k, v| stringify(v, "#{name}[#{k}]", event) }
elsif object.kind_of?(Array) and object != []
object.each_index { |i|
stringify(object[i], "#{name}[#{i}]", event)
}
else
event.set(name, object.to_s)
end
end
stringify(event.get("typeD"), "[typeD]", event)
'
}
}
output {
elasticsearch {
cloud_id => "${cid}"
cloud_auth => "${cau}"
ilm_enabled => "false"
template_name => "${app}"
index => "${app}-logstash-${env}-%%{[@metadata][version]}-%%{+yyyy.MM.dd}"
}
}