Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Seus logs nas costas largas da AWS

Seus logs nas costas largas da AWS

Slides da apresentação na qual falamos sobre uma forma de enviar os logs do log4net (de uma aplicação .net) utilizando Kinesis e AWS ElasticSearch para consumi-los através do Kibana.

Marcelo Palladino

February 20, 2020
Tweet

More Decks by Marcelo Palladino

Other Decks in Technology

Transcript

  1. Seus logs nas costas largas da AWS uma abordagem usando

    log4net, Kinesis, ElasticSearch e Kibana
  2. Sobre mim • +20 anos de experiência em desenvolvimento de

    software • AWS Cloud Practitioner • AWS Developer Associate • AWS Solutions Architect Associate • AWS SysOps Administrator Associate • Microsoft Certified Professional • Bacharel em Ciência da Computação • Arquiteto de soluções na Hi Platform • AWS Community Leader Marcelo Palladino
  3. Requisitos • As aplicações utilizam log4net • As aplicações devem

    ser “livres para escalar” (1 instância ou “N”) • Deve ser fácil consultar os logs • Deve ser fácil graficar os logs • Deve ser fácil identificar logs de uma aplicação específica
  4. Componentes para uma primeira abordagem • Log4net ◦ Appender do

    log4net para o Elasticsearch • Aplicações .net core ◦ Pacote para usar o log4net no aspnet core • Amazon Elasticsearch ◦ Kibana
  5. Log4net no aspnet core • Pacote ◦ Microsoft.Extensions.Logging.Log4Net.AspNetCore • Projeto

    ◦ github.com/huorswords/Microsoft.Extensions.Logging.Log4Net.AspNetCore
  6. Elasticsearch O Elasticsearch é uma ferramenta para buscas de código

    aberto (código aberto) que tem capacidade para tratar de grandes quantidades de dados em tempo real. Trata-se de um servidor de buscas distribuído e é baseado em Apache Lucene.
  7. Kibana • Plugin de visualização de dados de código aberto

    para o Elasticsearch. • Fornece recursos de visualização em cima do conteúdo indexado em um cluster de Elasticsearch. • Permite criar gráficos de barra, pizza, linha, dispersão entre outros, com grandes volumes de dados.
  8. Problemas da primeira abordagem • Sobrecarga nas aplicações • Possibilidade

    de perda de logs em caso de falha no Elasticsearch (pouca resiliente)
  9. Kinesis Data Streams O Amazon Kinesis Data Streams permite criar

    aplicativos personalizados que processam ou analisam dados de streaming para necessidades específicas. É possível adicionar continuamente vários tipos de dados como rastros de cliques, registros de aplicativos e mídia social a um stream de dados do Amazon Kinesis de centenas de milhares de origens. Em segundos, os dados estarão disponíveis para seus aplicativos do Amazon Kinesis para leitura e processamento por meio do stream. Fonte: https://aws.amazon.com/kinesis/data-streams/faqs/
  10. Kinesis Firehose O Amazon Kinesis Data Firehose é a maneira

    mais fácil de carregar de forma confiável dados de streaming em datastores e ferramentas de análises. O serviço pode capturar, transformar e carregar dados de streaming no Amazon S3, no Amazon Redshift, no Amazon Elasticsearch Service e no Splunk, possibilitando análises praticamente em tempo real com as ferramentas e painéis de inteligência de negócios que você já usa hoje. Fonte: https://aws.amazon.com/pt/kinesis/data-firehose/
  11. Componentes para uma segunda abordagem • Log4net ◦ Appender do

    log4net para o Kinesis • Aplicações .net core ◦ Pacote para utilizar o log4net no aspnet core • Amazon Kinesis Data Streams • Amazon Kinesis Firehose • Amazon S3 • Amazon Elasticsearch ◦ Kibana
  12. Logs do Log4net no Kinesis Stream • Pacote ◦ Log4Net.KinesisAppender

    • Projeto ◦ https://github.com/mfpalladino/Log4Net.KinesisAppender
  13. Alguns conceitos chave do Kinesis Data Streams • Até 1

    TB por hora • Distribui os dados em três zonas de disponibilidade • Por padrão, os dados estão disponíveis por 24 horas, mas é possível alterar para até 7 dias (custo adicional) • Monitoramento disponível via Cloudwatch
  14. Alguns conceitos chave do Kinesis Data Streams A unidade básica

    de escala são os Shards. Um único Shard garante 1000 PUTs (1MB) por segundo (entrada) e 2MB de saída por segundo. 1 Shard = 1MB (entrada) e 2MB (saída) por segundo 10 Shards = 10MB (entrada) e 20MB (saída) por segundo
  15. Alguns conceitos chave do Kinesis Data Streams É possível adicionar

    ou remover Shards dinamicamente usando as APIs. O nome deste processo é Resharding. Existe um soft limit de 10 Shards por região
  16. Alguns conceitos chave do Kinesis Firehose • Pode escalar para

    GBs de streaming por segundo • Permite processamento em lotes • Suporta criptografia • Suporta dados comprimidos • Monitoramento disponível via Cloudwatch