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('.');
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('.');
Obtendo assim, um prefixo do nome do grupo para indexação.
Para mais detalhes da documentação.
Top comments (0)