Monitorar eventos agendados para suas VMs do Azure
Aplica-se a: VMs VMs ✔️ ✔️ do Windows Conjuntos ✔️ de escala flexíveis Conjuntos de balanças uniformes
As atualizações são aplicadas a diferentes partes do Azure todos os dias, para manter os serviços em execução nelas seguros e atualizados. Além das atualizações planejadas, eventos não planejados também podem ocorrer. Por exemplo, se alguma degradação ou falha de hardware for detetada, os serviços do Azure podem precisar executar manutenção não planejada. Usando a migração ao vivo, preservando atualizações de memória e geralmente mantendo uma barra rígida sobre o impacto das atualizações, na maioria dos casos, esses eventos são quase transparentes para os clientes e não têm impacto ou, no máximo, causam 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 um impacto. Saber com antecedência sobre a próxima manutenção do Azure é importante para garantir a melhor experiência para esses aplicativos. O serviço de Eventos Agendados fornece uma interface programática para ser notificado sobre a próxima manutenção e permite que você lide com a manutenção normalmente.
Neste artigo, mostraremos como você pode usar eventos agendados para ser notificado sobre eventos de manutenção que podem estar afetando suas VMs e criar alguma automação básica que pode ajudar no monitoramento e na análise.
Roteamento de eventos agendados para o Log Analytics
Os Eventos Agendados estão disponíveis como parte do Serviço de Metadados da Instância do Azure, que está disponível em todas as máquinas virtuais do Azure. Os clientes podem escrever automação para consultar o ponto de extremidade de suas máquinas virtuais para encontrar notificações de manutenção agendada e executar mitigações, como salvar o estado e tirar a máquina virtual da rotação. Recomendamos a automação de edifícios para registrar os Eventos Agendados para que você possa ter um log de auditoria de eventos de manutenção do Azure.
Neste artigo, vamos orientá-lo sobre como capturar eventos agendados de manutenção para o Log Analytics. Em seguida, acionaremos algumas ações básicas de notificação, como enviar um e-mail para sua equipe e obter uma visão histórica de todos os eventos que afetaram suas máquinas virtuais. Para a agregação de eventos e automação, usaremos o Log Analytics, mas você pode usar qualquer solução de monitoramento para coletar esses logs e acionar a automação.
Pré-requisitos
Para este exemplo, você precisará criar uma máquina virtual do Windows em um conjunto de disponibilidade. Os Eventos Agendados fornecem notificações sobre alterações que podem afetar qualquer uma das máquinas virtuais no seu conjunto de disponibilidade, Serviço de Nuvem, Conjunto de Dimensionamento de Máquina Virtual ou VMs autônomas. Estaremos executando um serviço que sonda eventos agendados em uma das VMs que atuarão como um coletor, para obter eventos para todas as outras VMs no conjunto de disponibilidade.
Não exclua o grupo de recursos do grupo no final do tutorial.
Você também precisará criar um espaço de trabalho do Log Analytics que usaremos para agregar informações das VMs no conjunto de disponibilidade.
Configurar o ambiente
Agora você deve ter 2 VMs iniciais em um conjunto de disponibilidade. Agora precisamos criar uma 3ª 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 de .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. Na VM, abra um prompt do PowerShell. Mova o prompt para a pasta que contém SchService.ps1
, por exemplo: PS C:\Users\azureuser\AzureScheduledEventsService-master\AzureScheduledEventsService-master\Powershell>
, e configure o serviço.
.\SchService.ps1 -Setup
Inicie o serviço.
.\SchService.ps1 -Start
O serviço agora iniciará a sondagem a cada 10 segundos para quaisquer eventos agendados e aprovará os eventos para agilizar a manutenção. Freeze, Reboot, Redeploy e Preempt são os eventos capturados pelos eventos Schedule. Observe que você pode estender o script para acionar algumas atenuações antes de aprovar o evento.
Valide o status do serviço e verifique se ele está em execução.
.\SchService.ps1 -status
Isso deve voltar Running
.
O serviço agora iniciará a sondagem a cada 10 segundos para quaisquer eventos agendados e aprovará os eventos para agilizar a manutenção. Freeze, Reboot, Redeploy e Preempt são os eventos capturados pelos eventos Schedule. Você pode estender o script para acionar algumas atenuações antes de aprovar o evento.
Quando qualquer um dos eventos acima for capturado pelo serviço Agendar Evento, ele será registrado no Status do Evento do Log de Eventos do Aplicativo, Tipo de Evento, Recursos (nomes de máquinas virtuais) e NotBefore (período mínimo de aviso). Você pode localizar os eventos com 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 no log do aplicativo Logs > do Windows mostrando a VM reiniciada.
Quando os eventos são capturados pelo serviço Agendar Evento, ele será registrado no aplicativo até mesmo com Status do Evento, Tipo de Evento, Recursos (nome da VM) e NotBefore (período mínimo de aviso). Você pode localizar os eventos com ID 1234 no log de eventos do aplicativo.
Nota
Neste exemplo, as máquinas virtuais estavam em um conjunto de disponibilidade, o que nos permitiu designar uma única máquina virtual como o coletor para ouvir e rotear eventos agendados para nosso espaço de trabalho de análise de log. 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 espaço de trabalho de análise de log.
Para a nossa configuração, escolhemos o Windows, mas você pode projetar uma solução semelhante no Linux.
A qualquer momento, você pode parar/remover o Serviço de Eventos Agendados usando as opções –stop
e –remove
.
Conectar-se ao espaço de trabalho
Agora queremos conectar um espaço de trabalho do Log Analytics à VM do coletor. O espaço de trabalho do Log Analytics atua como um repositório e configuraremos a coleta de logs de eventos para capturar os logs do aplicativo da VM do coletor.
Para rotear os Eventos Agendados para o Log de Eventos, que será salvo como Log do Aplicativo pelo nosso serviço, você precisará conectar sua máquina virtual ao espaço de trabalho do Log Analytics.
Abra a página do espaço de trabalho que você criou.
Em Conectar a uma fonte de dados, selecione Máquinas virtuais (VMs) do Azure.
Procure e selecione myCollectorVM.
Na nova página de myCollectorVM, selecione Conectar.
Isso instalará o agente do Microsoft Monitoring em sua máquina virtual. Levará alguns minutos para conectar sua VM ao espaço de trabalho e instalar a extensão.
Configurar a área de trabalho
Abra a página do seu espaço de trabalho e selecione Configurações avançadas.
Selecione Dados no menu esquerdo e, em seguida, selecione Registos de Eventos do Windows.
Em Coletar dos seguintes logs de eventos, comece a digitar aplicativo e selecione Aplicativo na lista.
Deixe ERROR, WARNING e INFORMATION selecionados e selecione Salvar para salvar as configurações.
Nota
Haverá algum atraso, e pode levar até 10 minutos até que o log esteja disponível.
Criando uma regra de alerta com o Azure Monitor
Depois que os eventos forem enviados por push para o Log Analytics, você poderá executar a seguinte consulta 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 Guardar e, em seguida, escreva
ogQuery
o nome, deixe Consulta como o tipo, escrevaVMLogs
como a Categoria e, em seguida, selecione Guardar.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 log do cliente estiver <indefinida>. A página Configurar lógica de sinal será aberta.
Em Valor do limite, digite 0 e 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 selecione E-mail/SMS/Push/Voz. A página E-mail/SMS/Push/Voz será aberta.
Selecione E-mail, digite seu endereço de e-mail e 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, em seguida, digite Regra de alerta por email para a Descrição.
Quando terminar, selecione Criar regra de alerta.
Reinicie uma das VMs no conjunto de disponibilidade. Dentro de alguns minutos, você receberá um e-mail informando que o alerta foi acionado.
Para gerir as suas regras de alerta, aceda ao grupo de recursos, selecione Alertas no menu esquerdo e, em seguida, selecione Gerir regras de alerta na parte superior da página.
Próximos passos
Para saber mais, consulte a página Serviço de eventos agendados no GitHub.