Pergunta

No trabalho, estamos construindo uma aplicação distribuída (possivelmente através de várias máquinas em uma LAN, possivelmente, mais tarde, em vários continentes em uma WAN + VPN). Nós não queremos arquivos de log local para cada máquina (encher seu disco e impossível ver no total) por isso precisamos de registro centralize através da rede. A maioria dos registros não será importante, por isso UDP é bom para eles, mas alguns são perdendo dinheiro, alertas importantes e devem ser entregues confiavelmente, implicando TCP. Estamos preocupados com congestionar a rede se o protocolo de registro é muito falador, ou arrastando os aplicativos para um rastreamento se ele não responde.

Algumas possibilidades que eu considerados são:

  • syslog (parece perfeito, mas o meu patrão tem um animus contra este para que eu possa não ser capaz de fazê-lo).
  • escriba a partir facebook (mas parece um peso pesado pouco com um servidor em cada máquina - não cada mensagem de log precisa de ultra-confiabilidade).
  • usando uma fila de mensagens como RabbitMQ que pode ter várias filas sintonizados com diferentes níveis de segurança transação.
  • pior caso, eu posso escrever o meu próprio a partir do zero.

Você tem outras sugestões? soluções que centralizadas madeireiras tê-lo usado, e como eles funcionam?

Editar: Eu estava inclinado para escrivão, porque seu design store-and-forward dissocia o aplicativo em execução de latência de rede. Mas depois de lutar para instalá-lo, descobri que (1) ele não está disponível como um pacote binário - hoje em dia que o imperdoável - e (2) que depende intimamente em uma biblioteca (poupança), que não está disponível como um pacote binário quer! E o pior de tudo, ele não teria sequer compilar corretamente. Isso não é liberar código de qualidade, mesmo em código aberto.

Foi útil?

Solução

Nós temos utilizado com sucesso ZeroMQ para os logs de um cenário de aplicativo distribuído como os seus. É muito confiável e incrivelmente rápido. Nós nos mudamos para ZeroMQ após uma implementação não tão bem sucedido com Espalhe . Em nossa configuração de um único servidor ZeroMQ é capaz de lidar com mais de 70 registos diferentes a partir de um médio a alto aplicação distribuída ocupado. Ele recebe dados de LAN e através da Internet.

Se você precisar de uma comparação detalhada servidor de filas, olhada nesta página do Second Life wiki .

Espero que ajude!

Outras dicas

Não são várias alternativas recentemente. Notavelmente, Scribe não é mantida mais. Facebook desenvolveu o seu sucessor chamado Caligraphus, e não é open-source. Aqui está uma lista de alternativas.

  • syslog: instalado em todas as distribuições Linux
  • Fluentd : C + Rubi-base logger leve, que lida com registros como fluxo JSON
  • Flume : desenvolvido no Cloudera, escrito em Java e funciona bem com ecossistemas Hadoop
  • Apache Kafka : desenvolvido no LinkedIn, arquitetura baseada em puxar
  • Scribe: open-source pelo Facebook, mas não mais mantido

Disclaimer: Eu sou um committer do projeto Fluentd

.

Syslog é bom se você pretende se concentrar apenas em registros de infra-estrutura (por exemplo, no nível do sistema). Ouvi dizer que KIWI Servidor Syslog é boa, embora não tentar por mim mesmo. Por outro lado, se você quiser registrar uma coisas relacionadas aplicativo, um syslog talvez não seja a melhor opção para isso. No caso de você usar o Apache serviços de perfilagem (log4j, log4xxx eo resto), então logFaces seria uma boa solução como ele é construído especialmente para agregar múltiplas aplicações em um único lugar. Funciona com duas conexões TCP ou UDP e tem visualizador de log decente e integração de banco de dados.

Divulgação :. Eu sou o autor deste produto

Os outros exemplos pode ser grande, mas eu tive sorte com Syslog-NG . É extremamente flexível e configurável; embora seja muito fácil de pegá-lo e fazer algo útil com rapidez.

Você também pode considerar o uso de alertas SNMP.

Avaliado todas as alternativas recomendadas neste segmento. Olhou para python algo alimentado. Pesquisei mais e descobri sentinela https://getsentry.com/welcome/ de código aberto, bem documentado. Deve ser confiável para uso comercial que haja um negócio baseado em cima disso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top