Назад | Перейти на главную страницу

Множественные индексы и маршрутизация 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 "будут отправлены на новый индекс unix-2014.02.04 вместо logstash. Таким образом, я могу использовать прокси-сервер Kibana auth, чтобы предоставить моим пользователям UNIX доступ только к их журналам. Я немного читал о создании сопоставлений, но не знал, как все это связать. Я видел, что с вызовами API можно делать разные вещи, но мне было любопытно, можно ли с самого начала настроить все это в файле elasticsearch.yml.

Спасибо,

Эрик

Я выяснил, что это можно сделать в конфигурации 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, а просто и.