Какой хороший способ сбора журналов с экземпляров Amazon EC2? - PullRequest
36 голосов
/ 19 ноября 2009

Мое приложение размещено в кластере Amazon EC2. Каждый экземпляр записывает события в файлы журнала. Мне нужно собирать (и данные мои) по этим журналам в конце каждого дня. Какой рекомендуемый способ собрать эти журналы в центральном месте? Я подумал о нескольких вариантах, не уверен, какой путь:

  1. scp их к экземпляру, используя задание cron
  2. Записывать все события по TCP / IP в экземпляр

Ответы [ 8 ]

23 голосов
/ 24 февраля 2013

Мы используем Logstash на каждом хосте (развернутом через Puppet) для сбора и отправки событий журнала в очередь сообщений (RabbitMQ, но может быть Redis) на центральном хосте. Другой экземпляр Logstash извлекает события, обрабатывает их и помещает результат в ElasticSearch . Веб-интерфейс Kibana используется для поиска в этой базе данных.

Это очень способный, легко масштабируется и очень гибкий. Logstash имеет тонны фильтров для обработки событий от различных входов и может выводить на множество сервисов, одним из которых является ElasticSearch. В настоящее время мы отправляем около 1,2 миллиона событий журнала в день из наших экземпляров EC2 на легком оборудовании. В наших настройках задержка для события журнала от события до поиска составляет около 1 секунды.

Вот некоторая документация по этому виду настройки: https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html, и демонстрация интерфейса поиска Kibana с некоторыми живыми данными.

10 голосов
/ 08 декабря 2014

Этот вопрос уже устарел (декабрь 2014 года), но все еще имеет высокий рейтинг во время поиска Google по этой теме.

Amazon теперь предоставляет способ сделать это через CloudWatch. Он имеет возможность сопоставить шаблон сообщения журнала и вызвать аварийные сигналы в зависимости от того, что происходит в приложении. В зависимости от характера анализа данных, который необходимо выполнить, может быть возможно использовать их API для извлечения желаемых агрегированных событий. Смотри http://aws.amazon.com/blogs/aws/cloudwatch-log-service/

7 голосов
/ 11 декабря 2012

Я пользуюсь Loggly, и, похоже, это помогает

http://loggly.com/

Это позволяет мне отправлять все свои журналы через tcp в их службу и иметь центральное место для контроля всех моих файлов журналов,

Это также позволяет мне архивировать мои файлы журналов на S3, что тоже хорошо

6 голосов
/ 22 ноября 2010

Я не пробовал это для этой цели, но Amazon, похоже, рекомендует использовать SimpleDB:

http://aws.amazon.com/simpledb/usecases_logging/

Вот пакет, который вам может пригодиться - он говорит, что вы можете использовать его для записи stdout / stderr в SimpleDB:

http://code.google.com/p/simpledb-appender/

3 голосов
/ 20 ноября 2009

Используйте syslog-ng, популярный инструмент, который передает сообщения журнала по TCP, с возможностью шифрования.

http://www.balabit.com/network-security/syslog-ng/

3 голосов
/ 20 ноября 2009

Взгляните на бесплатную версию Splunk - она ​​будет обрабатывать удаленный сбор файлов журнала, а также даст вам действительно хорошие инструменты поиска и анализа.

1 голос
/ 19 ноября 2009

Я еще не реализовал это, но наткнулся на Facebook Scribe, и это кажется хорошей идеей. https://github.com/facebookarchive/scribe

Пока я не начал, я делал то, что вы упомянули для # 1 - у меня есть работа cron, которая использует sftp для извлечения файлов. Я выбрал это, потому что даже если бы я выполнил # 2, у меня были случаи, когда машина ec2 зависала, и мне все равно приходилось вытаскивать файлы журналов.

0 голосов
/ 21 июня 2016

* Отказ от ответственности: я работаю в сумо:

Sumo Logic Free также является относительно простым вариантом:

https://www.sumologic.com/pricing/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...