Monitorizar eventos agendados para as VMs do Azure

Aplica-se a: VMs do Windows Conjuntos de dimensionamento flexíveis Conjuntos ✔️ ✔️ de dimensionamento uniformes ✔️

Atualizações são aplicadas a diferentes partes do Azure todos os dias, para manter os serviços em execução nos mesmos seguros e atualizados. Além das atualizações planeadas, também podem ocorrer eventos não planeados. Por exemplo, se for detetada alguma degradação ou falha de hardware, os serviços do Azure poderão ter de efetuar uma manutenção não planeada. A utilização da migração em direto, a preservação da memória das atualizações e, geralmente, a manutenção rigorosa do impacto das atualizações, na maioria dos casos, estes eventos são quase transparentes para os clientes e não têm qualquer impacto ou, no máximo, causam alguns segundos de congelamento da máquina virtual. No entanto, para algumas aplicações, mesmo alguns segundos de congelamento da máquina virtual podem causar um impacto. É importante saber antecipadamente sobre a próxima manutenção do Azure, para garantir a melhor experiência para essas aplicações. O serviço Scheduled Events fornece-lhe uma interface programática para ser notificado sobre a manutenção futura e permite-lhe processar corretamente a manutenção.

Neste artigo, vamos mostrar como pode utilizar eventos agendados para ser notificado sobre eventos de manutenção que podem estar a afetar as VMs e criar alguma automatização básica que pode ajudar na monitorização e análise.

Encaminhar eventos agendados para o Log Analytics

Os Eventos Agendados estão disponíveis como parte do Azure Instance Metadata Service, que está disponível em todas as máquinas virtuais do Azure. Os clientes podem escrever automatização para consultar o ponto final das suas máquinas virtuais para encontrar notificações de manutenção agendada e realizar mitigações, como guardar o estado e tirar a máquina virtual da rotação. Recomendamos que crie automatização para registar os Eventos Agendados para que possa ter um registo de auditoria de eventos de manutenção do Azure.

Neste artigo, iremos guiá-lo ao longo de como capturar eventos agendados de manutenção para o Log Analytics. Em seguida, iremos acionar algumas ações de notificação básicas, como enviar um e-mail para a sua equipa e obter uma vista histórica de todos os eventos que afetaram as suas máquinas virtuais. Para a agregação e automatização de eventos, iremos utilizar o Log Analytics, mas pode utilizar qualquer solução de monitorização para recolher estes registos e acionar a automatização.

Diagrama a mostrar o ciclo de vida do evento

Pré-requisitos

Para este exemplo, terá de criar uma Máquina Virtual do Windows num 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 Cloud, Conjunto de Dimensionamento de Máquinas Virtuais ou VMs autónomas. Vamos executar um serviço que consulta eventos agendados numa das VMs que funcionarão como recoletores, para obter eventos para todas as outras VMs no conjunto de disponibilidade.

Não elimine o grupo de recursos do grupo no final do tutorial.

Também terá de criar uma área de trabalho do Log Analytics que iremos utilizar para agregar informações das VMs no conjunto de disponibilidade.

Configurar o ambiente

Deverá ter agora 2 VMs iniciais num conjunto de disponibilidade. Agora, temos de criar uma 3ª VM, denominada 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

Transfira a instalação .zip ficheiro do projeto a partir do GitHub.

Ligue-se a myCollectorVM e copie o ficheiro .zip para a máquina virtual e extraia todos os ficheiros. Na VM, abra uma linha de comandos do PowerShell. Mova o pedido para a pasta que SchService.ps1contém , 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 irá agora iniciar a consulta a cada 10 segundos para quaisquer eventos agendados e aprovar os eventos para acelerar a manutenção. Freeze, Reboot, Redeploy e Preempt são os eventos capturados por Agendar eventos. Tenha em atenção que pode expandir o script para acionar algumas mitigações antes de aprovar o evento.

Valide o estado do serviço e certifique-se de que está em execução.

.\SchService.ps1 -status  

Esta ação deverá devolver Running.

O serviço irá agora iniciar a consulta a cada 10 segundos para quaisquer eventos agendados e aprovar os eventos para acelerar a manutenção. Freeze, Reboot, Redeploy e Preempt são os eventos capturados por Agendar eventos. Pode expandir o script para acionar algumas mitigações antes de aprovar o evento.

Quando qualquer um dos eventos acima é capturado pelo serviço Agendar Evento, este será registado no Estado do Evento do Registo de Eventos da Aplicação, Tipo de Evento, Recursos (Nomes de máquinas virtuais) e NotBefore (período de aviso mínimo). Pode localizar os eventos com o ID 1234 no Registo de Eventos da Aplicação.

Assim que o serviço estiver configurado e iniciado, registará eventos nos registos da Aplicação do Windows. Para verificar se isto funciona, reinicie uma das máquinas virtuais no conjunto de disponibilidade e deverá ver um evento a ser registado no Visualizador de eventos no registo de Aplicações de Registos > do Windows a mostrar a VM reiniciada.

Captura de ecrã do visualizador de eventos.

Quando os eventos são capturados pelo serviço Agendar Evento, este será registado no registo da aplicação mesmo com o Estado do Evento, Tipo de Evento, Recursos (nome da VM) e NotBefore (período de aviso mínimo). Pode localizar os eventos com o ID 1234 no Registo de Eventos da Aplicação.

Nota

Neste exemplo, as máquinas virtuais estavam num conjunto de disponibilidade, o que nos permitiu designar uma única máquina virtual como o recoletor para escutar e encaminhar eventos agendados para o nosso espaço de trabalho do Log Analytics. Se tiver máquinas virtuais autónomas, pode executar o serviço em todas as máquinas virtuais e, em seguida, ligá-las individualmente à área de trabalho do Log Analytics.

Para a nossa configuração, escolhemos o Windows, mas pode criar uma solução semelhante no Linux.

Em qualquer altura, pode parar/remover o Serviço de Eventos Agendados com os comutadores –stop e –remove.

Ligar à área de trabalho

Queremos agora ligar uma Área de Trabalho do Log Analytics à VM do recoletor. A área de trabalho do Log Analytics funciona como um repositório e vamos configurar a recolha de registos de eventos para capturar os registos de aplicações da VM do recoletor.

Para encaminhar os Eventos Agendados para o Registo de Eventos, que será guardado como Registo de aplicações pelo nosso serviço, terá de ligar a máquina virtual à área de trabalho do Log Analytics.

  1. Abra a página da área de trabalho que criou.

  2. Em Ligar a uma origem de dados , selecione Máquinas virtuais (VMs) do Azure.

    Ligar a uma VM como uma origem de dados

  3. Procure e selecione myCollectorVM.

  4. Na nova página de myCollectorVM, selecioneLigar.

Esta ação irá instalar o agente de Monitorização da Microsoft na sua máquina virtual. A ligação da VM à área de trabalho demora alguns minutos e a instalação da extensão.

Configurar a área de trabalho

  1. Abra a página da área de trabalho e selecione Definições avançadas.

  2. Selecione Dados no menu esquerdo e, em seguida, selecione Registos de Eventos do Windows.

  3. Em Recolher a partir dos seguintes registos de eventos, comece a escrever aplicação e, em seguida, selecione Aplicação na lista.

    Selecione Definições avançadas

  4. Deixe a opção ERRO, AVISO e INFORMAÇÕES selecionadas e, em seguida, selecione Guardar para guardar as definições.

Nota

Haverá algum atraso e poderá demorar até 10 minutos até o registo estar disponível.

Criar uma regra de alerta com o Azure Monitor

Assim que os eventos forem enviados para o Log Analytics, pode executar a seguinte consulta para procurar a agenda de Eventos.

  1. Na parte superior da página, selecione Registos 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
    
  2. Selecione Guardar e, em seguida, escreva ogQuery para o nome, deixe Consulta como o tipo, escreva VMLogs como Categoria e, em seguida, selecione Guardar.

    Guardar a consulta

  3. Selecione Nova regra de alerta.

  4. Na página Criar regra , deixe collectorworkspace como Recurso.

  5. Em Condição, selecione a entrada Sempre que a pesquisa de registo do cliente estiver <a iniciar sessão indefinidamente>. Será aberta a página Configurar lógica de sinal .

  6. Em Valor do limiar, introduza 0 e, em seguida, selecione Concluído.

  7. Em Ações, selecione Criar grupo de ações. Será aberta a página Adicionar grupo de ações .

  8. Em Nome do grupo de ações, escreva myActionGroup.

  9. Em Nome abreviado, escreva myActionGroup.

  10. No Grupo de recursos, selecione myResourceGroupAvailability.

  11. Em Ações, em NOME DA AÇÃO, escreva Email e, em seguida, selecione Email/SMS/Push/Voice. Será aberta a página Email/SMS/Push/Voice.

  12. Selecione Email, escreva o seu endereço de e-mail e, em seguida, selecione OK.

  13. Na página Adicionar grupo de ações , selecione OK.

  14. Na página Criar regra, em DETALHES DO ALERTA, escreva myAlert para o nome da regra de alerta e, em seguida, escreva Email regra de alerta para a Descrição.

  15. Quando tiver terminado, selecione Criar regra de alerta.

  16. Reinicie uma das VMs no conjunto de disponibilidade. Dentro de alguns minutos, deverá receber um e-mail a indicar que o alerta foi acionado.

Para gerir as 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.

Passos seguintes

Para saber mais, veja a página Serviço de eventos agendados no GitHub.