web-dev-qa-db-pt.com

O que é uma boa maneira de coletar logs de instâncias do Amazon EC2?

Meu aplicativo está hospedado em um cluster do Amazon EC2. Cada instância grava eventos em arquivos de log. Eu preciso coletar (e dados meus) sobre esses logs no final de cada dia. O que é uma maneira recomendada de coletar esses logs em um local central? Eu pensei em várias opções, não sei qual caminho seguir:

  1. scp-los para uma instância usando um cron job
  2. Registre todos os eventos sobre TCP/IP em uma instância
36
Bilal Aslam

Usamos Logstash em cada Host (implantado via Puppet) para reunir e enviar eventos de log para uma fila de mensagens (RabbitMQ, mas poderia ser Redis) em um host central. Outra instância do Logstash recupera os eventos, os processa e coloca o resultado em ElasticSearch . A Kibana interface web é usada para pesquisar através deste banco de dados.

É muito capaz, dimensiona-se facilmente e é muito flexível. O Logstash tem toneladas de filtros para processar eventos de várias entradas e pode gerar muitos serviços, sendo o ElasticSearch um deles. Atualmente, enviamos cerca de 1,2 milhão de eventos de log por dia de nossas instâncias do EC2, em hardware leve. A latência de um evento de registro de evento para pesquisável é de aproximadamente 1 segundo em nossa configuração.

Veja algumas documentações sobre esse tipo de configuração: https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html e uma demonstração da interface de pesquisa do Kibana com alguns dados ao vivo.

22
Martijn Heemels

Esta questão já é antiga (dezembro de 2014), mas ainda está bem classificada durante uma pesquisa no Google sobre esse tópico.

A Amazon agora oferece uma maneira de fazer isso através do CloudWatch. Ele tem a capacidade de padronizar a correspondência da mensagem de log e disparar alarmes com base nas coisas que acontecem no aplicativo. Dependendo da natureza da mineração de dados que precisa ser feita, pode ser possível usar sua API para buscar os eventos agregados desejados. Veja http://aws.Amazon.com/blogs/aws/cloudwatch-log-service/

10
smitelli

Eu tenho usado o Loggly e parece fazer o truque

http://loggly.com/

Isso me permite enviar todos os meus logs através do tcp para o serviço deles e ter um local central para monitorar todos os meus arquivos de log,

Ele também permite que eu arquive meus arquivos de log no S3, o que também é interessante.

7
cloudgroup

Eu não tentei para este propósito, mas a Amazon parece recomendar o uso do SimpleDB:

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

Aqui está um pacote que você pode achar útil - ele diz que você pode usá-lo para capturar stdout/stderr no SimpleDB:

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

6
MB.

Dê uma olhada na versão gratuita do Splunk - ele irá lidar com a coleção de arquivos de log remoto e também lhe dará algumas ferramentas de pesquisa e análise realmente agradáveis.

3
gareth_bowles

Use o syslog-ng, uma ferramenta popular que transfere mensagens de log sobre TCP, opcionalmente criptografada.

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

3
Shlomo Swidler

Ainda não o implementei, mas me deparei com o Facebook Scribe, e parece uma boa ideia. https://github.com/facebookarchive/scribe

Até que eu comecei a fazer o que você mencionou para # 1 - eu tenho um cron job que usa o sftp para puxar os arquivos. Eu escolhi isso porque mesmo se eu fizesse o # 2, tive casos em que a máquina ec2 travou e acabei tendo que remover os arquivos de log de qualquer maneira.

1
dar

* Disclaimer: Eu trabalho no Sumo:

Sumo Logic Free é uma opção relativamente fácil também:

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

0
gigawatts