Monitorando a integridade das conexões dos aplicativos para fins de resiliência
Para aumentar a resiliência da infraestrutura, configure o monitoramento da integridade das conexões dos seus aplicativos principais . Você pode receber um alerta quando ocorrer um incidente que afete. Este artigo analisa a configuração da pasta de trabalho de integridade das conexões para monitorar interrupções nas conexões dos usuários.
Você pode configurar alertas com base na pasta de trabalho integridade na conexão do Aplicativo. Essa pasta de trabalho permite que os administradores monitorem as solicitações de autenticação dos aplicativos no seu locatário. Ela oferece estes recursos principais:
- Configurar a pasta de trabalho para monitorar todos os aplicativos ou aplicativos individuais com dados quase em tempo real.
- Configure alertas para alterações de padrão de autenticação para que você possa investigar e responder.
- Compare tendências ao longo de um período de tempo. Semana após semana é a configuração padrão da pasta de trabalho.
Observação
Para ver todas as pastas de trabalho disponíveis e os pré-requisitos para usá-las, consulte Como usar pastas de trabalho do Azure Monitor para relatórios.
Durante um evento que afeta, duas coisas podem acontecer:
- O número de conexões de um aplicativo pode cair significativamente porque os usuários não conseguem se conectar.
- O número de falhas de login pode aumentar.
Pré-requisitos
- Um locatário do Microsoft Entra.
- Um usuário atribuído pelo menos à função Administrador da segurança.
- Um workspace do Log Analytics na sua assinatura do Azure para enviar logs para os Logs do Azure Monitor. Saiba como criar um espaço de trabalho do Log Analytics.
- Logs do Microsoft Entra integrados aos logs do Azure Monitor. Saiba como Integrar os logs de entrada do Microsoft Entra ao fluxo do Azure Monitor.
Configurar a pasta de trabalho Integridade das conexões do Aplicativo
Para acessar pastas de trabalho no portal do Azure, selecione ID do Microsoft Entra e selecione Pastas de Trabalho.
Você verá pastas de trabalho em Uso, Acesso Condicional e Solucionar problemas. A pasta de trabalho integridade das conexões do Aplicativo é exibida na seção Integridade. Depois de usar uma pasta de trabalho, ela poderá aparecer na seção Pastas de trabalho recentemente modificadas.
Você pode usar a pasta de trabalho integridade de entrada do Aplicativo para visualizar o que está acontecendo com suas conexões. Conforme mostrado na captura de tela a seguir, a pasta de trabalho apresenta dois grafos.
Na captura de tela anterior, há dois grafos:
- Uso por hora (número de usuários bem-sucedidos). Comparar seu número atual de usuários bem-sucedidos com um período de uso típico ajuda a detectar uma queda no uso que pode exigir investigação. Uma queda na taxa de uso bem-sucedido pode ajudar a detectar problemas de desempenho e utilização que a taxa de falha não consegue detectar. Por exemplo, quando os usuários não conseguem acessar seu aplicativo para tentar entrar, há uma queda no uso, mas nenhuma falha. Consulte a consulta de exemplo para esses dados na próxima seção deste artigo.
- Taxa de falha por hora. Um aumento na taxa de falhas pode indicar um problema com seus mecanismos de autenticação. As medidas de taxa de falha só aparecem quando os usuários podem tentar se autenticar. Quando os usuários não conseguem acesso para fazer a tentativa, não há falhas.
Configurar a consulta e os alertas
No Azure Monitor, você cria regras de alerta e pode executar automaticamente as consultas salvas ou pesquisas de logs personalizadas em intervalos regulares. Você pode configurar um alerta que notifica um grupo específico quando a taxa de uso ou de falha excede um limite especificado.
Use as instruções a seguir para criar alertas de email com base nas consultas refletidas nos grafos. Os scripts de exemplo enviam uma notificação por email quando:
- O uso bem-sucedido cair 90% em relação à mesma hora de dois dias atrás, como no grafo de uso por hora da seção anterior.
- A taxa de falha aumentar em 90% em relação à mesma hora de dois dias atrás, como no grafo de taxa de falha por hora da seção anterior.
Para configurar a consulta subjacente e definir alertas, conclua as etapas a seguir usando a consulta de exemplo como base para sua configuração. Uma explicação da estrutura da consulta é exibida ao final desta seção. Para obter mais informações sobre como criar, exibir e gerenciar alertas de log usando o Azure Monitor, consulte Gerenciar alertas de log.
Na pasta de trabalho, selecione Editar, conforme mostrado na captura de tela a seguir. Selecione o ícone de consulta no canto superior direito do grafo.
Exiba o log de consultas, conforme mostrado na captura de tela a seguir.
Copie um dos scripts de amostra em uma nova consulta Kusto.
Cole a consulta na janela. Selecione Executar. Procure a mensagem Concluído e os resultados da consulta, conforme mostrado na captura de tela a seguir.
Realce a consulta. Selecione + Nova regra de alerta.
Configure as condições de alerta. Conforme mostrado na captura de tela de exemplo a seguir, na seção Condição , em Medida, selecione Linhas de tabela para Medida. Selecione Contagem para Tipo de agregação. Selecione 2 dias para Granularidade de agregação.
- Linhas de tabela. você pode usar o número de linhas retornadas para trabalhar com eventos como logs de eventos do Windows, Syslog e exceções de aplicativo.
- Tipo de agregação. Pontos de dados aplicados com Count.
- Granularidade de agregação. Esse valor define o período que funciona com a Frequência de avaliação.
Em Lógica de Alerta, configure os parâmetros conforme mostrado na captura de tela de exemplo.
- Valor do limite: 0. Esse valor emitirá um alerta para qualquer resultado.
- Frequência de avaliação: 1 hora. Esse valor define o período de avaliação como uma vez por hora para a hora anterior.
Na seção Ações, defina as configurações conforme mostrado na captura de tela de exemplo.
- Clique em Selecionar grupo de ações e adicione o grupo para o qual você deseja receber notificações de alerta.
- Em Personalizar ações, selecione Alertas por email.
- Adicione uma linha do assunto.
Na seção Detalhes, defina as configurações conforme mostrado na captura de tela de exemplo.
- Adicione um nome e uma descrição da Assinatura.
- Selecione o Grupo de recursos ao qual o alerta será adicionado.
- Selecione a Gravidade padrão.
- Selecione Habilitar após a criação se quiser que ele entre imediatamente em operação. Caso contrário, selecioneselecione Ativar mudo de ações.
Na seção Examinar + criar, defina as configurações conforme mostrado na captura de tela de exemplo.
Clique em Salvar. Digite um nome para a consulta. Para Salvar como, selecione Consulta. Em Categoria, selecione Alerta. Em seguida, selecione Salvar.
Refinar as suas consultas e alertas
Para modificar suas consultas e alertas para a eficácia máxima:
- Sempre teste os alertas.
- Modifique a sensibilidade e a frequência do alerta para receber notificações importantes. Se receberem muitos alertas, os administradores poderão deixá-los passar despercebidos e perder algo importante.
- Nos clientes de email do administrador, adicione o email do qual os alertas chegam para a lista de remetentes permitidos. Essa abordagem impede notificações perdidas devido a um filtro de spam em seus clientes de email.
- Por padrão, as consultas de alerta no Azure Monitor só podem incluir resultados das últimas 48 horas.
Scripts de exemplo
Consulta Kusto para aumento da taxa de falha
Na consulta a seguir, detectamos taxas de falha crescentes. Conforme necessário, você pode ajustar a taxa na parte inferior. Representa a alteração percentual no tráfego na última hora em comparação com o tráfego de ontem ao mesmo tempo. Um resultado de 0,5 indica uma diferença de 50% no tráfego.
let today = SigninLogs
| where TimeGenerated > ago(1h) // Query failure rate in the last hour
| project TimeGenerated, UserPrincipalName, AppDisplayName, status = case(Status.errorCode == "0", "success", "failure")
// Optionally filter by a specific application
//| where AppDisplayName == **APP NAME**
| summarize success = countif(status == "success"), failure = countif(status == "failure") by bin(TimeGenerated, 1h) // hourly failure rate
| project TimeGenerated, failureRate = (failure * 1.0) / ((failure + success) * 1.0)
| sort by TimeGenerated desc
| serialize rowNumber = row_number();
let yesterday = SigninLogs
| where TimeGenerated between((ago(1h) – totimespan(1d))..(now() – totimespan(1d))) // Query failure rate at the same time yesterday
| project TimeGenerated, UserPrincipalName, AppDisplayName, status = case(Status.errorCode == "0", "success", "failure")
// Optionally filter by a specific application
//| where AppDisplayName == **APP NAME**
| summarize success = countif(status == "success"), failure = countif(status == "failure") by bin(TimeGenerated, 1h) // hourly failure rate at same time yesterday
| project TimeGenerated, failureRateYesterday = (failure * 1.0) / ((failure + success) * 1.0)
| sort by TimeGenerated desc
| serialize rowNumber = row_number();
today
| join (yesterday) on rowNumber // join data from same time today and yesterday
| project TimeGenerated, failureRate, failureRateYesterday
// Set threshold to be the percent difference in failure rate in the last hour as compared to the same time yesterday
// Day variable is the number of days since the previous Sunday. Optionally ignore results on Sat, Sun, and Mon because large variability in traffic is expected.
| extend day = dayofweek(now())
| where day != time(6.00:00:00) // exclude Sat
| where day != time(0.00:00:00) // exclude Sun
| where day != time(1.00:00:00) // exclude Mon
| where abs(failureRate – failureRateYesterday) > 0.5
Consulta Kusto para queda no uso
Na consulta a seguir, comparamos o tráfego na última hora com o tráfego de ontem ao mesmo tempo. Excluímos sábado, domingo e segunda-feira porque esperamos grande variabilidade no tráfego do dia anterior ao mesmo tempo.
Conforme necessário, você pode ajustar a taxa na parte inferior. Representa a alteração percentual no tráfego na última hora em comparação com o tráfego de ontem ao mesmo tempo. Um resultado de 0,5 indica uma diferença de 50% no tráfego. Ajuste esses valores para que eles se adaptem ao seu modelo de operações de negócios.
Let today = SigninLogs // Query traffic in the last hour
| where TimeGenerated > ago(1h)
| project TimeGenerated, AppDisplayName, UserPrincipalName
// Optionally filter by AppDisplayName to scope query to a single application
//| where AppDisplayName contains "Office 365 Exchange Online"
| summarize users = dcount(UserPrincipalName) by bin(TimeGenerated, 1hr) // Count distinct users in the last hour
| sort by TimeGenerated desc
| serialize rn = row_number();
let yesterday = SigninLogs // Query traffic at the same hour yesterday
| where TimeGenerated between((ago(1h) – totimespan(1d))..(now() – totimespan(1d))) // Count distinct users in the same hour yesterday
| project TimeGenerated, AppDisplayName, UserPrincipalName
// Optionally filter by AppDisplayName to scope query to a single application
//| where AppDisplayName contains "Office 365 Exchange Online"
| summarize usersYesterday = dcount(UserPrincipalName) by bin(TimeGenerated, 1hr)
| sort by TimeGenerated desc
| serialize rn = row_number();
today
| join // Join data from today and yesterday together
(
yesterday
)
on rn
// Calculate the difference in number of users in the last hour compared to the same time yesterday
| project TimeGenerated, users, usersYesterday, difference = abs(users – usersYesterday), max = max_of(users, usersYesterday)
| extend ratio = (difference * 1.0) / max // Ratio is the percent difference in traffic in the last hour as compared to the same time yesterday
// Day variable is the number of days since the previous Sunday. Optionally ignore results on Sat, Sun, and Mon because large variability in traffic is expected.
| extend day = dayofweek(now())
| where day != time(6.00:00:00) // exclude Sat
| where day != time(0.00:00:00) // exclude Sun
| where day != time(1.00:00:00) // exclude Mon
| where ratio > 0.7 // Threshold percent difference in sign-in traffic as compared to same hour yesterday
Criar processos para gerenciar alertas
Depois de configurar a consulta e os alertas, crie processos de negócios para gerenciar os alertas.
- Quem vai monitorar a pasta de trabalho e quando?
- Quando ocorrem alertas, quem os investiga?
- Quais são as necessidades de comunicação? Quem cria as comunicações e quem as recebe?
- Quando ocorre uma interrupção, quais processos empresariais se aplicam?
Próximas etapas
Saiba mais sobre pastas de trabalho