Sessão Avançada: Construindo um Data Warehouse Moderno com Amazon Redshift - ...
Seus logs nas costas largas da AWS
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
6. 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
7. Log4net no aspnet core
● Pacote
○ Microsoft.Extensions.Logging.Log4Net.AspNetCore
● Projeto
○ github.com/huorswords/Microsoft.Extensions.Logging.Log4Net.AspNetCore
10. 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.
11. 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.
12. Problemas da primeira abordagem
● Sobrecarga nas aplicações
● Possibilidade de perda de logs em caso de falha no Elasticsearch (pouca
resiliente)
14. 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/
15. 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/
16. 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
17. Logs do Log4net no Kinesis Stream
● Pacote
○ Log4Net.KinesisAppender
● Projeto
○ https://github.com/mfpalladino/Log4Net.KinesisAppender
20. 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
21. 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
22. 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
23. 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