Monitore eventos agendados para suas VMs do Windows
Aplica-se a: VMs ✔️ VMs do Windows ✔️ Conjuntos de dimensionamento flexíveis ✔️ Conjuntos de dimensionamento uniformes
As atualizações são aplicadas a diferentes partes do Azure todos os dias, para manter os serviços em execução neles seguros e atualizados. Além das atualizações planejadas, eventos não planejados talvez ocorram também. Por exemplo, se qualquer degradação ou falha de hardware for detectada, talvez os serviços do Azure precisem executar manutenção não planejada. Usando migração ao vivo, atualizações de preservação de memória e mantendo um limite rigoroso no impacto das atualizações, permite que esses eventos sejam quase transparentes para os clientes. No máximo, eles podem causar alguns segundos de congelamento da máquina virtual. No entanto, para alguns aplicativos, até mesmo alguns segundos de congelamento da máquina virtual podem causar impacto. Saber com antecedência sobre as próximas manutenções do Azure é importante para garantir a melhor experiência para esses aplicativos. O serviço de Eventos Agendados fornece uma interface programática para você ser notificado sobre manutenções futuras e permite que você lide com a manutenção com elegância.
Esse artigo mostra como você pode usar eventos agendados para ser notificado sobre eventos de manutenção que podem afetar suas VMs e criar alguma automação básica que pode ajudar no monitoramento e na análise.
Rotear eventos agendados para o Log Analytics
Os Eventos Agendados estão disponíveis como parte do Serviço de Metadados de Instância do Azure, que está disponível em todas as máquinas virtuais do Azure. Os clientes podem escrever a automação para consultar o ponto de extremidade das máquinas virtuais deles a fim de encontrar notificações de manutenção agendada e realizar mitigações, como salvar o estado e tirar a máquina virtual de rotação. É recomendável criar a automação para registrar os Eventos Agendados para que você possa ter um log de auditoria dos eventos de manutenção do Azure.
Nesse artigo, explicaremos como capturar eventos de manutenção agendados para o Análise de Logs. Em seguida, acionamos algumas ações básicas de notificação, como enviar um email para sua equipe e obter uma visão histórica de todos os eventos que afetaram suas máquinas virtuais. Para agregação e automação de eventos, usamos Análise de Logs, mas você pode usar qualquer solução de monitoramento para coletar esses logs e acionar a automação.
Pré-requisitos
Para este exemplo, você precisa criar uma Máquina Virtual Windows em um Conjunto de Disponibilidade. Os Eventos Agendados fornecem notificações sobre as alterações que podem afetar qualquer uma das máquinas virtuais em seu conjunto de disponibilidade, Serviço de Nuvem, Conjunto de Dimensionamento de Máquinas Virtuais ou VMs autônomas. Um serviço é executado para pesquisar eventos agendados em uma das VMs que atuam como coletoras, para obter eventos para todas as outras VMs no conjunto de disponibilidade.
Não exclua o grupo de recursos do grupo ao final do tutorial.
Você também precisa criar um espaço de trabalho do Log Analytics que usamos para agregar informações das VMs no conjunto de disponibilidade.
Configurar o ambiente
Agora você deve ter duas VMs iniciais em um conjunto de disponibilidade. Agora, vamos precisar criar uma terceira VM, chamada myCollectorVM
, no mesmo conjunto de disponibilidade.
New-AzVm `
-ResourceGroupName "myResourceGroupAvailability" `
-Name "myCollectorVM" `
-Location "East US" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-SecurityGroupName "myNetworkSecurityGroup" `
-OpenPorts 3389 `
-PublicIpAddressName "myPublicIpAddress3" `
-AvailabilitySetName "myAvailabilitySet" `
-Credential $cred
Baixe o arquivo .zip de instalação do projeto do GitHub.
Conecte-se a myCollectorVM e copie o arquivo .zip para a máquina virtual e extraia todos os arquivos. Em sua VM, abra um prompt do PowerShell. Mova o prompt para a pasta que contém
SchService.ps1
, por exemploPS C:\Users\azureuser\AzureScheduledEventsService-master\AzureScheduledEventsService-master\Powershell>
, e configure o serviço..\SchService.ps1 -Setup
Inicie o serviço.
.\SchService.ps1 -Start
Valide o status do serviço e verifique se ele está em execução.
.\SchService.ps1 -status
O comando de validação deve retornar
Running
.
Agora o serviço começará a sondar, a cada 10 segundos, se há eventos agendados e os aprovará para agilizar a manutenção. Congelar, Reinicializar, Reimplantar e Apropriar são os eventos capturados por Eventos de agendamento. Você pode estender o script para disparar algumas mitigações antes de aprovar o evento.
Quando qualquer um dos eventos acima for capturado pelo serviço Eventos Agendados, ele será carregado no Status do Evento do Log de Eventos do Aplicativo, Tipo de Evento, Recursos (nomes de máquina virtual) e NotBefore (período de notificação mínimo). É possível localizar os eventos com a ID 1234 no Log de Eventos do Aplicativo.
Depois que o serviço for configurado e iniciado, ele registrará eventos nos logs de aplicativos do Windows. Para verificar se isso funciona, reinicie uma das máquinas virtuais no conjunto de disponibilidade e você verá um evento sendo registrado no visualizador de Eventos em Logs do Windows > Log de aplicativo, mostrando a VM reiniciada.
Quando eventos são capturados pelo serviço Eventos Agendados, ele será registrado no log de eventos do aplicativo com Status do Evento, Tipo de Evento, Recursos (nome da VM) e NotBefore (período mínimo de notificação). É possível localizar os eventos com a ID 1234 no Log de Eventos do Aplicativo.
Observação
Neste exemplo, as máquinas virtuais estão em um conjunto de disponibilidade, que nos permitia designar uma única máquina virtual como o coletor para escutar e rotear eventos agendados para nosso workspace do Log Analytics. Se você tiver máquinas virtuais autônomas, poderá executar o serviço em cada máquina virtual e, em seguida, conectá-las individualmente ao seu workspace do Log Analytics.
Para nossa configuração, escolhemos o Windows, mas você pode criar uma solução semelhante no Linux.
A qualquer momento, é possível parar/remover o serviço Evento Agendado usando as opções –stop
e –remove
.
Conectar ao Espaço de trabalho do Log Analytics
Agora queremos conectar um workspace do Log Analytics à VM do coletor. O workspace do Log Analytics atua como um repositório e vamos configurar a coleta de log de eventos para capturar os logs de aplicativo da VM do coletor.
Para rotear os Eventos Agendados para o Log de Eventos, que é salvo como Log do Aplicativo pelo nosso serviço, você precisará conectar sua máquina virtual ao seu espaço de trabalho do Análise de logs.
Configurar a coleta de dados
Abra o Portal do Azure.
Na barra de pesquisa na parte superior, digite espaço de trabalho do Análise de logs e selecione-o nos resultados da pesquisa.
Escolha o espaço de trabalho que você criou para abrir sua página.
Em Configurações, selecione Agentes e clique em Máquinas Virtuais.
Na guia Servidores do Windows, clique em Regras de coleta de dados.
Entre na aba Coletar e Entregar e clique em Adicionar fonte de dados
Na guia Fonte de dados, selecione Logs de eventos do Windows no menu suspenso.
Selecione os logs de eventos que você gostaria de coletar. Garantir que ERROR, WARNING, e INFORMATION são selecionados.
Clique em Avançar : Destino >
Na aba Destino, clique em Adicionar destino.
Preencha as seções Tipo de destino, Assinatura e Detalhes do destino com sua VM coletora e os detalhes de sua assinatura.
Depois de selecionar a VM correta, o agente do Microsoft Monitoring será instalado automaticamente na sua máquina virtual. Levará alguns minutos para conectar sua VM ao workspace e instalar a extensão.
Observação
Há algum atraso e pode levar até 10 minutos para que o log esteja disponível.
Criar uma regra de alerta com o Azure Monitor
Depois que os eventos forem enviados por push para o Log Analytics, você poderá executar a consulta a seguir para procurar os eventos agendados.
Na parte superior da página, selecione Logs e cole o seguinte na caixa de texto:
Event | where EventLog == "Application" and Source contains "AzureScheduledEvents" and RenderedDescription contains "Scheduled" and RenderedDescription contains "EventStatus" | project TimeGenerated, RenderedDescription | extend ReqJson= parse_json(RenderedDescription) | extend EventId = ReqJson["EventId"] ,EventStatus = ReqJson["EventStatus"] ,EventType = ReqJson["EventType"] ,NotBefore = ReqJson["NotBefore"] ,ResourceType = ReqJson["ResourceType"] ,Resources = ReqJson["Resources"] | project-away RenderedDescription,ReqJson
Selecione Salvar e, em seguida, digite
ogQuery
para o nome, deixe Consulta como o tipo, digiteVMLogs
como a Categoria e, em seguida, selecione Salvar.Selecione Nova regra de alerta.
Na página Criar regra, deixe
collectorworkspace
como o Recurso.Em Condição, selecione a entrada Sempre que a pesquisa de logs do cliente tiver o <logon indefinido>. A página Configurar lógica de sinal será aberta.
Em Valor do limite, insira 0 e, em seguida, selecione Concluído.
Em Ações, selecione Criar grupo de ações. A página Adicionar grupo de ações será aberta.
Em Nome do grupo de ações, digite myActionGroup.
Em Nome curto, digite myActionGroup.
Em Grupo de recursos, selecione myResourceGroupAvailability.
Em Ações, em NOME DA AÇÃO, digite Email e, em seguida, selecione Email/SMS/Push/Voz. A página Email/SMS/Push/Voz será aberta.
Selecione Email, digite seu endereço de email e, em seguida, selecione OK.
Na página Adicionar grupo de ações, selecione OK.
Na página Criar regra, em DETALHES DO ALERTA, digite myAlert para o Nome da regra de alerta e digite Regra de alerta de email para a Descrição.
Quando terminar, selecione Criar regra de alerta.
Reinicie todas as VMs no conjunto de disponibilidade. Em alguns minutos, você deve receber um email de que o alerta foi disparado.
Para gerenciar suas regras de alerta, acesse o grupo de recursos, selecione Alertas no menu esquerdo e, em seguida, selecione Gerenciar regras de alerta na parte superior da página.
Próximas etapas
Para saber mais, confira a página Serviço de eventos agendados no GitHub.