Jump to content

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


stanioomega

Recommended Posts

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

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

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

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

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

Link to comment
Share on other sites

  • Administrator

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

 

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

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

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

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

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

# 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

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

RB951Ui-2HnD / RBD25GR-5HPACQD2HPND&R11E-LTE6 /  RB952Ui-5ac2nD-TC


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

Link to comment
Share on other sites

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

каки са двете стойости за  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

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

Link to comment
Share on other sites

  • Administrator

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

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

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

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

RB951Ui-2HnD / RBD25GR-5HPACQD2HPND&R11E-LTE6 /  RB952Ui-5ac2nD-TC


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

Link to comment
Share on other sites

В този случей колко време трябва да кара процесора на 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

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

Link to comment
Share on other sites

  • Administrator

на 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

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

RB951Ui-2HnD / RBD25GR-5HPACQD2HPND&R11E-LTE6 /  RB952Ui-5ac2nD-TC


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

Link to comment
Share on other sites

  • Administrator

#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

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

RB951Ui-2HnD / RBD25GR-5HPACQD2HPND&R11E-LTE6 /  RB952Ui-5ac2nD-TC


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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

  • 2 months later...
  • 9 months later...
  • Administrator

2 варианта

1, e-mail 2 SMS

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

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

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

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

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

RB951Ui-2HnD / RBD25GR-5HPACQD2HPND&R11E-LTE6 /  RB952Ui-5ac2nD-TC


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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

  • 1 year later...

2 варианта

1, e-mail 2 SMS

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

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

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

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

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

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

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

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

 

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

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

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