У меня проблема с сервером prtg probe на одном конкретном сервере. На этом сервере загрузка процессора достигает 90%, и его необходимо перезапустить из-за службы prtg. Как я могу автоматически перезапускать службу prtg, когда загрузка процессора достигает 90%?
Я думал создать сценарий с условием, но не смог его завершить.
-Set-Service [service name] -startuptype automatic
@boxdog спасибо за совет, но как я могу связать, когда процессор сервера достигает 90%, и мне нужно сделать это автоматически.





Если вы используете PowerShell 5.x, вы можете использовать Get-Counter, чтобы узнать загрузку ЦП. Попробуйте следующее на сервере, чтобы проверить:
$peridiocallyChecks = {
# Check if logging source is available, if not add it
if (!(Get-EventLog -Source "CPU supervision" -LogNameApplication)){
New-EventLog -LogName Application -Source "CPU supervision"
}
$cpuUsage = [double] (Get-Counter '\Processor(_Total)\% Processor Time' -ErrorAction SilentlyContinue | Select-Object -ExpandProperty CounterSamples | Select-Object -ExpandProperty CookedValue)
if ($cpuUsage -gt 90) {
Write-EventLog -LogName "Application" -Source "CPU supervision" -EntryType Information -EventId 1 -Message "CPU usage is $cpuUsage. Going to stop service"
Stop-Service "yourServiceName"
# Some cooldown time for the service to shutdown
Start-Sleep -Seconds 10
Start-Service "yourServiceName"
Write-EventLog -LogName "Application" -Source "CPU supervision" -EntryType Information -EventId 1 -Message "Restarted service"
}
}
# Trigger every hour
$trigger = New-JobTrigger -Once -At "9/21/2012 0am" -RepetitionInterval (New-TimeSpan -Hour 12) -RepetitionDuration ([TimeSpan]::MaxValue)
Register-ScheduledJob -Name "CPUCheck" -Trigger $trigger -Scriptblock $peridiocallyChecks
Проверьте следующие ссылки о вакансиях:
надеюсь, это поможет
Большое спасибо за ваши усилия, я так благодарен. Я собираюсь попробовать это.
У меня есть несколько нубских вопросов, где я могу увидеть эти журналы и какую дату я должен указать, потому что, как я указал сегодня или другие даты, это дает ошибку. Кроме того, как я могу указать процессор из yourServiceName? Спасибо за понимание.
Журналы записываются в журнал событий Windows. Вам нужен ЦП всего сервера или вам нужен ЦП службы, которую вы хотите перезапустить?
Я искал везде в журнале событий Windows и в расписании задач-> Microsoft-> PowerShell-> ScheduleJobs, но я не мог найти. Если возможно, не могли бы вы дать немного больше информации?
Я обновил свой ответ, забыл добавить New-EventLog -LogName Application -Source "CPU supervision". Вы должны иметь возможность получать журналы событий через Get-EventLog -Source "CPU supervision" -LogName Application
Я добавил в Get-EventLog -Source приложение "Контроль процессора" -LogName, но оно выдает ошибку. У вас есть решение? и я все еще не мог найти журналы в журнале событий Windows или планировщике задач.
Возможно, вам придется вызвать New-EventLog -LogName Application -Source "CPU supervision" один раз с правами администратора.
да, я пробовал, у меня есть права администратора, но все равно то же самое.
Вы уверены, что он сохраняется в журнале событий Windows?
Я попробовал это на своем локальном хосте, это сработало. Просто попробуйте на своей локальной машине.
хорошо, большое спасибо за помощь. Я так благодарен. Хорошего дня.
чтобы получить использование ЦП PRTG, вы можете использовать следующую строку powershell
Get-Counter '\Process(*)\% Processor Time' | Select-Object -ExpandProperty countersamples | Select-Object -Property instancename, cookedvalue| where {$_.InstanceName -match "prtg" }
затем вы можете сравнить его с вашим пределом (90%) и решить, хотите ли вы запустить следующую команду в powershell
restart-service PRTG
Это был бы ответ, а теперь мое предложение к вашей ситуации
Взгляните на этот пост: КАК ЗАПУСТИТЬ ПРЕДУПРЕЖДЕНИЕ ПО ЭЛЕКТРОННОЙ ПОЧТЕ ИЗ МОНИТОРА ПРОИЗВОДИТЕЛЬНОСТИ WINDOWS. В нем показано, как отправить электронное письмо на основе предупреждения Perfmon, но вы можете изменить его, чтобы перезапустить службу или какую-либо другую задачу.