Автоматический перезапуск службы Powershell

У меня проблема с сервером prtg probe на одном конкретном сервере. На этом сервере загрузка процессора достигает 90%, и его необходимо перезапустить из-за службы prtg. Как я могу автоматически перезапускать службу prtg, когда загрузка процессора достигает 90%?

Я думал создать сценарий с условием, но не смог его завершить.

-Set-Service [service name] -startuptype automatic

Взгляните на этот пост: КАК ЗАПУСТИТЬ ПРЕДУПРЕЖДЕНИЕ ПО ЭЛЕКТРОННОЙ ПОЧТЕ ИЗ МОНИТОРА ПРОИЗВОДИТЕЛЬНОСТИ WINDOWS. В нем показано, как отправить электронное письмо на основе предупреждения Perfmon, но вы можете изменить его, чтобы перезапустить службу или какую-либо другую задачу.

boxdog 13.05.2019 14:26

@boxdog спасибо за совет, но как я могу связать, когда процессор сервера достигает 90%, и мне нужно сделать это автоматически.

user11414173 13.05.2019 14:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
325
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вы используете 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

Проверьте следующие ссылки о вакансиях:

надеюсь, это поможет

Большое спасибо за ваши усилия, я так благодарен. Я собираюсь попробовать это.

user11414173 13.05.2019 14:56

У меня есть несколько нубских вопросов, где я могу увидеть эти журналы и какую дату я должен указать, потому что, как я указал сегодня или другие даты, это дает ошибку. Кроме того, как я могу указать процессор из yourServiceName? Спасибо за понимание.

user11414173 13.05.2019 15:49

Журналы записываются в журнал событий Windows. Вам нужен ЦП всего сервера или вам нужен ЦП службы, которую вы хотите перезапустить?

Moerwald 13.05.2019 16:41

Я искал везде в журнале событий Windows и в расписании задач-> Microsoft-> ​​PowerShell-> ScheduleJobs, но я не мог найти. Если возможно, не могли бы вы дать немного больше информации?

user11414173 14.05.2019 13:14

Я обновил свой ответ, забыл добавить New-EventLog -LogName Application -Source "CPU supervision". Вы должны иметь возможность получать журналы событий через Get-EventLog -Source "CPU supervision" -LogName Application

Moerwald 14.05.2019 13:21

Я добавил в Get-EventLog -Source приложение "Контроль процессора" -LogName, но оно выдает ошибку. У вас есть решение? и я все еще не мог найти журналы в журнале событий Windows или планировщике задач.

user11414173 14.05.2019 14:43

Возможно, вам придется вызвать New-EventLog -LogName Application -Source "CPU supervision" один раз с правами администратора.

Moerwald 15.05.2019 08:34

да, я пробовал, у меня есть права администратора, но все равно то же самое.

user11414173 15.05.2019 08:51

Вы уверены, что он сохраняется в журнале событий Windows?

user11414173 15.05.2019 16:15

Я попробовал это на своем локальном хосте, это сработало. Просто попробуйте на своей локальной машине.

Moerwald 15.05.2019 19:01

хорошо, большое спасибо за помощь. Я так благодарен. Хорошего дня.

user11414173 16.05.2019 08:23

чтобы получить использование ЦП 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

Это был бы ответ, а теперь мое предложение к вашей ситуации

  • перезапуск зонда никогда не является решением проблемы высокой загрузки ЦП — попробуйте добавить больше ЦП, если это возможно
  • уменьшить количество датчиков
  • определять датчики с длительным сроком службы или датчики с высокой нагрузкой на ЦП и оптимизировать их или удалять/заменять их облегченной альтернативой
  • добавьте еще один датчик к другой машине, если добавление ЦП или точек выше не является вариантом - таким образом вы можете разделить датчик на два датчика

Другие вопросы по теме