Application Insights
Este guia ensina a usar o Application Insights, recurso do Azure Monitor, para acompanhar saúde, desempenho, falhas, logs e comportamento de aplicações. A ideia é servir tanto para quem está abrindo a ferramenta pela primeira vez quanto para quem precisa de uma cola rápida durante uma investigação.
[!NOTE] As imagens desta página são diagramas próprios criados para a Wiki. Elas não são screenshots reais do Azure Portal, porque isso exigiria acesso ao tenant e ao recurso específico da empresa. Os nomes das telas podem mudar um pouco conforme a Microsoft atualiza o Portal.
O que é o Application Insights
O Application Insights é uma ferramenta de observabilidade de aplicações. Ele recebe telemetria gerada pelo sistema e ajuda a responder perguntas como:
- O sistema está funcionando agora?
- Quantas requisições deram erro?
- Qual endpoint está lento?
- Qual dependência externa falhou?
- Qual exception foi lançada?
- O problema aconteceu depois de um deploy?
- O erro afetou todos os usuários ou apenas um fluxo?
- A API, o banco, a fila ou outro serviço externo está causando a lentidão?
Na prática, ele junta vários tipos de dados:
| Tipo de dado | Exemplo | Para que serve |
|---|---|---|
| Requisições | GET /api/folha/fechamento | Ver volume, status code, duração e taxa de erro. |
| Dependências | SQL, HTTP externo, Storage, Service Bus | Descobrir gargalos fora do código principal. |
| Exceções | NullReferenceException, TimeoutException | Investigar falhas com stack trace e contexto. |
| Traces/logs | logger.LogInformation(...) | Entender o caminho executado pelo sistema. |
| Eventos customizados | FechamentoFolhaIniciado | Medir ações de negócio. |
| Métricas | tempo médio, p95, contagem, CPU | Acompanhar tendência e criar alertas. |
| Disponibilidade | teste de URL por localidade | Saber se uma página/API está respondendo. |
Como pensar nele
Pense em três camadas:
- Coleta: a aplicação usa SDK, OpenTelemetry ou agente para enviar telemetria.
- Armazenamento: a telemetria vai para um recurso Application Insights associado a um Log Analytics workspace.
- Investigação: você usa telas prontas, gráficos, logs KQL, alertas e workbooks para entender o que aconteceu.
Os recursos novos recomendados pela Microsoft são workspace-based, ou seja, armazenam os dados em um Log Analytics workspace. Isso facilita consulta, retenção, controle de acesso, alertas e integração com outros dados do Azure Monitor.
Acesso no Portal Azure
O caminho mais comum é:
- Acesse o Azure Portal.
- Pesquise por Application Insights.
- Abra o recurso da aplicação desejada.
- Use o menu lateral para alternar entre Overview, Logs, Failures, Performance, Live Metrics, Application Map, Availability, Metrics, Alerts e Workbooks.
Também é possível acessar pelo recurso da aplicação, como App Service, Function App ou Container App, quando ele está conectado ao Application Insights.
Visão geral das telas principais
| Tela | O que mostra | Quando usar |
|---|---|---|
| Overview | Resumo de requisições, falhas, tempo de resposta e links para investigação. | Primeiro lugar para olhar quando alguém diz que o sistema está com problema. |
| Pesquisar / Transaction Search | Lista de eventos individuais: requests, exceptions, traces, dependencies e page views. | Quando você quer achar uma transação específica, filtrar por período ou abrir detalhes ponta a ponta. |
| Logs | Consulta KQL sobre as tabelas do Application Insights e do workspace. | Quando a pergunta é específica e exige filtro, agregação, join ou agrupamento. |
| Falhas / Failures | Requests com erro, exceções e dependências que falharam. | Para investigar erro 500, exception, timeout, dependência indisponível ou aumento de falhas. |
| Desempenho / Performance | Operações lentas, percentis, dependências e duração por endpoint. | Para investigar lentidão, picos de duração ou endpoint que piorou depois de deploy. |
| Live Metrics | Pulso quase em tempo real da aplicação. | Durante deploy, teste de carga, incidente em andamento ou validação de correção. |
| Application Map | Mapa de componentes e dependências conectadas. | Para ver topologia, serviços chamados, gargalos e falhas entre componentes. |
| Metrics | Gráficos de métricas com agregações e dimensões. | Para acompanhar tendência e montar alerta baseado em métrica. |
| Availability | Testes de disponibilidade de URLs/endpoints. | Para saber se a aplicação responde de fora do ambiente e por localidade. |
| Alerts | Regras de alerta e histórico de disparos. | Para notificar equipe quando erro, latência ou indisponibilidade passam de um limite. |
| Workbooks | Relatórios interativos customizados. | Para criar painéis com KQL, métricas, filtros e gráficos para rotinas da equipe. |
| Usage | Usuários, sessões, eventos, funis e retenção. | Mais usado em aplicações web/front-end para entender uso e comportamento. |
Pesquisar x Logs
As duas telas investigam dados, mas resolvem problemas diferentes.
| Recurso | Use quando | Exemplo |
|---|---|---|
| Pesquisar / Transaction Search | Você quer procurar itens individuais sem escrever query. | ”Ache a exception que aconteceu as 14h32” ou “abra a transação dessa requisição”. |
| Logs | Você quer responder uma pergunta precisa com KQL. | ”Agrupe erros por endpoint nos últimos 30 minutos” ou “calcule p95 de duração por dependência”. |
Regra prática:
- Comece por Failures ou Performance se o problema for claro: erro ou lentidão.
- Use Pesquisar para abrir uma ocorrência específica e navegar pela transação.
- Use Logs quando precisar cruzar, contar, agrupar, comparar períodos ou montar evidência.
Conceitos essenciais
Connection string
A connection string identifica para onde a telemetria será enviada. Ela substituiu o uso isolado da instrumentation key em configurações modernas.
Boa prática:
- Em produção, configure por variável de ambiente, por exemplo
APPLICATIONINSIGHTS_CONNECTION_STRING. - Não grave connection string diretamente no código-fonte.
- Use uma connection string por ambiente quando precisar separar Desenvolvimento, Homologação e Produção.
Instrumentation key
A instrumentation key ainda aparece em muitos materiais e recursos legados. Ela identifica o recurso do Application Insights, mas a recomendação atual é usar a connection string, porque ela também carrega endpoints e fica mais adequada para cenários com regiões e configurações modernas.
Operação, correlação e transaction
Uma requisição normalmente gera vários itens:
- request de entrada;
- logs/traces;
- chamadas HTTP externas;
- consultas SQL;
- mensagens em fila;
- exceptions;
- eventos customizados.
O Application Insights tenta correlacionar esses itens por campos como OperationId, ParentId e contexto distribuído. Quando a correlação está correta, você consegue abrir uma requisição e ver a transação completa.
Cloud role name
O cloud role name é o nome lógico do componente que enviou a telemetria, como webfopag-api, pontofopag-worker ou integracao-epays. Ele é muito importante para Application Map, filtros e alertas.
Se todos os serviços aparecem com o mesmo nome, o mapa fica confuso. Configure nomes diferentes por aplicação/worker.
Sampling
Sampling reduz o volume de telemetria enviada. Ele é útil para custo e performance, mas muda a forma de interpretar contagens.
Exemplo: se a aplicação recebe muito tráfego, o SDK pode enviar uma amostra representativa em vez de todos os eventos. Isso ajuda a controlar custo, mas uma consulta que conta linhas pode não representar exatamente o número bruto de eventos se você ignorar os campos de amostragem.
Boa prática:
- Mantenha exceptions e falhas importantes visíveis.
- Ajuste sampling com cuidado em sistemas de baixo volume, onde perder eventos pode atrapalhar investigação.
- Documente a política de sampling usada por ambiente.
Retenção e custo
Logs geram custo de ingestão e armazenamento. Antes de aumentar volume, pense:
- Quais logs são realmente úteis em produção?
- Existem logs repetitivos demais?
- O nível
Informationestá exagerado? - Dados sensíveis estão sendo enviados sem necessidade?
- A retenção do workspace está adequada?
Observabilidade boa não é “logar tudo”. É registrar o suficiente para diagnosticar com segurança.
Tabelas de logs mais usadas
| Pergunta | Tabela comum em workspace-based | Nome comum em recurso antigo/app scoped |
|---|---|---|
| Quais requisições chegaram? | AppRequests | requests |
| Quais dependências foram chamadas? | AppDependencies | dependencies |
| Quais exceptions ocorreram? | AppExceptions | exceptions |
| Quais logs foram enviados? | AppTraces | traces |
| Quais eventos customizados ocorreram? | AppEvents | customEvents |
| Quais page views ocorreram? | AppPageViews | pageViews |
| Quais métricas customizadas existem? | AppMetrics | customMetrics |
| Quais testes de disponibilidade rodaram? | AppAvailabilityResults | availabilityResults |
| Quais timings do navegador foram coletados? | AppBrowserTimings | browserTimings |
[!TIP] Se uma query não encontrar
AppRequests, tente procurar a tabela equivalente sem prefixo, comorequests. Isso depende do tipo de recurso, contexto de consulta e modelo usado.
KQL para iniciantes
KQL significa Kusto Query Language. Ele é a linguagem usada no Logs.
Estrutura básica:
Tabela
| where TimeGenerated > ago(1h)
| where Campo == "valor"
| summarize Quantidade = count() by AlgumaDimensao
| order by Quantidade desc
Operadores que você mais vai usar:
| Operador | Para que serve | Exemplo |
|---|---|---|
where | Filtrar linhas. | where Success == false |
project | Escolher colunas. | project TimeGenerated, Name, DurationMs |
summarize | Agregar dados. | summarize count() by ResultCode |
order by | Ordenar resultado. | order by DurationMs desc |
take | Limitar linhas. | take 50 |
extend | Criar coluna calculada. | extend Seconds = DurationMs / 1000 |
bin | Agrupar por intervalo de tempo. | bin(TimeGenerated, 5m) |
join | Cruzar tabelas. | requests + exceptions por OperationId |
Queries prontas
Requisições com erro nos últimos 30 minutos
AppRequests
| where TimeGenerated > ago(30m)
| where Success == false
| project TimeGenerated, Name, Url, ResultCode, DurationMs, OperationId
| order by TimeGenerated desc
Erros por endpoint
AppRequests
| where TimeGenerated > ago(24h)
| where Success == false
| summarize Erros = count() by Name, ResultCode
| order by Erros desc
Taxa de erro por intervalo
AppRequests
| where TimeGenerated > ago(6h)
| summarize Total = count(), Erros = countif(Success == false) by bin(TimeGenerated, 15m)
| extend TaxaErroPercentual = round(100.0 * Erros / Total, 2)
| order by TimeGenerated asc
Requests mais lentas
AppRequests
| where TimeGenerated > ago(24h)
| project TimeGenerated, Name, DurationMs, ResultCode, Success, OperationId
| order by DurationMs desc
| take 50
Percentil p95 por endpoint
AppRequests
| where TimeGenerated > ago(24h)
| summarize P50 = percentile(DurationMs, 50), P95 = percentile(DurationMs, 95), P99 = percentile(DurationMs, 99), Total = count() by Name
| order by P95 desc
Exceptions mais frequentes
AppExceptions
| where TimeGenerated > ago(24h)
| summarize Ocorrencias = count(), Ultima = max(TimeGenerated) by ExceptionType, Message
| order by Ocorrencias desc
Logs de uma transação pelo OperationId
let operationId = "COLE_AQUI_O_OPERATION_ID";
union withsource=Tabela AppRequests, AppDependencies, AppExceptions, AppTraces, AppEvents
| where OperationId == operationId
| project TimeGenerated, Tabela, Name, Message, Success, ResultCode, DurationMs, OperationId, ParentId
| order by TimeGenerated asc
Dependências externas com falha
AppDependencies
| where TimeGenerated > ago(24h)
| where Success == false
| summarize Falhas = count(), P95 = percentile(DurationMs, 95) by DependencyType, Target, Name
| order by Falhas desc
SQL ou HTTP externo mais lento
AppDependencies
| where TimeGenerated > ago(24h)
| summarize Chamadas = count(), P95 = percentile(DurationMs, 95), Maximo = max(DurationMs) by DependencyType, Target, Name
| order by P95 desc
| take 30
Traces com erro ou warning
AppTraces
| where TimeGenerated > ago(24h)
| where SeverityLevel >= 2
| project TimeGenerated, SeverityLevel, Message, OperationId, Properties
| order by TimeGenerated desc
Disponibilidade por localidade
AppAvailabilityResults
| where TimeGenerated > ago(24h)
| summarize Total = count(), Falhas = countif(Success == false), Disponibilidade = round(100.0 * countif(Success == true) / count(), 2) by Name, Location
| order by Disponibilidade asc
Comparar antes e depois de um deploy
Troque os horários pelos horários reais do deploy.
let antesInicio = datetime(2026-06-30 08:00:00);
let antesFim = datetime(2026-06-30 09:00:00);
let depoisInicio = datetime(2026-06-30 09:00:00);
let depoisFim = datetime(2026-06-30 10:00:00);
AppRequests
| where TimeGenerated between (antesInicio .. depoisFim)
| extend Janela = case(
TimeGenerated between (antesInicio .. antesFim), "Antes",
TimeGenerated between (depoisInicio .. depoisFim), "Depois",
"Fora"
)
| where Janela != "Fora"
| summarize Total = count(), Erros = countif(Success == false), P95 = percentile(DurationMs, 95) by Janela, Name
| order by Name asc, Janela asc
Falhas
A tela Failures é uma das mais importantes para suporte e desenvolvimento.
Ela ajuda a responder:
- Quais operações estão falhando?
- Qual status code aparece mais?
- Qual exception está mais recorrente?
- A falha está em request, dependência ou exceção?
- Quando começou?
- O erro cresceu depois de um deploy?
- Existe uma transação exemplo para abrir?
Fluxo recomendado:
- Abra Failures.
- Ajuste o período no topo da tela.
- Veja se o problema aparece em requests, dependencies ou exceptions.
- Ordene por contagem ou impacto.
- Abra um item representativo.
- Clique na transação de exemplo para ver detalhes ponta a ponta.
- Copie o
OperationIdse precisar ir para Logs.
O que observar:
| Sinal | Possível causa |
|---|---|
Muitos 500 | Erro não tratado no servidor. |
Muitos 401 ou 403 | Autenticação, token, permissão, configuração de app registration. |
Muitos 404 | Rota incorreta, link quebrado, deploy incompleto ou cliente chamando endpoint antigo. |
| Dependência HTTP falhando | API externa fora, DNS, firewall, timeout ou contrato alterado. |
| Dependência SQL lenta | Query pesada, lock, índice, plano ruim ou banco sob carga. |
| Exception repetida com mesma mensagem | Bug determinístico em um fluxo específico. |
Desempenho
A tela Performance ajuda a entender lentidão.
Termos importantes:
| Termo | Significado |
|---|---|
| Média | Soma das durações dividida pela quantidade. Pode esconder picos. |
| P50 | Metade das requisições foi mais rápida que esse valor. |
| P95 | 95% das requisições foram mais rápidas que esse valor. Bom para experiência real. |
| P99 | Mostra extremos. Útil para caudas longas e incidentes pontuais. |
| Throughput | Volume de chamadas por intervalo. |
| Dependency duration | Tempo gasto em chamadas externas, banco, fila, storage, HTTP, etc. |
Como investigar lentidão:
- Abra Performance.
- Selecione o período do incidente.
- Ordene operações por duração ou p95.
- Abra a operação lenta.
- Veja se o tempo está no código da aplicação ou em dependências.
- Confira exemplos de transação lenta.
- Use Logs para comparar p95 antes/depois.
Evite olhar apenas a média. Um endpoint pode ter média aceitável, mas p95 alto, o que significa que uma parte dos usuários sofre com lentidão.
Live Metrics
Live Metrics mostra dados quase em tempo real, geralmente com atraso pequeno. É excelente para acompanhar:
- deploy em andamento;
- teste manual de uma correção;
- teste de carga;
- aumento súbito de erro;
- CPU/memória sob pressão;
- request rate;
- exceptions por segundo;
- dependência lenta ou falhando.
Use Live Metrics quando a pergunta for: “o que está acontecendo agora?”
Não use Live Metrics como substituto de Logs quando a pergunta for histórica, detalhada ou exige agregação complexa.
Boas práticas:
- Abra antes de iniciar um deploy crítico.
- Tenha um endpoint de saúde para verificar resposta.
- Observe se exceptions crescem logo após a publicação.
- Compare request rate com falhas. Uma queda de erro pode significar correção, mas também pode significar queda de tráfego.
Application Map
O Application Map mostra a aplicação como componentes conectados. Ele é muito útil quando o sistema tem:
- API chamando outra API;
- worker chamando fila;
- aplicação chamando SQL;
- integrações HTTP externas;
- múltiplos serviços no mesmo fluxo;
- front-end e back-end instrumentados.
O mapa ajuda a visualizar:
- qual componente está com erro;
- qual dependência está lenta;
- qual serviço chama qual;
- gargalos entre camadas;
- aumento de falhas em conexões específicas.
Para o mapa ficar bom, configure corretamente:
- cloud role name por serviço;
- correlação distribuída;
- instrumentação de dependências;
- connection string correta por ambiente.
Métricas
Métricas são números agregados ao longo do tempo. Elas são mais baratas e rápidas para gráficos e alertas simples.
Métricas comuns:
| Métrica | O que indica |
|---|---|
| Requests | Volume de chamadas. |
| Failed requests | Falhas em requests. |
| Server response time | Tempo de resposta do servidor. |
| Dependency calls | Volume de chamadas externas. |
| Dependency failures | Falhas em dependências. |
| Exceptions | Quantidade de exceções. |
| Availability | Resultado de testes de disponibilidade. |
| Users / Sessions | Uso da aplicação, quando front-end está instrumentado. |
Como acompanhar métricas:
- Abra Metrics.
- Escolha o escopo: recurso Application Insights.
- Escolha a métrica.
- Defina agregação:
Avg,Count,Max,Min, percentil quando disponível. - Divida por dimensão se fizer sentido, por exemplo endpoint, status code ou role.
- Salve em Dashboard ou Workbook se for acompanhamento recorrente.
Para incidente, prefira gráficos com período curto. Para tendência, use períodos maiores.
Availability
Availability cria testes externos para verificar se uma URL responde.
Exemplo de uso:
- monitorar
/health; - monitorar página de login;
- monitorar endpoint público de API;
- validar disponibilidade por regiões diferentes;
- alertar quando o sistema fica indisponível.
Boa prática para endpoint de saúde:
- Responder rápido.
- Não depender de operações pesadas.
- Validar dependências críticas quando isso fizer sentido.
- Retornar status HTTP coerente.
- Não expor dados sensíveis.
Ao criar um teste, configure:
| Configuração | Recomendação |
|---|---|
| URL | Use endpoint estável e representativo. |
| Locations | Use mais de uma localidade para reduzir falso positivo. |
| Frequency | Balanceie rapidez de detecção e custo/ruído. |
| Timeout | Defina limite realista. |
| Success criteria | Valide status code e, se necessário, conteúdo esperado. |
| Alert | Vincule a um action group com responsáveis. |
Alertas
Alertas transformam sinais em notificações.
Tipos comuns:
| Tipo | Quando usar |
|---|---|
| Metric alert | Latência alta, falhas, disponibilidade baixa, exceções acima do limite. |
| Log alert | Condição complexa em KQL, como erro específico, exceção por cliente ou ausência de evento esperado. |
| Availability alert | URL indisponível em testes de disponibilidade. |
| Activity log alert | Mudanças administrativas no recurso Azure. |
Exemplos de alertas úteis:
| Alerta | Condição sugerida |
|---|---|
| Erro alto | Failed requests acima do normal por 5 ou 10 minutos. |
| Latência alta | P95 acima do limite aceitável. |
| API externa falhando | Dependências HTTP com Success == false. |
| Banco lento | Dependências SQL com p95 acima do limite. |
| Site fora | Availability menor que 95% em janela curta. |
| Sem telemetria | Requests igual a zero quando deveria haver tráfego. |
Cuidados:
- Evite alerta que dispara todo dia e ninguém olha.
- Defina severidade coerente.
- Escreva descrição com link para dashboard/query.
- Inclua action group certo.
- Revise limites após aprender o comportamento normal do sistema.
Workbooks e dashboards
Workbooks são painéis interativos. Eles podem misturar:
- texto explicativo;
- parâmetros;
- métricas;
- queries KQL;
- gráficos;
- tabelas;
- links de investigação.
Use workbooks para rotinas como:
- painel de saúde por ambiente;
- acompanhamento pós-deploy;
- falhas por integração;
- desempenho por endpoint;
- disponibilidade por sistema;
- visão executiva de incidentes.
Sugestão de workbook inicial:
| Bloco | Conteúdo |
|---|---|
| Filtro | Ambiente, período, cloud role. |
| Saúde geral | total de requests, taxa de erro, p95. |
| Falhas | top endpoints com erro, exceptions mais frequentes. |
| Dependências | top dependências lentas e dependências com falha. |
| Disponibilidade | resultado por localidade. |
| Links | query pronta, Application Map, Live Metrics, release/deploy. |
Configurando uma aplicação
Criar o recurso
- No Azure Portal, crie ou abra um Log Analytics workspace.
- Crie um recurso Application Insights.
- Prefira o modo workspace-based.
- Escolha assinatura, resource group, região e workspace corretos.
- Copie a connection string.
- Configure a aplicação para enviar telemetria.
Configurar por variável de ambiente
Nome comum:
APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=...;IngestionEndpoint=...
Em ambientes Azure, configure em:
- App Service: Configuration > Application settings.
- Function App: Configuration > Application settings.
- Container Apps: Environment variables.
- Kubernetes: secret/config map.
- Pipeline: variável segura por ambiente.
.NET moderno com OpenTelemetry
Exemplo conceitual para ASP.NET Core:
using Azure.Monitor.OpenTelemetry.AspNetCore;
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddOpenTelemetry()
.UseAzureMonitor();
var app = builder.Build();
app.MapGet("/health", () => Results.Ok("ok"));
app.Run();
Com a variável APPLICATIONINSIGHTS_CONNECTION_STRING, o SDK consegue encontrar o destino da telemetria sem gravar segredo no código.
.NET legado com SDK Application Insights
Em projetos existentes, você pode encontrar:
builder.Services.AddApplicationInsightsTelemetry();
Isso ainda existe em muitos sistemas. Para projeto novo, avalie OpenTelemetry e a Azure Monitor OpenTelemetry Distro, conforme recomendação atual da Microsoft.
JavaScript no front-end
Exemplo conceitual:
import { ApplicationInsights } from '@microsoft/applicationinsights-web';
const appInsights = new ApplicationInsights({
config: {
connectionString: window.__APP_INSIGHTS_CONNECTION_STRING__,
enableAutoRouteTracking: true
}
});
appInsights.loadAppInsights();
appInsights.trackPageView();
Cuidados no front-end:
- A connection string de browser não deve ser tratada como segredo absoluto, porque fica no cliente.
- Nunca envie CPF, token, senha, holerite, dados bancários ou conteúdo sensível em propriedades de telemetria.
- Use eventos customizados com nomes de negócio, mas sem dados pessoais.
Logs bons em código
Um log bom ajuda a investigar sem expor segredo.
Ruim:
Erro ao salvar.
Melhor:
Falha ao salvar fechamento de folha. EmpresaId={EmpresaId} Competencia={Competencia} OperationId={OperationId}
Evite:
- senha;
- token;
- cookie;
- CPF completo;
- dados bancários;
- payload inteiro sem necessidade;
- arquivo completo enviado pelo usuário;
- dados pessoais sensíveis.
Prefira:
- ids internos;
- nome da operação;
- etapa do fluxo;
- status de negócio;
- duração;
- quantidade processada;
- correlation id;
- mensagem clara.
Eventos customizados
Eventos customizados ajudam a medir ações de negócio.
Exemplos:
| Evento | Quando registrar |
|---|---|
FechamentoFolhaIniciado | Usuário iniciou rotina de fechamento. |
FechamentoFolhaFinalizado | Rotina concluiu com sucesso. |
IntegracaoEpaysEnviada | Sistema enviou lote para ePays. |
ArquivoLegalGerado | Arquivo foi gerado. |
CalculoReprocessado | Reprocessamento foi solicitado. |
Boas práticas:
- Use nomes estáveis.
- Evite colocar valor variável no nome do evento.
- Coloque variáveis em propriedades.
- Padronize propriedades entre sistemas.
- Não envie dados sensíveis.
Roteiros de investigação
Cenário 1: usuário reportou erro
- Pergunte horário aproximado, usuário, tela e ação.
- Abra Failures no período informado.
- Filtre por endpoint ou operação se souber.
- Abra uma exception/request de exemplo.
- Copie
OperationId. - Rode a query de transação no Logs.
- Veja request, traces, exceptions e dependencies na ordem do tempo.
- Verifique se erro vem do código, banco, API externa ou autenticação.
Cenário 2: sistema está lento
- Abra Performance.
- Selecione período do relato.
- Veja endpoints com maior p95.
- Abra uma amostra lenta.
- Analise dependências da transação.
- No Logs, compare p95 antes e depois.
- Confira se houve aumento de volume, dependência lenta ou erro intermitente.
Cenário 3: integração externa falhando
- Abra Application Map para localizar dependência.
- Abra Failures > Dependencies.
- Filtre por target/nome da dependência.
- Veja status code, duração e quantidade.
- Use
AppDependenciespara agrupar porTarget,NameeResultCode. - Confira se a falha é timeout, DNS, HTTP 4xx, HTTP 5xx ou autenticação.
Cenário 4: acompanhar deploy
- Antes do deploy, abra Live Metrics.
- Deixe visível request rate, failed requests e exceptions.
- Durante o deploy, observe queda de tráfego ou aumento de exceptions.
- Depois do deploy, compare período antes/depois com KQL.
- Se houver falha, salve uma transação exemplo e o horário exato.
Cenário 5: não apareceu log nenhum
Verifique:
- A aplicação está usando a connection string correta?
- A variável de ambiente existe no ambiente certo?
- O recurso está no tenant/assinatura esperados?
- A aplicação foi reiniciada após configurar variável?
- Há firewall/proxy bloqueando ingestão?
- O sampling está descartando demais?
- O período do Portal está correto?
- A query está na tabela certa (
AppRequestsxrequests)? - O ambiente está recebendo tráfego?
Checklist rápido para incidentes
- Período correto selecionado.
- Ambiente correto selecionado.
- Application Insights correto selecionado.
- Request com erro identificada.
OperationIdsalvo.- Exceptions revisadas.
- Dependências revisadas.
- P95 comparado com comportamento normal.
- Volume de requests comparado com o normal.
- Deploy recente verificado.
- Alertas/histórico consultados.
- Evidências registradas no chamado.
Checklist de boas práticas
- Usar connection string por ambiente.
- Não versionar connection string em código.
- Configurar cloud role name por componente.
- Habilitar correlação distribuída.
- Criar endpoint de health.
- Criar alertas com limites revisados.
- Ter queries prontas para incidentes.
- Ter workbook de saúde da aplicação.
- Evitar PII e segredos nos logs.
- Revisar sampling e retenção.
- Documentar dono do recurso e action group.
- Validar telemetria após deploy.
Glossário
| Termo | Explicação simples |
|---|---|
| Telemetria | Dados enviados pela aplicação para observabilidade. |
| Request | Requisição recebida pela aplicação. |
| Dependency | Chamada feita pela aplicação para outro recurso. |
| Exception | Erro lançado pelo código. |
| Trace | Log textual enviado pela aplicação. |
| Metric | Número agregado ao longo do tempo. |
| OperationId | Identificador que conecta itens da mesma transação. |
| Sampling | Amostragem para reduzir volume de dados. |
| Workspace | Local onde logs ficam armazenados e consultáveis. |
| KQL | Linguagem de consulta usada no Logs. |
| P95 | Percentil 95 de duração, muito usado para medir experiência real. |
| Action group | Grupo que define quem recebe alerta e por qual canal. |
Links de referência
- Application Insights overview
- Criar recurso workspace-based do Application Insights
- Connection strings no Application Insights
- Azure Monitor OpenTelemetry
- Modelo de dados do Application Insights
- Transaction search and diagnostics
- Failures and performance views
- Live Metrics
- Application Map
- Availability tests
- Azure Monitor Logs e consultas KQL
- Métricas no Azure Monitor
- Alertas no Azure Monitor
- Workbooks no Azure Monitor