Compartilhar via


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

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. A captura de tela a seguir mostra a Galeria de Pastas de Trabalho no portal do Azure.

Captura de tela que mostra a galeria de pastas de trabalho no portal do Azure.

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.

Captura de tela que mostra os grafos de integridade das conexões.

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.

  1. 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.

    Captura de tela que mostra a edição da pasta de trabalho.

  2. Exiba o log de consultas, conforme mostrado na captura de tela a seguir.

    Captura de tela que mostra o log da consulta.

  3. Copie um dos scripts de amostra em uma nova consulta Kusto.

  4. 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.

    Captura de tela que mostra os resultados da consulta executada.

  5. Realce a consulta. Selecione + Nova regra de alerta.

    Captura de tela que mostra a tela Nova regra de alerta.

  6. 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.

    Captura de tela que mostra a tela Configurar alertas.

    • 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.
  7. Em Lógica de Alerta, configure os parâmetros conforme mostrado na captura de tela de exemplo.

    Captura de tela mostrando a tela de lógica de alerta.

    • 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.
  8. Na seção Ações, defina as configurações conforme mostrado na captura de tela de exemplo.

    Captura de tela mostrando a tela Criar uma regra de alerta.

    • 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.
  9. Na seção Detalhes, defina as configurações conforme mostrado na captura de tela de exemplo.

    Captura de tela mostrando a seção Detalhes.

    • 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.
  10. Na seção Examinar + criar, defina as configurações conforme mostrado na captura de tela de exemplo.

    Captura de tela mostrando a seção Revisar + criar.

  11. Clique em Salvar. Digite um nome para a consulta. Para Salvar como, selecione Consulta. Em Categoria, selecione Alerta. Em seguida, selecione Salvar.

    Captura de tela que mostra o botão Salvar consulta.

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