As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Instrumentar as solicitações HTTP de entrada com o X-Ray SDK para .NET
Você pode usar o X-Ray SDK para rastrear solicitações HTTP de entrada que são atendidas pela aplicação em uma instância do EC2 no Amazon EC2, no AWS Elastic Beanstalk ou no Amazon ECS.
Use um manipulador de mensagens para instrumentar solicitações HTTP de entrada. Quando você adiciona o manipulador de mensagens à aplicação, o X-Ray SDK para .NET cria um segmento para cada solicitação amostrada. Este segmento inclui tempo, método e disposição da solicitação HTTP. Instrumentação adicional cria subsegmentos sobre esse segmento.
nota
Para funções do AWS Lambda, o Lambda cria um segmento para cada solicitação amostrada. Consulte AWS Lambda e AWS X-Ray para obter mais informações.
Cada segmento tem um nome que identifica a aplicação no mapa de serviços. O segmento pode ser nomeado estaticamente ou você pode configurar o SDK para nomeá-lo dinamicamente com base no cabeçalho do host na solicitação de entrada. A nomeação dinâmica permite agrupar rastreamentos com base no nome de domínio na solicitação e aplicar um nome padrão se o nome não corresponder ao padrão esperado (por exemplo, se o cabeçalho do host for falsificado).
Solicitações encaminhadas
Se um balanceador de carga ou outro intermediário encaminhar uma solicitação para a aplicação, o X-Ray obterá o IP do cliente do cabeçalho X-Forwarded-For
na solicitação em vez do IP de origem no pacote IP. O IP do cliente registrado para uma solicitação encaminhada pode ser falsificado; portanto, não é digno de confiança.
O manipulador de mensagens cria um segmento para cada solicitação de entrada com um bloco http
que contém as seguintes informações:
-
Método HTTP: GET, POST, PUT, DELETE etc.
-
Endereço do cliente: o endereço IP do cliente que enviou a solicitação.
-
Código de resposta: o código de resposta HTTP da solicitação concluída.
-
Horário: a hora de início (quando a solicitação foi recebida) e a hora de término (quando a resposta foi enviada).
-
Agente do usuário: o
user-agent
da solicitação. -
Tamanho do conteúdo: o
content-length
da resposta.
Seções
Instrumentar solicitações de entrada (.NET)
Para solicitar os instrumentos atendidos pelo seu aplicativo, chame RegisterXRay
no método Init
do seu arquivo global.asax
.
exemplo global.asax – manipulador de mensagens
using System.Web.Http;
using Amazon.XRay.Recorder.Handlers.AspNet;
namespace SampleEBWebApplication
{
public class MvcApplication : System.Web.HttpApplication
{
public override void Init()
{
base.Init();
AWSXRayASPNET.RegisterXRay(this, "MyApp
");
}
}
}
Instrumentar solicitações de entrada (.NET Core)
Para instrumentar as solicitações atendidas pela aplicação, chame o método UseXRay
antes de qualquer outro middleware no método Configure
de sua classe Startup. Preferencialmente, o middleware do X-Ray deve ser o primeiro middleware a processar a solicitação e o último middleware a processar a resposta no pipeline.
nota
Para o.NET Core 2.0, se você tiver um método UseExceptionHandler
na aplicação, chame UseXRay
após o método UseExceptionHandler
para garantir que as exceções sejam registradas.
exemplo Startup.cs
using Microsoft.AspNetCore.Builder;
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseXRay("MyApp
");
// additional middleware
...
}
using Microsoft.AspNetCore.Builder;
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseExceptionHandler("/Error");
app.UseXRay("MyApp
");
// additional middleware
...
}
O método UseXRay
também pode levar um objeto de configuração como segundo argumento.
app.UseXRay("MyApp", configuration);
Configurar uma estratégia de nomeação de segmentos
O AWS X-Ray usa um nome de serviço para identificar a aplicação e diferenciá-la de outras aplicações, bancos de dados, APIs externas e recursos da AWS que a aplicação usa. Quando o X-Ray SDK gera segmentos para solicitações recebidas, ele registra o nome do serviço da aplicação no campo de nome do segmento.
O X-Ray SDK pode nomear segmentos com o nome do host no cabeçalho da solicitação HTTP. No entanto, esse cabeçalho pode ser falsificado, o que pode resultar em nós inesperados no mapa de serviço. Para evitar que o SDK nomeie segmentos incorretamente devido a solicitações com cabeçalhos de host falsificados, você deve especificar um nome padrão para as solicitações recebidas.
Se a aplicação atende a solicitações para vários domínios, você pode configurar o SDK para usar uma estratégia de nomeação dinâmica para refletir isso nos nomes dos segmentos. Uma estratégia de nomeação dinâmica permite que o SDK use o nome do host para solicitações que correspondam a um padrão esperado e aplique o nome padrão às solicitações que não correspondem.
Por exemplo, você pode ter uma única aplicação para atender a solicitações para três subdomínios: www.example.com
, api.example.com
e static.example.com
Você pode usar uma estratégia de nomeação dinâmica com o padrão *.example.com
a fim de identificar segmentos para cada subdomínio com um nome diferente, o que resulta em três nós de serviço no mapa de serviços. Se a aplicação receber solicitações com um nome de host que não corresponda ao padrão, você verá um quarto nó no mapa de serviços com um nome alternativo especificado por você.
Para usar o mesmo nome para todos os segmentos de solicitação, especifique o nome do seu aplicativo ao inicializar o manipulador de mensagens, como mostrado na seção anterior. Isso tem o mesmo efeito que criar um FixedSegmentNamingStrategy
e passá-lo para o método RegisterXRay
.
AWSXRayASPNET.RegisterXRay(this, new FixedSegmentNamingStrategy("MyApp
"));
nota
Você pode sobrepor o nome do serviço padrão que definiu no código com a variável de ambiente AWS_XRAY_TRACING_NAME
.
Uma estratégia de nomeação dinâmica define um padrão com o qual os nomes de host devem corresponder e um nome padrão a ser usado se o nome do host na solicitação HTTP não corresponder ao padrão. Para nomear segmentos dinamicamente, crie um DynamicSegmentNamingStrategy
e pass-o para o método RegisterXRay
.
AWSXRayASPNET.RegisterXRay(this, new DynamicSegmentNamingStrategy("MyApp
", "*.example.com
"));