Jump to content

Скрипт за рестарт при CPU 100%


stanioomega

Recommended Posts

Помогнете със един скрипт за рестарт на МТ ако CPU- то задържи на 100%

че по някога залепва на 100% и добре че въпросния МТ е в дома и го чувам като вземе да му вие вентилатора

Незнам от какво го прави , предполагам че е от бъговете на бета версиите които му качвам

Прави го рядко и след рестарт се оправя , но е желателно да има един скрипт за това , за всеки случей

Еб.ш не еб.ш на .уя времето минава ...

Адрес на коментара
Сподели в други сайтове

  • Администратор

Ще зачопля един такъв скрипт, да видим какво ще се получи.

 

за сега ми иде следната идея

проверка през определен период от време

при сбор на последните Х събираеми ако е над някаква стойност да се извърши рестарт

само трябва да измисля как да взимам променливите

това го намерих във форума на микротик

# Name : Average CPU Load
# Set up the scheduler to run this at a 1 second intervals (Sample Rate)
# Set info logs to echo to Terminal in System Logging
#
# maxsamples is the number of cpu-Load samples to keep
# Experiment with this value to incease or decrease the number of samples
# The greater the value the longer the time that the cpu-load average is calculated for.
:local maxsamples 20
# Get cpu-load samples, limit cpuarray to array size
:global cpuarray
:set cpuarray ([/system resource get cpu-load] , [:pick $cpuarray 0 ($maxsamples - 1)])
# add up all values in array
:local arraytot 0
:foreach o in=$cpuarray do={:set arraytot ($arraytot + $o)};
# divide sum of array values by the number of values in cpuarray
:local arraysize [:len $cpuarray]
:local avgcpuload ($arraytot / $arraysize)
# Display results in Terminal window
:log info ("CPU Load Captures:")
:log info $cpuarray
:log info ("Array Total: $arraytot")
:log info ("Array size: $arraysize of $maxsamples")
:global highavgcpuload
:if ([:len $highavgcpuload] = 0 || $highavgcpuload < $avgcpuload) do={:set highavgcpuload $avgcpuload}
:log info ("CPU Load - Avg: $avgcpuload High: $highavgcpuload")
#reboot if all samples show highload
:if ($arraysize = $maxsamples && $avgcpuload >= 100)  do={ /system reboot; }

 

Харесай поста ^^^
acer.gif htc.gifsigpic4024_2.gif

Форумът е за взаимопомощ а не за свършване на чужда работа


ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ

Адрес на коментара
Сподели в други сайтове

Ще го пробвам ,намерих и темата

каки са двете стойости за  Array size: $maxsamples && $avgcpuload за да ми стане ясно и намен 

понеже гледам че рестарт ще има ако това е едикаква си стойнос , в случея 100 а аз мислиа да го промениа на 70

това показва лога когато се изпълни скрипта

11:55:44 script,info CPU Load Captures:

11:55:44 script,info 1,2,0,3,2,14,1

11:55:44 script,info Array Total: 23

11:55:44 script,info Array size: 7 of 20

11:55:44 script,info CPU Load - Avg: 3 High: 6

Еб.ш не еб.ш на .уя времето минава ...

Адрес на коментара
Сподели в други сайтове

  • Администратор

array е масив демек количеството проби

тук целта е ако имаш моментни пикове а не постоянно натоварване да няма рестарт

Харесай поста ^^^
acer.gif htc.gifsigpic4024_2.gif

Форумът е за взаимопомощ а не за свършване на чужда работа


ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ

Адрес на коментара
Сподели в други сайтове

В този случей колко време трябва да кара процесора на 100% докато се рестартне

сложил съм scheduler да ръчка скрипта през 1 минута

еитък за около 10 сек процесора беше на 100% и показа това

12:16:28 script,info CPU Load Captures:

12:16:28 script,info 100,100,100,3,3,4,3,1,2,0,3,2,14,1

12:16:28 script,info Array Total: 336

12:16:28 script,info Array size: 14 of 20

12:16:28 script,info CPU Load - Avg: 24 High: 24

Еб.ш не еб.ш на .уя времето минава ...

Адрес на коментара
Сподели в други сайтове

  • Администратор

на 1 минута след 20 минути от пиковия момент със застой ще има рестарт

на 30 секунди ми звучи по добре, при 20 проби след 10мин ще има рестарт

/system scheduler

add disabled=no interval=30s name=cpu_check on-event=cpu_load policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive start-date=nov/23/2010 start-time=13:04:10
ако не искаш толкова спам в лога може да редактираш както следва
# Display results in Terminal window
#:log info ("CPU Load Captures:")
#:log info $cpuarray
#:log info ("Array Total: $arraytot")
#:log info ("Array size: $arraysize of $maxsamples")
:global highavgcpuload
:if ([:len $highavgcpuload] = 0 || $highavgcpuload < $avgcpuload) do={:set highavgcpuload $avgcpuload}
#:log info ("CPU Load - Avg: $avgcpuload High: $highavgcpuload")

 

задълже в скрипта трябва да е отбелязано че има права за рестарт защото инак ще се отчакаш
Харесай поста ^^^
acer.gif htc.gifsigpic4024_2.gif

Форумът е за взаимопомощ а не за свършване на чужда работа


ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ

Адрес на коментара
Сподели в други сайтове

  • Администратор

#reboot if all samples show highload
:if ($arraysize = $maxsamples && $avgcpuload >= 100)  do={:log error ("CPU Load has reached 100%, Request reboot in execution..."); /system reboot; }[/code]

някой да тества на х86 че рутербордовете не помнят

трябва да вади съобщение за рестарта принципно

това при спряни спам съобщенията в лога

Харесай поста ^^^
acer.gif htc.gifsigpic4024_2.gif

Форумът е за взаимопомощ а не за свършване на чужда работа


ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ

Адрес на коментара
Сподели в други сайтове

След рестарта не си запазва съобшението "CPU Load has reached 100%, Request reboot in execution..."

П.С. То и преди това не го исписва ... хванах го точно преди да се ребоотне с отворен лог

Еб.ш не еб.ш на .уя времето минава ...

Адрес на коментара
Сподели в други сайтове

  • 2 месеца по-късно ...
  • 9 месеца по-късно ...
  • Администратор

2 варианта

1, e-mail 2 SMS

2, със забоден 3G модем

като основния скрипт няма да рестартира а ще извиква втори скрипт който ще праща съобщението

и след това ще рестартира

Харесай поста ^^^
acer.gif htc.gifsigpic4024_2.gif

Форумът е за взаимопомощ а не за свършване на чужда работа


ɹɐǝɥ uɐɔ noʎ ǝɹoɯ ǝɥʇ 'ǝɯoɔǝq noʎ ɹǝʇǝınb ǝɥʇ

Адрес на коментара
Сподели в други сайтове

не е ли по-лесно скрипта да води до Persy за нормална машина? Старо и почтенно правило е "софтуерните недомислици се решават с хардуерни излишъци".

Въобше не мога да си представя някой да си държи рутер над 40% лоад. Поне да удържи малко някой syn flood. Да не говорим за клиент 60-70k pps :)

Адрес на коментара
Сподели в други сайтове

  • 1 year later...

2 варианта

1, e-mail 2 SMS

2, със забоден 3G модем

като основния скрипт няма да рестартира а ще извиква втори скрипт който ще праща съобщението

и след това ще рестартира

пробвал съм и 2-та начина .... но сега съм на 3 -ти

емайл-то смс е "ефективно" .. само при Мтел

модема ми изгоря

сега съм с third party СМС гейт ...  булксмс . цом

(добро е ако трябва да пращаш смс на глобул или виваком .... и разбира се ако са на рядко 

 

Забележка: ползвам го с Линукс , не с микротик

Най обичам да ям боб и ляб, топъл и пуфкаф, и да еб*!

Адрес на коментара
Сподели в други сайтове

Създайте нов акаунт или се впишете, за да коментирате

За да коментирате, трябва да имате регистрация

Създайте акаунт

Присъединете се към нашата общност. Регистрацията става бързо!

Регистрация на нов акаунт

Вход

Имате акаунт? Впишете се оттук.

Вписване
  • Потребители разглеждащи страницата   0 потребители

    • No registered users viewing this page.
×
×
  • Създай нов...

Important Information

By using this site, you agree to our Terms of Use.