ElasticSearch 多索引和路由

ElasticSearch 多索引和路由

目前我有以下设置。

Syslog-->Logstash-->ElasticSearch-->Kibana

Logstash 正在创建每日索引“/etc/elasticsearch/data/test-elasticsearch/nodes/0/indices/logstash-2014.02.04”,我正在通过 Kibana 查看所有日志。我们希望使用 kibana-authentication-proxy 设置设置一些基于用户的访问控制,因为它支持每个用户的 kibana 索引。现在,您可以为用户 A 使用索引 kibana-int-userA,为用户 B 使用 kibana-int-userB。我希望将来自 logstash 且位置为“/var/log/UNIX/*.log”的所有日志发送到新的 unix-2014.02.04 索引,而不是 logstash 索引。这样,我就可以使用 Kibana 身份验证代理,让我的 UNIX 用户仅访问他们的日志。我读了一些关于创建映射的内容,但不确定如何将它们结合在一起。我看到您可以使用 API 调用来做各种事情,但很好奇我是否可以从一开始就在 elasticsearch.yml 文件中设置所有这些。

谢谢,

埃里克

答案1

我发现你可以在 logstash 配置中使用输入和输出过滤器来做到这一点。新的 if 方法如下所示,但我还没有让它工作。

input {
  file { 
    type => "unixlogs"
    path => "/var/log/UNIX/*.log"
  } 
}

output {
  if [type] == "unixlogs" {
    elasticsearch { 
      host => "localhost"
      index => "unix-%{+YYYY.MM.dd}"
    }
  }
}

下面是我已经采用的较旧的方法。

file {
    type => "syslog"
    exclude => ["*.gz"]
    start_position => "end"
    path => [ "/var/logs/Security/*.log"]
  }

file {
    type => "unix-syslog"
    exclude => ["*.gz"]
    start_position => "end"
    path => [ "/var/logs/UNIX/*.log"]
  }

output {
    elasticsearch {
    type => "unix-syslog"
    embedded => "false"
    host => "X.X.X"
    cluster => "my-elasticsearch"
    index => "unix-%{+YYYY.MM.dd}"
  }
    elasticsearch {
    embedded => "false"
    host => "X.X.X"
    cluster => "my-elasticsearch"
 }
}

使用上面的方法,它只会写入您指定的一个索引。使用下面的方法,UNIX 日志将写入 unix 索引和通用索引,因为这不是如果,而是并且。

相关内容