让我们说我有这样的堆栈:logstash-forwarder - > logstash - > elasticsearch - > kibana
我想知道是否可以使用logstash-forwarder监控整个目录,并根据过滤器将日志发送到不同的 elasticsearch集群。使用案例:
我有一些程序可以将日志打印到同一目录。这些日志可能包含两种类型的消息 - " private"或调试。同样,这些消息可以在相同日志文件中使用。 我知道可以为某些文件提供不同的类型,并使用if到不同的输出对它们进行过滤。我不知道的是,当某个日志可以包含多种类型的logmessage时,你可以做些什么。
有没有办法拆分它们?我想限制对某些用户使用私有信息访问logmessages,我想到了两个不同的elasticsearch集群,每个集群都有自己的Kibana和LDAP。
BR
答案 0 :(得分:3)
让您的过滤器根据邮件内容添加新字段,并使用该字段来确定此邮件应转到哪个输出。
活动流程:
logstash-forwarder --> broker ---> logstash-indexer | --> elasticsearch public
| --> elasticsearch private
伪配置:
input {
# broker input
}
filter {
# structure message
grok {}
filter {
if [action] == "login" {
add_field => { "privacy" => 'private' }
} else {
add_field => { "privacy" => 'public' }
}
}
}
output {
if [privacy] == "private" {
elasticsearch {
# private elasticsearch instance
}
}
if [privacy] == "public" {
elasticsearch {
# public elasticsearch instance
}
}
}