ElasticSearch несколько индексов и маршрутизация

В настоящее время у меня есть следующие настройки.

Системный журнал -> Logstash -> ElasticSearch -> Kibana

Logstash создает ежедневный индекс "/etc/elasticsearch/data/test-elasticsearch/nodes/0/indices/logstash-2014.02.04", и я просматриваю все журналы через Kibana. Мы хотим настроить пользовательский контроль доступа с помощью настройки kibana-authentication-proxy, поскольку он поддерживает индекс kibana для каждого пользователя. теперь вы можете использовать индекс kibana-int-userA для пользователя A и kibana-int-userB для пользователя B Я хотел бы сделать так, чтобы все журналы, поступающие из logstash, располагались в "/var/log/UNIX/*.log" get sent to a new index of unix-2014.02.04 instead of the logstash one. That way I can use the Kibana auth proxy to give my UNIX users access only to their logs. I've read a little about creating the mappings but wasn't sure how to tie it all together. I saw you could do various things with API calls but was curious if I could set all of this up in the elasticsearch.yml file from the start.

Спасибо,

Эрик

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 и общий индекс, поскольку это не if, а просто.

Другие вопросы по тегам