Как я могу создать предупреждение недостаточного пространства на диске на Центре обработки данных Windows Server 2012 R2

У меня есть виртуальная машина Центра обработки данных Windows Server 2012 R2, работающая в Azure.

Недавно, один из моих дисков исчерпал пространство.

Как я могу установить систему уведомления для предупреждения меня, когда один из дисководов испытывает нехватку дискового пространства?

Единственная вещь, которая приходит на ум, состоит в том, чтобы записать powershell сценарий, но я задаюсь вопросом, существует ли лучший способ сделать это, например, через что-то на Диспетчере серверов / Панель инструментов Windows Server? Я не вижу способа сделать это через Azure также.

Спасибо!

5
задан 18 August 2015 в 02:26
2 ответа

Вы можете сделать это за пределами ВМ, вызвав Powershell за пределами ВМ для проверки дискового пространства жесткого диска ВМ. Это хорошая статья об использовании Remote Powershell http://michaelwasham.com/windows-azure-powershell-reference-guide/introduction-remote-powershell-with-windows-azure/

0
ответ дан 3 December 2019 в 01:49

Это прямо здесь сделает вам:

Event ID 2013 (Disk Is At Or Near Capacity) не регистрируется

Чтобы подвести итог, убедитесь, что вы регистрируете предупреждения о дисковом пространстве в журнале событий:

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

(Вы должны добавить оба эти предупреждения, а не только одно или другое.)

Тогда вы должны прикрепить задачу к событию. И вот немного XML, который вы можете импортировать в планировщик задач, который прикрепит указанную задачу к указанному событию:

<?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>Admin@YourCompany.co.uk</To>
         <From>noreply@YourCompany.co.uk</From>
         <Body>Disk space is running low on server: [ServerName] - please investigate.</Body>
         <HeaderFields />
         <Attachments />
      </SendEmail>
   </Actions>
</Task>

Вам нужно отредактировать SMTP сервер и другие переменные в соответствии с вашими потребностями. Это вызовет сообщение электронной почты всякий раз, когда это событие (небольшое место на диске) произойдет на вашем сервере.

Стоит отметить, что по умолчанию Server 2008, 2012 и т.д. должен автоматически генерировать это оповещение на 10%, так что, вероятно, нет необходимости изменять реестр, если только вы не хотите что-то пользовательское вместо 10%.


В качестве альтернативы, вы можете сделать это с помощью 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
    }
}

Запланируйте это и запустите его через определенный промежуток времени. (Я только что высмеял это, но вы поняли.)

3
ответ дан 3 December 2019 в 01:49

Теги

Похожие вопросы