Monitorização de condutas de dados em grande escala

ShareThis is growing rapidly! Nos últimos 4 anos que trabalho aqui, temos crescido de uma empresa de um quarto para uma empresa de muitos quartos. Também começamos a ter todas as vantagens típicas de uma empresa de quartos: comida grátis, escritório chique, passeios de empresa, etc.

Coisas divertidas acontecem quando criamos valor, mas há um custo para a engenharia em termos de complexidade. Agora geramos terabytes de dados por dia em tempo real. Também esperamos ingerir ainda mais dados no próximo ano ou dois; duplicando ou triplicando o nosso fluxo de dados. É gratificante quando falo com colegas para dizer-lhes o que estamos fazendo e eles respondem com "uau".

O problema não é a ingestão - ferramentas como Kafka, Cassandra, Aerospike, BigQuery, etc, tornam a escalada um problema mais fácil do que era há 4 anos. A dificuldade vem quando alguém pergunta "como você sabe que os dados lá dentro estão certos?" ou "como você sabe que todos os dados estão lá?

"Simplesmente é." - Não é suficientemente bom.

Para nos ajudar a responder a perguntas como esta, dobrámos a monitorização gratuita através de todos os pipelines de dados. Felizmente, nosso código é construído sobre um framework comum para que quando adicionamos monitoramento a uma biblioteca, ele seja adicionado dinamicamente a todas as aplicações que usam essa biblioteca. Bastante legal.

Talvez um pequeno colapso da tecnologia ajude aqueles que estão tentando fazer isso no futuro:

Grafite: Graphite é uma "aplicação web baseada em Django que produz gráficos e dashboards". É construído sobre dois outros projetos, Carbon e Whisper (ambos projetos são parte do Graphite). Carbon atua como uma camada de agregação e cache que torna a interface de usuário responsiva. Whisper é uma "base de dados de tamanho fixo, semelhante em design e propósito ao RRD (round-robin-database de dados). Ele fornece armazenamento rápido e confiável de dados numéricos ao longo do tempo. Whisper permite que a maior resolução (segundos por ponto) de dados recentes se degrade em resoluções mais baixas para retenção a longo prazo de dados históricos".

Codahale: A biblioteca da Codahale tem conectores para uma variedade de serviços diferentes (como Ganglia). Para os nossos propósitos usamos os conectores Java Graphite e estamos prontos para ir. Os objetos de métrica podem ser criados dinamicamente e permitirão que você registre estatísticas básicas, histogramas e temporizadores. Configuramos a biblioteca para logar por servidor por minuto, para que as chamadas sejam agrupadas e o tráfego permaneça baixo.

Seyren: Nós usamos uma versão modificada de este projecto portuário internamente com os nossos componentes agrupados no interior. Apontamos para grafite e slack usando variáveis de ambiente do sistema. Uma vez na IU, criamos verificações com métricas de grafite (muitas vezes usando algumas das funcionalidades bem documentadas) para alertar para o nosso canal Slack.

Espero que isto ajude! Feliz hacking ?

Sobre ShareThis

ShareThis has unlocked the power of global digital behavior by synthesizing social share, interest, and intent data since 2007. Impulsionado pelo comportamento do consumidor em mais de três milhões de domínios globais, ShareThis observa acções em tempo real de pessoas reais em destinos digitais reais.

Subscreva a nossa Newsletter

Receba as últimas notícias, dicas e actualizações

Assine

Conteúdo relacionado