Nossos clientes querem garantir que seus usuários tenham a melhor experiência ao executar seus aplicativos na AWS. Para que isso aconteça, você precisa monitorar e corrigir problemas de software o mais rápido possível. Fazer isso se torna um desafio com o crescente volume de dados que precisam ser rapidamente detectados, analisados e armazenados. Nesta postagem, orientamos você por um processo automatizado para agregar e monitorar dados de aplicativos de registro em tempo quase real, para que você possa corrigir problemas de aplicativos mais rapidamente.
Esta postagem mostra como unificar e centralizar logs em diferentes plataformas de computação. Com esta solução, você pode unificar logs de Amazon Elastic Compute Nuvem (Amazônia EC2), Serviço Amazon Elastic Container (Amazônia ECS), Serviço Amazon Elastic Kubernetes (Amazon EKS), Mangueira de incêndio de dados do Amazon Kinesis e AWS Lambda usando agentes, roteadores de log e extensões. Nós usamos Serviço Amazon OpenSearch (sucessor do Amazon Elasticsearch Service) com OpenSearch Dashboards para visualizar e analisar os logs, coletados em diferentes plataformas de computação para obter insights de aplicativos. Você pode implantar a solução usando o Kit de desenvolvimento em nuvem da AWS (AWS CDK) fornecidos como parte da solução.
Benefícios para o cliente
Um sistema de log agregado unificado oferece os seguintes benefícios:
- Um único ponto de acesso a todos os logs em diferentes plataformas de computação
- Ajude a definir e padronizar as transformações de logs antes que eles sejam entregues a sistemas downstream como Serviço de armazenamento simples da Amazon (Amazon S3), Serviço Amazon OpenSearch, Amazon RedShift, e outros serviços
- A capacidade de usar Amazon OpenSearch Service para indexar rapidamente e OpenSearch Dashboards para pesquisar e visualizar logs de seus roteadores, aplicativos e outros dispositivos
Visão geral da solução
Nesta postagem, usamos os seguintes serviços para demonstrar a agregação de logs em diferentes plataformas de computação:
- Amazon EC2 – Um serviço da Web que fornece capacidade de computação segura e redimensionável na nuvem. Ele foi projetado para tornar a computação em nuvem em escala da Web mais fácil para os desenvolvedores.
- Amazon ECS – Um serviço da web que facilita a execução, o dimensionamento e o gerenciamento de contêineres do Docker na AWS, projetado para facilitar a experiência do Docker para os desenvolvedores.
- Amazon EX – Um serviço da web que facilita a execução, dimensionamento e gerenciamento de contêineres do Docker na AWS.
- Mangueira de dados Kinesis – Um serviço totalmente gerenciado que facilita o streaming de dados para Amazon S3, Amazon Redshift ou Amazon OpenSearch Service.
- Lambda – Um serviço de computação que permite executar código sem provisionar ou gerenciar servidores. Ele foi projetado para tornar a computação em nuvem em escala da Web mais fácil para os desenvolvedores.
- Serviço Amazon OpenSearch – Um serviço totalmente gerenciado que facilita a execução de análises de log interativas, monitoramento de aplicativos em tempo real, pesquisa de sites e muito mais.
O diagrama a seguir mostra a arquitetura de nossa solução.
A arquitetura usa várias ferramentas de agregação de log, como agentes de log, roteadores de log e extensões do Lambda para coletar logs de várias plataformas de computação e entregá-los ao Kinesis Data Firehose. O Kinesis Data Firehose transmite os logs para o Amazon OpenSearch Service. Os registros de log que não persistirem no serviço Amazon OpenSearch serão gravados no AWS S3. Para dimensionar essa arquitetura, cada uma dessas plataformas de computação transmite os logs para um fluxo de entrega Firehose diferente, adicionado como um índice separado e alternado a cada 24 horas.
As seções a seguir demonstram como a solução é implementada em cada uma dessas plataformas de computação.
Amazon EC2
O agente do Kinesis coleta e transmite os logs dos aplicativos executados em instâncias do EC2 para o Kinesis Data Firehose. O agente é um aplicativo de software Java autônomo que oferece uma maneira fácil de coletar e enviar dados para o Kinesis Data Firehose. O agente monitora continuamente os arquivos e envia logs para o fluxo de entrega do Firehose.
O script AWS CDK fornecido como parte desta solução implanta um aplicativo PHP simples que gera logs sob o /etc/httpd/logs
diretório na instância do EC2. O agente do Kinesis é configurado por meio de /etc/aws-kinesis/agent.json
para coletar dados de access_logs
e error_logs
, e transmita-os periodicamente para o Kinesis Data Firehose (ec2-logs-delivery-stream
).
Como o Amazon OpenSearch Service espera dados no formato JSON, você pode adicionar uma chamada a uma função do Lambda para transformar os dados de log no formato JSON no Kinesis Data Firehose antes de fazer streaming para o Amazon OpenSearch Service. A seguir está uma entrada de amostra para o transformador de dados:
Segue nossa saída:
Podemos aprimorar a função do Lambda para extrair o carimbo de data/hora, HTTP e informações do navegador dos dados de log e armazená-los como atributos separados no documento JSON.
Amazon ECS
No caso do Amazon ECS, usamos o FireLens para enviar logs diretamente ao Kinesis Data Firehose. FireLens é um roteador de log de contêiner para Amazon ECS e AWS Fargate que oferece extensibilidade para usar a variedade de serviços da AWS ou soluções de parceiros para análise e armazenamento de logs.
A arquitetura hospeda o FireLens como um arquivo secundário, que coleta logs do contêiner principal que executa um aplicativo httpd e os envia para o Kinesis Data Firehose e transmite para o Amazon OpenSearch Service. O script AWS CDK fornecido como parte desta solução implanta um contêiner httpd hospedado atrás de um Application Load Balancer. Os logs httpd são enviados para o Kinesis Data Firehose (ecs-logs-delivery-stream
) por meio do roteador de log FireLens.
Amazon EX
Com o anúncio recente do suporte do Fluent Bit para o Amazon EKS, você não precisa mais executar um sidecar para rotear logs de contêiner de pods do Amazon EKS em execução no Fargate. Com o novo suporte de registro integrado, você pode selecionar um destino de sua escolha para enviar os registros. O Amazon EKS no Fargate usa uma versão do Fluent Bit for AWS, uma distribuição compatível upstream do Fluent Bit gerenciada pela AWS.
O script AWS CDK fornecido como parte desta solução implanta um contêiner NGINX hospedado atrás de um Application Load Balancer interno. Os logs do contêiner NGINX são enviados para o Kinesis Data Firehose (eks-logs-delivery-stream
) através do plugin Fluent Bit.
Lambda
Para funções do Lambda, você pode enviar logs diretamente para o Kinesis Data Firehose usando a extensão do Lambda. Você pode negar os registros que estão sendo gravados Amazon CloudWatch.
Após a implantação, o fluxo de trabalho é o seguinte:
- Na inicialização, a extensão se inscreve para receber logs da plataforma e eventos de função. Um servidor HTTP local é iniciado dentro da extensão externa, que recebe os logs.
- A extensão armazena em buffer os eventos de log em uma fila sincronizada e os grava no Kinesis Data Firehose por meio de registros PUT.
- Os logs são enviados para sistemas downstream.
- Os logs são enviados ao Amazon OpenSearch Service.
O nome do fluxo de entrega do Firehose é especificado como uma variável de ambiente (AWS_KINESIS_STREAM_NAME
).
Para esta solução, como estamos nos concentrando apenas na coleta dos logs de execução da função Lambda, o transformador de dados do fluxo de entrega do Kinesis Data Firehose filtra os registros do tipo function
("type":"function"
) antes de enviá-lo ao Amazon OpenSearch Service.
A seguir está uma entrada de amostra para o transformador de dados:
Pré-requisitos
Para implementar esta solução, você precisa dos seguintes pré-requisitos:
Construir o código
Confira o código do AWS CDK executando o seguinte comando:
Compile a extensão lambda executando o seguinte comando:
Certifique-se de substituir a região padrão da AWS especificada no valor de firehose.endpoint
atributo dentro lib/computes/ec2/ec2-startup.sh
.
Compile o código executando o seguinte comando:
Implante o código
Se você estiver executando o AWS CDK pela primeira vez, execute o seguinte comando para inicializar o ambiente do AWS CDK (forneça o ID da sua conta da AWS e a região da AWS):
Você só precisa inicializar o AWS CDK uma vez (pule esta etapa se já tiver feito isso).
Execute o seguinte comando para implantar o código:
Você obtém a seguinte saída:
O AWS CDK cuida da criação da infraestrutura necessária, da implantação do aplicativo de amostra e da coleta de logs de diferentes fontes para o Amazon OpenSearch Service.
A seguir estão algumas das principais informações sobre a pilha:
- endereço ec2i – O endereço IP público da instância do EC2, implantado com o aplicativo PHP de amostra
- ecsloadbalancerurl – O URL do Amazon ECS Load Balancer, implantado com o aplicativo httpd
- eksclusterClusterNameCE21A0DB – O nome do cluster do Amazon EKS, implantado com o aplicativo NGINX
- samplelambdafunção – A função Lambda de exemplo usando a extensão Lambda para enviar logs ao Kinesis Data Firehose
- opensearch-domínio-arn – O ARN do domínio do Amazon OpenSearch Service
Gerar registros
Para visualizar os logs, primeiro você precisa gerar alguns logs de amostra.
- Para gerar logs do Lambda, invoque a função usando o seguinte comando da AWS CLI (execute-o algumas vezes):
Certifique-se de substituir samplelambdafunction
com o nome real da função Lambda. O caminho do arquivo precisa ser atualizado com base no sistema operacional subjacente.
A função deve retornar "StatusCode": 200
, com a seguinte saída:
- Execute o seguinte comando algumas vezes para gerar logs do Amazon EC2:
Certifique-se de substituir ec2ipaddress
com o endereço IP público da instância do EC2.
- Execute o seguinte comando algumas vezes para gerar logs do Amazon ECS:
Certifique-se de substituir ecsloadbalancerurl
com o ARN público do AWS Application Load Balancer.
Implantamos o aplicativo NGINX com um load balancer interno, para que o load balancer atinja o ponto de verificação de integridade do aplicativo, que é suficiente para gerar os logs de acesso do Amazon EKS.
Visualize os registros
Para visualizar os logs, conclua as etapas a seguir:
- No console do Amazon OpenSearch Service, escolha o hiperlink fornecido para o OpenSearch Dashboard 7URL.
- Configurar o acesso ao painel do OpenSearch.
- Debaixo Painel OpenSearch, Na Descobrir menu, comece a criar um novo padrão de índice para cada log de computação.
Podemos ver índices separados para cada log de computação particionado por data, como na captura de tela a seguir.
A captura de tela a seguir mostra o processo para criar padrões de índice para logs do Amazon EC2.
Depois de criar o padrão de índice, podemos começar a analisar os logs usando o Descobrir menu em Painel OpenSearch no painel de navegação. Essa ferramenta fornece uma única interface pesquisável e unificada para todos os registros com várias plataformas de computação. Podemos alternar entre diferentes logs usando o Alterar padrão de índice submenu.
limpar
Execute o seguinte comando no diretório raiz para excluir a pilha:
Conclusão
Nesta postagem, mostramos como unificar e centralizar logs em diferentes plataformas de computação usando o Kinesis Data Firehose e o Amazon OpenSearch Service. Essa abordagem permite analisar logs rapidamente e a causa raiz das falhas, usando uma única plataforma em vez de plataformas diferentes para serviços diferentes.
Se você tiver comentários sobre esta postagem, envie seus comentários na seção de comentários.
Recursos
Para obter mais informações, consulte os seguintes recursos:
Sobre o autor
Hari Ohm Prasath é arquiteto de modernização sênior na AWS, ajudando os clientes em sua jornada de modernização para se tornarem nativos da nuvem. Hari adora codificar e contribui ativamente para as iniciativas de código aberto. Você pode encontrá-lo no Medium, Github e Twitter @hariohmprasath.
Ballu Singh é um arquiteto de soluções principal na AWS. Ele mora na área da Baía de São Francisco e ajuda os clientes a arquitetar e otimizar aplicativos na AWS. Em seu tempo livre, ele gosta de ler e passar tempo com sua família.
- '
- "
- &
- 100
- 11
- 7
- 9
- Sobre
- Acesso
- Conta
- em
- endereço
- agentes
- Todos os Produtos
- já
- Amazon
- Amazon EC2
- analítica
- Anúncio
- Aplicação
- aplicações
- arquitetura
- ÁREA
- Automatizado
- AWS
- balanceador
- Bay
- ser
- MELHOR
- Pouco
- navegador
- Prédio
- chamada
- Capacidade
- Cuidado
- Causar
- Na nuvem
- computação em nuvem
- Nativo da nuvem
- código
- Coleta
- coleta
- comentários
- Computar
- computação
- cônsul
- Recipiente
- Containers
- Casal
- Criar
- Clientes
- painel de instrumentos
- dados,
- Entrega
- Implantação
- desenvolvedores
- Desenvolvimento
- diferente
- Estivador
- ElasticSearch
- Meio Ambiente
- eventos
- espera
- vasta experiência
- extensões
- família
- mais rápido
- retornos
- filtros
- Primeiro nome
- primeira vez
- Fixar
- formato
- Francisco
- função
- funções
- gerar
- Git
- GitHub
- Crescente
- Saúde
- ajuda
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTTPS
- IAM
- executar
- implementado
- índice
- INFORMAÇÕES
- Infraestrutura
- insights
- interativo
- IP
- Endereço IP
- questões
- IT
- Java
- viagem
- Chave
- Kubernetes
- carregar
- local
- média
- modernização
- monitoração
- mais
- Navegação
- NGINX
- Oferece
- aberto
- open source
- operando
- sistema operativo
- Outros
- parceiro
- padrão
- plataforma
- Plataformas
- plug-in
- vagens
- Diretor
- processo
- fornecer
- fornece
- público
- Leitura
- em tempo real
- registro
- registros
- substituir
- Recursos
- Rota
- Execute
- corrida
- San
- San Francisco
- área de san francisco bay
- Escala
- Pesquisar
- Serviços
- encerramento
- simples
- So
- Software
- Soluções
- Passar
- começo
- começado
- inicialização
- Estado
- Status
- armazenamento
- loja
- de streaming
- córregos
- sucesso
- ajuda
- Interruptor
- .
- sistemas
- Através da
- tempo
- ferramenta
- ferramentas
- Transformar
- usuários
- valor
- versão
- volume
- web
- Site
- Windows
- dentro
- sem
- de gestão de documentos