DEV Community

Allef Gomes
Allef Gomes

Posted on

CloudWatch e OpenSearch na AWS com multiplos grupos de logs.

Exatamente hoje, passei por uns problemas utilizando o CloudWatch da AWS para receber os logs de uma aplicação e uma instância do OpenSearch para visualização dos dados.

Acontece que foi criado o grupo de logs para ambiente de homologação - staging/serice/api_sucesso - e um para produção production/service/api_sucesso.

Acontece que os logs do staging estavam sendo indexados no OpenSearch perfeitamente, porém, quando testamos em ambiente de production os logs não conseguiam ser indexados no OpenSearch. :/

Acontece que por padrão o CloudWatch cria apenas uma função do AWS Lambda para cada domínio do OpenSearch e quando o primeiro grupo invoca a função Lambda, a chamada cria um índice e um campo de tipo no seu domínio.

A solução para isso é alterar a função Lambda na declaração da variável indexName de:

var indexName = [
        'cwl-' + timestamp.getUTCFullYear(), // year
        ('0' + (timestamp.getUTCMonth() + 1)).slice(-2), //month
        ('0' + timestamp.getUTCDate()).slice(-2) // day
        ].join('.');
Enter fullscreen mode Exit fullscreen mode

para:

 var indexName = [
  'cwl-' + payload.logGroup.toLowerCase().split('/').join('-') + '-' // log group name
  + timestamp.getUTCFullYear(), // year
  ('0' + (timestamp.getUTCMonth() + 1)).slice(-2), // month
  ('0' + timestamp.getUTCDate()).slice(-2) // day
].join('.');
Enter fullscreen mode Exit fullscreen mode

Obtendo assim, um prefixo do nome do grupo para indexação.

Para mais detalhes da documentação.

Top comments (0)