A visibilidade unificada dos comportamentos mais detalhados da sua função .NET do Lambda é essencial para que você possa entender o que está acontecendo no seu aplicativo serverless. Essas informações permitem solucionar problemas e otimizar suas funções para que possam trabalhar mais rapidamente e fornecer resultados consistentes.
Você pode escolher entre duas abordagens de instrumentação para obter visibilidade da sua função .NET do Lambda:
Use as dicas abaixo para ajudá-lo a decidir qual abordagem é melhor para você.
Comparação de recursos
A tabela a seguir descreve os diferentes requisitos e capacidades de cada abordagem:
Agente New Relic .NET | AWS Distro para OpenTelemetry | |
---|---|---|
Requer alterações de código | Não | Sim |
Precisa de ferramenta para envio de dados | Sim | Não |
New Relic experiência de IU | ||
Distributed tracing | Sim | |
Métrica | Não | Sim |
Rastreamento da transação | Sim | N/A |
Evento de transação | Sim | |
Evento/spans de erro | Sim | Sim |
Span evento ou spans | Sim | Sim |
Traces SQL | Sim | N/A |
Perfil de tópico | Não | N/A |
Gerenciamento de vulnerabilidades | Não | N/A |
Chamadas externas | Sim | |
Instrumentação personalizada usando XML | Não | Não |
Instrumentação personalizada usando API | Sim (agente) | Sim (OpenTelemetry) |
Métrica personalizada | Não | Sim |
Evento personalizado | Sim | N/A |
Períodos personalizados | Sim | Sim |
Erros personalizados | Sim | Não |
Atributo personalizado | Sim | Sim |
Registro | Sim | Sim |
Rastreamento legado multiaplicativo | Não | Não |
Informações
Logs-in-context será capturado pela extensão Lambda ou CloudWatch, não pelo in-agente encaminhamento de logs.
Agente New Relic .NET
A partir da versão 10.26.0 do agente, o agente New Relic .NET oferece suporte à função AWS instrumentada do Lambda. Na maioria dos casos, o agente .NET instrumentará automaticamente sua função AWS do Lambda. A vantagem de usar o agente é que, na maioria dos casos, nenhuma alteração de código é necessária para monitor sua função do Lambda.
Na função do Lambda, o agente mudará para um "modo serverless" que desabilitará o envio de dados diretamente para New Relic, bem como desabilitará algum outro recurso. Para enviar dados para a New Relic, você deve usar a extensão New Relic Lambda (incluída em nossa camada de agente .NET) ou o CloudWatch.
Como o agente é automaticamente o instrumento mais função do Lambda, você pode usar o pacote agente NuGet para monitor sua função do Lambda. Você precisa configurar manualmente as variáveis de ambiente para o método de implantação escolhido (consulte nosso guia de instalação). Isso ainda requer que você configure a extensão Lambda da New Relic ou a integração do CloudWatch para enviar seus dados para a New Relic.
A instrumentação automática está disponível para os seguintes tipos de função do Lambda AWS (a partir da versão do agente 10.29.0):
- Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction
- Amazon.Lambda.AspNetCoreServer.APIGatewayHttpApiV2ProxyFunction
- Amazon.Lambda.AspNetCoreServer.ApplicationLoadBalancerFunction
Limitações:
- Métodos lambda genéricos não são instrumentados automaticamente. Se o seu método lambda for um método genérico, como
Task<TResponse> MyMethod<TRequest, TResponse>(TRequest, ILambdaContext)
, o agente .NET atualmente não é capaz de instrumentar esse método. - O Lambda Annotations Framework atualmente não é compatível.
- O evento ApiGatewayV2 está faltando algum contexto necessário para distributed tracing.
- distributed tracing de saída para diferentes chamadas AWS SDK (como SQS) não é compatível.
- Se o seu manipulador de função do Lambda não incluir um parâmetro
ILambdaContext
, o agente .NET não será capaz de reunir todas as informações esperadas sobre sua função do Lambda. - A função .NET do Lambda construída com o método de implantação Native AOT não é suportada.
Importante
Plug-in de estrutura sem servidor O suporte para .NET função do Lambda começa na v5.3.0 do plug-in sem servidor. Se você estiver executando uma versão do plug-in sem servidor anterior à v5.3.0, atualizar para v5.3.0 ou posterior irá instrumentar automaticamente sua função .NET do Lambda. Você pode usar a instrução exclude em seu serverless.yml para excluir funções da instrumentação automática.
AWS Distro for OpenTelemetry (ADOT) Suporte Lambda para .NET
A instrumentação OpenTelemetry Lambda para .NET fornece API de extensão e rastreamento que você pode usar para instrumentar sua função do Lambda. ADOT está disponível como uma camada para facilitar a instalação. A camada ADOT Lambda fornece uma versão reduzida do coletor AWS Distro for OpenTelemetry , que pode exportar dados OpenTelemetry para New Relic. Em vez da experiência de interface sem servidor, esta abordagem usará a interface OpenTelemetry.
Este método requer alguma configuração manual inicial, dependendo do seu método de implantação.
Para obter detalhes de instalação, consulte trace sua função .NET do Lambda com New Relic e OpenTelemetry.