Можно ли сохранить имя индекса от FileBeat до LogSta sh для Elasticsearch? - PullRequest
0 голосов
/ 01 апреля 2020

Я действительно новичок в ELK и настроил стек ELK, где FileBeat отправляет журналы в LogSta sh для некоторой обработки, а затем выводит их в Elasticsearch.

Мне было интересно, возможно ли сохранить имя индекса, заданное в filebeat.yml, вплоть до Elasticsearch. Причина, по которой я этого хочу, заключается в том, что мне нужны несколько индексов для разных типов серверов приложений, для которых у меня создаются журналы. Если я опускаю индекс в logsta sh .conf, он по умолчанию; но если я укажу что-то, очевидно, что вступает в силу. Я просто хочу, чтобы он использовал то, что было установлено в FileBeat.

Или есть какой-то способ настроить несколько выходных секций, где типы журналов могут быть оценены, чтобы я мог назвать их соответствующим образом?

filebeat.yml

# Optional index name. The default index name is set to filebeat in all lowercase.
  index: "something-%{+yyyy.MM.dd}"

logsta sh .conf

output {
  elasticsearch { 
    hosts => ["somehost:12345"]
    index => "my_filebeat_index_name_would_be_preferred-%{+yyyy-MM-dd}"
  }
}

Я хотел бы продолжить использовать LogSta sh, потому что у меня есть пользовательские шаблоны GROK et c, а не go непосредственно к Elasti c. Любая помощь будет принята с благодарностью.

Спасибо.

1 Ответ

1 голос
/ 01 апреля 2020

Имя индекса, которое вы можете указать в файле filebeat.yml, применимо только к выходу эластичного поиска, поскольку filebeat напрямую подключается к вашему кластеру. Однако, если вы используете Logsta sh в качестве места назначения для файла, это невозможно.

В: Или есть какой-то способ настроить несколько выходных секций, где можно оценивать типы журналов, чтобы я мог назвать их соответственно?

Да, это абсолютно возможно в рамках конвейера Logsta sh (и довольно часто). Поэтому, прежде всего, вам нужно установить определенные критерии / отметки в ваших журналах, чтобы позволить Logsta sh выбрать правильный вывод эластичного поиска (и с этим правильный индекс). Вы можете достичь этого с помощью тегов. Так, например, все журналы / события категории A получают тег «tag_A» (вы можете установить их индивидуально для каждого источника журнала в определенных входах журнала или вообще в файле beat.yml).

Следующий шаг заключается в реализации оценки значений тегов в конвейере logsta sh. Вы можете сделать это следующим образом:

output{
  if "tag_A" in [tags]{
    elasticsearch {
      hosts => ["somehost:12345"]
      index => "index-A-%{+yyyy-MM-dd}"
    }
  }
  else if "tag_B" in [tags]{
    elasticsearch {
      hosts => ["somehost:12345"]
      index => "index-B-%{+yyyy-MM-dd}"
    }
  }
}

Эта структура if-else позволяет индексировать ваши данные по различным значениям.

Надеюсь, что смогу вам помочь.

РЕДАКТИРОВАТЬ:

Ваша оценка не ограничивается тегами. Вы можете оценить любые поля, содержащиеся в ваших документах, например, имя файла, имя хоста и т. Д. c.

Возможно, вы захотите взглянуть на эту ссылку (https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html) о том, как получить доступ к значениям поля, выполнить условия и т. Д. c. в конфигурациях Logsta sh.

РЕДАКТИРОВАТЬ 2:

Более сложным было бы добавить в ваши документы поле, содержащее точное имя индекса назначения (через поля параметры во входах журнала или в filebeat.yml) При таком подходе больше нет необходимости в оценке в конвейере Logsta sh, поскольку вы динамически устанавливаете значение для параметра индекса из значения поля.

Если вы пометите это поле как destination_index, тогда вы сможете реализовать выходной плагин, как показано ниже:

output{
  if [destination_index]{   #optional check for field's existance in document
    elasticsearch {
      hosts => ["somehost:12345"]
      index => "%{[destination_index]}-%{+yyyy-MM-dd}"
    }
  }
}
...