Лучший способ отправки журналов из ECS Fargate в Elasticsearch

У нас есть установка с несколькими контейнерами, на которых запущены сервисы NodeJS (узел: образ докера 11-alpine), развернутые в AWS ECS Fargate.

У нас уже есть работающий экземпляр ElasticSearch, собирающий журналы из стороннего приложения. Я хотел бы передать журналы из контейнеров Fargate в этот экземпляр ElasticSearch, но мне трудно понять, что лучше всего.

1) Кажется, один из способов - передать журналы из Cloudwatch -> Lambda -> ElasticSearch. Это кажется излишним - разве нет другого способа сделать это?

2) Я надеялся, что смогу запустить экземпляр докера Logstash, который может собирать журналы из контейнеров, но я не уверен, возможно ли это при запуске Fargate?

3) Должен ли я установить что-то вроде FileBeat на каждый контейнер и позволить ему отправлять журналы?

Любая помощь приветствуется.


person KasperF    schedule 03.09.2019    source источник
comment
Как насчет использования FunctionBeat, подходящего для именно эта цель?   -  person Val    schedule 03.09.2019


Ответы (1)


1) Кажется, один из способов - передать журналы из Cloudwatch -> Lambda -> ElasticSearch. Это кажется излишним - разве нет другого способа сделать это?

Если вы ищете управляемое решение на базе AWS, это правильный путь. Вам действительно не нужно писать функцию Lambda, AWS сделает это за вас, и это не кажется излишним, поскольку это более управляемый и более ориентированный на AWS подход. Кроме того, то, что будет делать это решение, будет таким же, как Logstash.

2) Я надеялся, что смогу запустить экземпляр докера Logstash, который может собирать журналы из контейнеров, но я не уверен, возможно ли это при запуске Fargate?

Да, это возможно.

3) Должен ли я установить что-то вроде FileBeat на каждый контейнер и позволить ему отправлять журналы?

Вы можете использовать FileBeat, Fluentd, FunctionBeat или Logstash по своему усмотрению.

Примечание. Если вы думаете о запуске собственного контейнера Logstash, не включайте ведение журнала CloudWatch, так как вы тоже не собираетесь его использовать. Но для этого я бы порекомендовал использовать решение на базе AWS.

person abdullahkhawer    schedule 03.09.2019
comment
Большое спасибо за Вашу помощь. Не могли бы вы подробнее рассказать о 2). Возможно ли это также для установки Fargate (а не EC2)? - person KasperF; 03.09.2019
comment
@KasperF, да, но вы должны запустить свой контейнер Logstash в своей задаче AWS Fargate. У вас не может быть отдельной задачи для Logstash для всех ваших контейнеров Fargate. При определении задачи Fargate добавьте контейнер Logstash с желаемыми конфигурациями (в этом вам может помочь AWS ECR Image). - person abdullahkhawer; 03.09.2019
comment
@KasperF, когда вы одобряете ответ, всегда старайтесь проголосовать за него. Спасибо. :) - person abdullahkhawer; 04.09.2019
comment
Взгляните на принятый ответ stackoverflow.com/questions/61158970/. Это относительно очень недорогое решение. - person PythonEnthusiast; 13.04.2020
comment
@PythonEnthusiast Спасибо. Кстати, я уже упоминал об этом в ответе на 3-й вопрос. - person abdullahkhawer; 13.04.2020