Como integrar o Gerenciamento de API do Azure ao Azure Application Insights
APLICA-SE A: todas as camadas do Gerenciamento de API
Você pode facilmente integrar o Azure Application Insights com o Gerenciamento de API do Azure. O Azure Application Insights é um serviço extensível para desenvolvedores da Web que criam e gerenciam aplicativos em várias plataformas. Neste guia, você vai:
- Percorrer as etapa da integração do Application Insights ao Gerenciamento de API.
- Aprender estratégias para reduzir o impacto no desempenho em sua instância de serviço do Gerenciamento de API.
Observação
Num espaço de trabalho de Gerenciamento de API, um proprietário do espaço de trabalho pode integrar de forma independente o Application Insights e ativar o registo do Application Insights para as APIs do espaço de trabalho. A orientação geral para integrar um espaço de trabalho com o Application Insights é semelhante à orientação para uma instância de Gerenciamento de API; no entanto, a configuração tem como escopo apenas o espaço de trabalho. Atualmente, você deve integrar o Application Insights em um workspace configurando uma cadeia de conexão (recomendado) ou uma chave de instrumentação.
Aviso
Ao usar o nosso gateway auto-hospedado, não garantimos que todos os dados telemétricos serão enviados por push para o Azure Application Insights, uma vez que ele depende do Buffer na memória do Application Insights.
Pré-requisitos
Você precisa de uma instância do Gerenciamento de API do Azure. Crie uma primeiro.
Para usar o Application Insights, crie uma instância do serviço Application Insights. Para criar uma instância usando o portal do Azure, confira Recursos do Application Insights baseados em workspace.
Observação
O recurso Application Insights pode estar em uma assinatura diferente ou até mesmo em um locatário diferente do recurso de Gerenciamento de API.
Se você planeja configurar credenciais de identidade gerenciada para usar com o Application Insights, conclua as seguintes etapas:
Habilite uma identidade gerenciada atribuída pelo sistema ou atribuída pelo usuário para o Gerenciamento de API.
- Se você habilitar uma identidade gerenciada atribuída ao usuário, anote a ID do Cliente da identidade.
Atribua a identidade à função Editor de Métricas de Monitoramento, com escopo para o recurso do Application Insights. Para atribuir a função, use o portal do Azure ou outras ferramentas do Azure.
Visão geral do cenário
Veja a seguir as etapas de alto nível para esse cenário.
Primeiro, crie uma conexão entre o Application Insights e o Gerenciamento de API
Você pode criar uma conexão entre o Application Insights e seu Gerenciamento de API usando o portal do Azure, a API REST ou as ferramentas relacionadas do Azure. O Gerenciamento de API configura um recurso agente para a conexão.
Importante
Atualmente, no portal, o Gerenciamento de API dá suporte apenas a conexões com o Application Insights usando uma chave de instrumentação do Application Insights. Para segurança aprimorada, recomendamos usar uma cadeia de conexão do Application Insights com uma identidade gerenciada do Gerenciamento de API. Para configurar a cadeia de conexão com credenciais de identidade gerenciada, use a API REST ou ferramentas relacionadas, conforme mostrado em uma seção posterior deste artigo. Saiba mais sobre as cadeias de conexão do Application Insights.
Observação
Se o recurso do Application Insights estiver em um locatário diferente, você deverá criar o agente usando a API REST ou ferramentas relacionadas, conforme mostrado em uma seção posterior deste artigo.
Em segundo lugar, habilite o registro em log do Application Insights para sua API ou APIs.
Neste artigo, você habilitará o registro em log do Application Insights para sua API usando o portal do Azure. O Gerenciamento de API configura um recurso de diagnóstico para a API.
Criar uma conexão usando o portal do Azure
Siga estas etapas para usar o portal do Azure para criar uma conexão entre o Application Insights e o Gerenciamento de API.
Observação
Sempre que possível, a Microsoft recomenda usar a cadeia de conexão com credenciais de identidade gerenciadas para segurança aprimorada. Para configurar essas credenciais, use a API REST ou ferramentas relacionadas, conforme mostrado em uma seção posterior deste artigo.
Navegue até a instância de serviço do Gerenciamento de API do Azure no portal do Azure.
Selecione Application Insights no menu à esquerda.
Selecione + Adicionar.
Selecione a instância do Application Insights que você criou antes e forneça uma descrição resumida.
Para permitir o monitoramento de disponibilidade da sua instância de Gerenciamento de API no Application Insights, marque a caixa de seleção Adicionar monitor de disponibilidade.
- Essa configuração valida regularmente se o ponto de extremidade do gateway de Gerenciamento de API está respondendo.
- Os resultados são exibidos no painel Disponibilidade da instância do Application Insights.
Selecione Criar.
Verifique se o novo agente do Application Insights aparece agora na lista.
Observação
Nos bastidores, uma entidade de agente é criada na sua instância do Gerenciamento de API, contendo a chave de instrumentação da instância do Application Insights.
Dica
Se você precisar atualizar a chave de instrumentação configurada no agente do Application Insights, selecione a linha do agente na lista (não o nome do agente). Insira a chave de instrumentação e selecione Salvar.
Criar uma conexão usando a API REST, o Bicep ou o modelo do ARM
Siga estas etapas para usar a API REST, o modelo Bicep ou o ARM para criar um agente do Application Insights para a sua instância do Gerenciamento de API. Você pode configurar um agente que usa a cadeia de conexão com credenciais de identidade gerenciadas (recomendado) ou um agente que usa apenas uma cadeia de conexão.
Agente com cadeia de conexão com credenciais de identidade gerenciada (recomendado)
Consulte os pré-requisitos para usar uma identidade gerenciada do Gerenciamento de API.
A cadeia de conexão do Application Insights aparece na seção Visão geral do recurso do Application Insights.
Cadeia de conexão com identidade gerenciada atribuída pelo sistema
Use a Gerenciamento de API Logger - Criar ou Atualizar REST API com o seguinte corpo de solicitação.
{
"properties": {
"loggerType": "applicationInsights",
"description": "Application Insights logger with system-assigned managed identity",
"credentials": {
"connectionString":"InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/;...",
"identityClientId":"SystemAssigned"
}
}
}
Cadeia de conexão com identidade gerenciada atribuída pelo usuário
Use a Gerenciamento de API Logger - Criar ou Atualizar REST API com o seguinte corpo de solicitação.
{
"properties": {
"loggerType": "applicationInsights",
"description": "Application Insights logger with user-assigned managed identity",
"credentials": {
"connectionString":"InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/;...",
"identityClientId":"<ClientID>"
}
}
}
Agente somente com credenciais de cadeia de conexão
A cadeia de conexão do Application Insights aparece na seção Visão geral do recurso do Application Insights.
Use a Gerenciamento de API Logger - Criar ou Atualizar REST API com o seguinte corpo de solicitação.
Se você estiver configurando o criador de logs para um espaço de trabalho, use a API REST Workspace Logger - Criar ou Atualizar.
{
"properties": {
"loggerType": "applicationInsights",
"description": "Application Insights logger with connection string",
"credentials": {
"connectionString":"InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/;..."
}
}
}
Habilitar o log do Application Insights para sua API
Use as etapas a seguir para habilitar o registro em log do Application Insights para uma API. Você também pode habilitar o registro em log do Application Insights para todas as APIs.
Navegue até a instância de serviço do Gerenciamento de API do Azure no portal do Azure.
Selecione APIs>APIs no menu à esquerda.
Selecione uma API, como Swagger Petstore. Se configurado, selecione uma versão.
Dica
Para habilitar o registro em log de todas as APIs, selecione Todas as APIs.
Acesse a guia Configurações na barra superior.
Role para baixo até a seção Logs de Diagnóstico.
Marque a caixa Habilitar.
Selecione o agente anexado na lista suspensa Destino.
Insira 100 como Amostragem (%) e marque a caixa de seleção Sempre registrar erros.
Deixe o restante das configurações como estão. Para obter detalhes sobre as configurações, confira Referência de configurações dos logs de diagnóstico.
Aviso
Substituir o valor padrão Número de bytes de conteúdo a registrar0 pode diminuir significativamente o desempenho das suas APIs.
Selecione Salvar.
Nos bastidores, uma entidade Diagnóstico chamada
applicationinsights
é criada no nível da API.
Observação
As solicitações são bem-sucedidas depois que o Gerenciamento de API envia a resposta inteira ao cliente.
Agentes para uma só API ou todas as APIs
Você pode especificar os agentes em diferentes níveis:
- Agente para uma só API
- Um agente para todas as APIs
Ao especificar ambos:
- Por padrão, o único registrador de API (nível mais granular) substitui o de todas as APIs.
- Se os agentes configurados nos dois níveis forem diferentes e você precisar que ambos os agentes recebam telemetria (multiplexação), entre em contato com Suporte da Microsoft. Observe que não há suporte para multiplexação se você estiver usando o mesmo agente (destino do Application Insights) no nível "Todas as APIs" e no nível de API única. Para que a multiplexação funcione corretamente, você deve configurar agentes diferentes no nível de API individual e de "Todas as APIs" e solicitar assistência do suporte da Microsoft para habilitar a multiplexação para seu serviço.
Quais dados são adicionados ao Application Insights
O Application Insights recebe:
Item de telemetria | Descrição |
---|---|
Solicitação | Para cada solicitação de entrada:
|
Dependência | Para cada solicitação encaminhada a um serviço de back-end:
|
Exceção | Para cada solicitação com falha:
|
Trace | Se você configurar uma política de rastreamento. A configuração severity na política trace deve ser igual ou maior que a configuração verbosity no registro em log do Application Insights. |
Observação
Confira Limites do Application Insights para obter informações sobre o tamanho e o número máximos de métricas e eventos por instância do Application Insights.
Emitir métricas personalizadas
Você pode emitir métricas personalizadas para o Application Insights a partir da sua instância de Gerenciamento de API. O Gerenciamento de API emite métricas personalizadas usando políticas como emit-metric e azure-openai-emit-token-metric. A seção a seguir usa a política emit-metric
como exemplo.
Observação
As métricas personalizadas são uma versão prévia do recurso do Azure Monitor e estão sujeitas a limitações.
Para emitir métricas personalizadas, execute as etapas da configuração a seguir.
Habilite as métricas personalizadas (Versão prévia) com as dimensões personalizadas na sua instância do Application Insights.
- Navegue até sua instância do Application Insights no portal.
- No menu à esquerda, selecione Uso e custos estimados.
- Selecione Métricas personalizadas (Versão prévia)>com dimensões.
- Selecione OK.
Adicione a propriedade
"metrics": true
à entidade de diagnósticoapplicationInsights
configurada no Gerenciamento de API. Atualmente, você precisa adicionar essa propriedade usando o Gerenciamento de API Diagnóstico - Criar ou Atualizar a API REST. Por exemplo:PUT https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.ApiManagement/service/{APIManagementServiceName}/diagnostics/applicationinsights { [...] { "properties": { "loggerId": "/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.ApiManagement/service/{APIManagementServiceName}/loggers/{ApplicationInsightsLoggerName}", "metrics": true [...] } }
Confirme se o agente do Application Insights está configurado no escopo que você pretende emitir as métricas personalizadas (todas as APIs ou uma única API). Para obter mais informações, confira Habilitar o registro em log do Application Insights para sua API, anteriormente neste artigo.
Configure a política
emit-metric
em um escopo no qual o registro em log do Application Insights esteja configurado (todas as APIs ou uma única API) e habilitado para métricas personalizadas. Para obter detalhes sobre a política, confira a referência de políticaemit-metric
.
Limites para métricas personalizadas
O Azure Monitor impõe limites de uso para métricas personalizadas que podem afetar sua capacidade de emitir métricas de Gerenciamento de API. Por exemplo, o Azure Monitor atualmente define um limite de 10 chaves de dimensão por métrica e um limite de 50.000 séries temporais ativas totais por região em uma assinatura (dentro de um período de 12 horas).
Esses limites têm as seguintes implicações para configurar métricas personalizadas em uma política de Gerenciamento de API, como emit-metric
ou azure-openai-emit-token-metric
:
Você pode configurar no máximo 10 dimensões personalizadas por política .
O número de séries temporais ativas geradas pela política dentro de um período de 12 horas é o produto do número de valores exclusivos de cada dimensão configurada durante o período. Por exemplo, se três dimensões personalizadas foram configuradas na política e cada dimensão tinha 10 valores possíveis dentro do período, a política contribuiria com 1.000 (10 x 10 x 10) séries temporais ativas.
Se você configurar a política em várias instâncias de Gerenciamento de API que estão na mesma região em uma assinatura, todas as instâncias poderão contribuir para o limite de série temporal ativo regional.
Saiba mais sobre limitações de design e considerações para métricas personalizadas no Azure Monitor.
Implicações no desempenho e amostragem de log
Aviso
O registro de todos os eventos pode ter sérias implicações no desempenho, dependendo da taxa de solicitações recebidas.
Com base nos testes de carga internos, a habilitação do recurso de registro em log causou uma redução de 40% a 50% na taxa de transferência quando a taxa de solicitação excedeu 1.000 solicitações por segundo. O Application Insights foi projetado para avaliar desempenhos do aplicativo usando análise estatística. Ele não é:
- Destinado a ser um sistema de auditoria.
- Adequado para registrar em log cada solicitação individual para APIs de alto volume.
Você pode manipular o número de solicitações registradas em log, ajustando a configuração Amostragem. Um valor de 100% significa que todas as solicitações são registradas, enquanto 0% reflete que não há nenhum registro.
Amostragem ajuda a reduzir o volume de telemetria, evitando efetivamente a degradação significativa do desempenho, enquanto continua carregando os benefícios do registro em log.
Para melhorar os problemas de desempenho, ignore:
- Cabeçalhos de solicitação e resposta.
- Registro em log do corpo.
Vídeo
Solução de problemas
Resolver o problema de fluxo de dados de telemetria do Gerenciamento de API para o Application Insights:
- Investigue se existe um recurso de Escopo de Link Privado (AMPLS) do Azure Monitor vinculado na VNet à qual o recurso de Gerenciamento de API está conectado. Os recursos do AMPLS têm um escopo global entre as assinaturas e são responsáveis por gerenciar a consulta e a ingestão de dados em todos os recursos do Azure Monitor. É possível que o AMPLS tenha sido configurado com um modo de acesso Somente Privado especificamente para ingestão de dados. Nesses casos, inclua o recurso Application Insights e o recurso Log Analytics associado no AMPLS. Quando essa adição for feita, os dados do Gerenciamento de API serão ingeridos com sucesso no recurso Application Insights, resolvendo o problema de transmissão de dados de telemetria.
Conteúdo relacionado
- Saiba mais sobre o Azure Application Insights.
- Considere o registro com Hubs de Eventos do Azure.
- Saiba mais sobre como visualizar dados do Application Insights usando o Espaço Gerenciado do Azure para Grafana