Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

225
Visualizações
AWS: suscriba varios registros lambda a un servicio de búsqueda elástica

Tengo dos grupos de registro generados por dos lambda diferentes. Cuando suscribo un grupo de registro a mi servicio de búsqueda elástica, está funcionando. Sin embargo, cuando agrego el otro grupo de registro, tengo el siguiente error en el registro generado por cloudwatch:

 "responseBody": "{\"took\":5,\"errors\":true,\"items\":[{\"index\":{\"_index\":\"cwl-2018.03.01\",\"_type\":\"/aws/lambda/lambda-1\",\"_id\":\"33894733850010958003644005072668130559385092091818016768\",\"status\":400,\"error\": {\"type\":\"illegal_argument_exception\",\"reason\":\"Rejecting mapping update to [cwl-2018.03.01] as the final mapping would have more than 1 type: [/aws/lambda/lambda-1, /aws/lambda/lambda-2]\"}}}]}"

¿Cómo puedo resolver esto y seguir teniendo ambos grupos de registros en mi servicio de Elasticsearch y visualizar todos los registros?

Gracias.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

El problema es que ElasticSearch 6.0.0 realizó un cambio que permite que los índices solo contengan un solo tipo de mapeo. ( https://www.elastic.co/guide/en/elasticsearch/reference/6.0/removal-of-types.html ) Supongo que está ejecutando una instancia de servicio de ElasticSearch que usa la versión 6.0.

El archivo Lambda JS predeterminado, si se crea a través de la consola de AWS, establece el tipo de índice en el nombre del grupo de registro. Un ejemplo del archivo JS está en esta esencia ( https://gist.github.com/iMilnb/27726a5004c0d4dc3dba3de01c65c575 )

Línea 86: action.index._type = payload.logGroup;

Personalmente, tengo una versión modificada de ese script en uso y cambié esa línea para que sea:

action.index._type = 'cwl';

Tengo registros de varios grupos de registros diferentes que se transmiten a través de la misma instancia de ElasticSearch. Tiene sentido que todos sean del mismo tipo, ya que todos son registros de CloudWatch en lugar de que el tipo sea el nombre del grupo de registros. El nombre también se establece en el campo @log_group para que las consultas puedan usarlo para filtrar.

En mi caso, hice lo siguiente:

  1. Implementar Lambda modificado
  2. Vuelva a indexar el índice de hoy ( cwl-2018.03.07 por ejemplo) para cambiar el tipo de documentos antiguos de <log group name> a cwl
  3. Las entradas de diferentes grupos de registro ahora coexistirán.
over 4 years ago · Santiago Trujillo Relatório

0

También puede modificar el código Lambda generado como se muestra a continuación para que funcione con varios grupos de registro de CW. Si la función Lambda puede crear un índice ES diferente para los diferentes flujos de registros que se encuentran en los mismos grupos de registros, podemos evitar este problema. Por lo tanto, debe encontrar la función de Lambda LogsToElasticsearch_<AWS-ES-DOMAIN-NAME> , luego la función de function transform(payload) y, finalmente, cambiar la parte de formación del nombre del índice como se muestra a continuación.

 // index name format: cwl-YYYY.MM.DD //var indexName = [ //'cwl-' + timestamp.getUTCFullYear(), // year //('0' + (timestamp.getUTCMonth() + 1)).slice(-2), // month //('0' + timestamp.getUTCDate()).slice(-2) // day //].join('.'); var indexName = [ 'cwl-' + payload.logGroup.toLowerCase().split('/').join('-') + '-' + timestamp.getUTCFullYear(), // log group + year ('0' + (timestamp.getUTCMonth() + 1)).slice(-2), // month ('0' + timestamp.getUTCDate()).slice(-2) // day ].join('.');
over 4 years ago · Santiago Trujillo Relatório

0

¿Es posible reenviar todos los grupos de registro de CloudWatch a un solo índice en ES? Como tener un índice "rds-logs-*" para transmitir registros de todas mis instancias de RDS disponibles. ejemplo: los registros de errores, los registros de consultas lentas, los registros generales, etc., de todas las instancias de RDS, ¿deberían insertarse en el mismo índice (rds-logs-*)?

Intenté el cambio de código mencionado anteriormente, pero solo envía el último grupo de registro que había configurado.

Desde AWS: de forma predeterminada, solo 1 grupo de registro puede transmitir datos de registro al servicio ElasticSearch. Si intenta transmitir dos grupos de registros al mismo tiempo, los datos de registro de un grupo de registros anularán los datos de registro del otro grupo de registros.

Quería comprobar si tenemos una solución alternativa para lo mismo.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda