Como posso criar um alerta de pouco espaço em disco no Windows Server 2012 R2 Datacenter

5

Eu tenho uma máquina virtual do Windows Server 2012 R2 Datacenter em execução no Azure.

Recentemente, um dos meus discos ficou sem espaço.

Como posso configurar um sistema de notificação para me alertar quando uma das unidades de disco fica com pouco espaço em disco?

A única coisa que vem à mente é escrever um script do powershell, mas estou querendo saber se existe uma maneira melhor de fazer isso, por exemplo, através de algo no Server Manager / Dashboard do Windows Server? Eu não consigo ver nenhuma maneira de fazer isso através do Azure.

Obrigado!

    
por RPM1984 18.08.2015 / 01:26

2 respostas

3

Isso aqui vai fazer você:

ID do evento 2013 (disco Está em ou perto de capacidade) não sendo logado

Para resumir, verifique se você está registrando alertas de espaço em disco no seu log de eventos:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters]
"DiskSpaceThreshold"=dword:0000000a
"LowDiskSpaceMinimum"=dword:00000000

(Você deve adicionar os dois, não apenas um ou outro.)

Depois, você deve anexar uma tarefa ao evento. E aqui estão alguns XML que você pode importar para o agendador de tarefas que anexará a dita tarefa ao evento mencionado:

<?xml version="1.0" encoding="UTF-8"?>
<Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task" version="1.3">
   <RegistrationInfo>
      <Date>2013-02-05T14:37:17.165247</Date>
      <Author>[YourDomain]\[YourUserName]</Author>
      <Description>Send an emailed warning when a low disk space event is recorded.</Description>
   </RegistrationInfo>
   <Triggers>
      <EventTrigger>
         <Enabled>true</Enabled>
         <Subscription>&amp;lt;QueryList&amp;gt;&amp;lt;Query Id="0" Path="System"&amp;gt;&amp;lt;Select Path="System"&amp;gt;*[System[Provider[@Name='srv'] and EventID=2013]]&amp;lt;/Select&amp;gt;&amp;lt;/Query&amp;gt;&amp;lt;/QueryList&amp;gt;</Subscription>
      </EventTrigger>
   </Triggers>
   <Principals>
      <Principal id="Author">
         <UserId>S-1-5-20</UserId>
         <RunLevel>LeastPrivilege</RunLevel>
      </Principal>
   </Principals>
   <Settings>
      <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
      <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
      <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
      <AllowHardTerminate>true</AllowHardTerminate>
      <StartWhenAvailable>true</StartWhenAvailable>
      <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
      <IdleSettings>
         <StopOnIdleEnd>true</StopOnIdleEnd>
         <RestartOnIdle>false</RestartOnIdle>
      </IdleSettings>
      <AllowStartOnDemand>true</AllowStartOnDemand>
      <Enabled>true</Enabled>
      <Hidden>false</Hidden>
      <RunOnlyIfIdle>false</RunOnlyIfIdle>
      <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
      <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
      <WakeToRun>false</WakeToRun>
      <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
      <Priority>7</Priority>
   </Settings>
   <Actions Context="Author">
      <SendEmail>
         <Server>smtpServer.YourCompany.co.uk</Server>
         <Subject>Low disk space warning on server: [ServerName]</Subject>
         <To>[email protected]</To>
         <From>[email protected]</From>
         <Body>Disk space is running low on server: [ServerName] - please investigate.</Body>
         <HeaderFields />
         <Attachments />
      </SendEmail>
   </Actions>
</Task>

Você precisa editar o servidor SMTP e outras variáveis para atender às suas necessidades. Isto irá disparar um email para você sempre que o evento (pouco espaço em disco) ocorrer no seu servidor.

É interessante notar que o Server 2008, 2012, etc., deve automaticamente padronizar a geração desse alerta em 10%, então provavelmente não há necessidade de modificar o registro a menos que você queira algo personalizado em vez de 10%.

Alternativamente, você pode fazer isso com o Powershell.

$Threshold = 10 #Percent

Foreach($Disk In Get-CimInstance Win32_LogicalDisk | Where DriveType -EQ 3)
{
    $PercentFree = [Math]::Round(($Disk.FreeSpace / $Disk.Size) * 100, 1)
    If ($PercentFree -LT $Threshold)
    {
        Send-MailMessage -From $From -To $To -Subject "Low Disk Space on $Servername" -Body "Low Disk Space on $Servername" -SmtpServer $SMTPServer
    }
}

Programe isso e execute-o em um intervalo. (Eu apenas zombei disso de cima da minha cabeça, mas você entendeu a ideia.)

    
por 18.08.2015 / 01:51
0

Você poderia fazer isso de fora da VM invocando o Powershell de fora da VM para verificar o espaço em disco do HDD da VM. Este é um bom artigo sobre como usar o link do Remote Powershell

    
por 18.08.2015 / 01:50