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

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


ɹɐǝɥ 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

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


ɹɐǝɥ 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

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


ɹɐǝɥ 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

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


ɹɐǝɥ 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

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


ɹɐǝɥ 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.