Стек ELK (Elasticsearch, Logstash, Kibana) - является ли logstash необходимым компонентом? - PullRequest
0 голосов
/ 18 апреля 2019

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

Шаги:

  1. Структурировать необработанные данные для хранения
  2. Сессионизация данных для создания отчетов
  3. Разработка функций для моделирования

В шаге 2 я рассматриваю использование Quicksight и / или Kibana для создания панели отчетности.Но, как я понимаю, типичный стек - это обработка журналов с помощью logstash, затем отправка их в elasticsreach и, наконец, в Kibana / Quicksight.Поскольку мы уже обрабатываем начальную обработку журналов с помощью лямбды, можно ли пропустить этот шаг и передать его непосредственно вasticsearch?Если так, то где это происходит - в лямбда-функции или из красного смещения после того, как оно было сохранено в таблице?Или может FlexibleSearch просто прочитать его с того же s3, где я публикую данные для приема в таблицу красного смещения?

1 Ответ

2 голосов
/ 18 апреля 2019

Elasticsearch использует JSON для выполнения всех операций. Например, чтобы добавить документ в индекс, вы используете операцию PUT (скопированную из docs ):

PUT twitter/_doc/1
{
    "user" : "kimchy",
    "post_date" : "2009-11-15T14:12:12",
    "message" : "trying out Elasticsearch"
}

Logstash существует для сбора сообщений журнала, преобразования их в JSON и выполнения этих запросов PUT. Однако все, что производит правильно отформатированный JSON и может выполнять HTTP PUT, будет работать. Если вы уже вызываете Lambdas для преобразования своего контента S3, вы сможете адаптировать их для записи JSON в Elasticsearch. Я бы использовал отдельные Lambdas для Redshift и Elasticsearch, просто чтобы улучшить управляемость.

Совет по производительности: вы, вероятно, обрабатываете множество записей одновременно, и в этом случае массовый API будет более эффективным, чем отдельные PUT. Тем не менее, существует ограничение на размер запроса, поэтому вам придется пакетировать ввод.

Также: вы не говорите, используете ли вы кластер AWS Elasticsearch или самостоятельно управляемый. В первом случае вам также придется иметь дело с аутентифицированными запросами или использовать политику доступа на основе IP в кластере. Вы не говорите, на каком языке написаны ваши Lambdas, но если это Python, вы можете использовать библиотеку aws-запросы-auth для выполнения аутентифицированных запросов.

...