Титла: Mmonit - стартиране на shell script Публикувано от: globaluty в Aug 10, 2015, 12:02 Здравейте,
как да настроя M/monit да стартира и да наглежда даден процес, стартиран от shell script. Скриптът се намира да речем в /home/user/program/start.sh. И също как да направя ако процесът превишава зададен CPU usage, то да бъде убит. Благодаря предварително. Титла: Re: Mmonit - стартиране на shell script Публикувано от: BRADATA в Aug 10, 2015, 13:00 В документацията всичко е описано много подробно, една камара примери има също...
https://mmonit.com/wiki/Monit/ConfigurationExamples Титла: Re: Mmonit - стартиране на shell script Публикувано от: globaluty в Aug 10, 2015, 13:19 Дам, има много примери за обичайните програми, но аз търся конкретно за моя случай.
Пробвах нещо подобно, но ми дава /etc/monit/monitrc:280: Error: syntax error 'start program = "' check process gameserver start program = "/bin/sh /home/user/start.sh" if cpu > 80% for 2 cycles then alert if cpu > 95% for 3 cycles then restart Също така не знам как да напиша и stop program = " " , за да е вярно. Титла: Re: Mmonit - стартиране на shell script Публикувано от: BRADATA в Aug 10, 2015, 14:56 Код: check process gameserver with pidfile gameserver_pid_file Монит наблюдава процесите чрез PID. Това значи, че трябва да кажеш на монит къде да намери PID-а на твоя процес. След това трябва да имаш изпълними стартиращ и спиращ скриптове с права за изпълнение от монит демона за твоя "геймсървър". Това е всичко. Титла: Re: Mmonit - стартиране на shell script Публикувано от: globaluty в Aug 10, 2015, 15:11 Добре, но тъй като нито един геймсървър няма зададен PID по подразбиране, как ще стане? Как мога да задам PID на даден процес?
Доколкото четах някъде, пишеше, че монит може да следи процес, без да го стартира, което не знам дали може да помогне с НЕизползването на PID. Мисля, че важно да добавя е, че геймсървърите се пускат от root. Също така можеш ли да дадеш пример за спиращ скрипт, тъй като досега съм спирал процесите винаги от Htop или от конзолата на самия геймсървър. 1) if cpu usage > 1% for 5 cycles then restart 2) if 5 restarts within 100 cycles then restart 1) това не означава ли, че ако cpu usage е по-голям от 1% за 5 цикъла ще се рестартира, тоест винаги ще се рестартира на 5 цикъла? 2) ако има 5 рестарта за 100 цикъла - пак рестарт ? Благодаря ти предварително. Титла: Re: Mmonit - стартиране на shell script Публикувано от: BRADATA в Aug 10, 2015, 15:36 Всеки процес в линукс света си има PID (process ID). Трябва да си разровиш документацията на геймсървъра и да видиш как да го накараш да си пише ID-то в някой файл. За спиращ скрипт трябва да си напишеш нещо, което убива процеса - за целта ти трябва същият този PID. За останалото си го разбрал точно. Нагласи си процентите като за твоите нужди. Имай предвид, че монит рестартира процеса няколко пъти и ако все пак продължава да има високо цпу (прегледай документацията за колко цикъла идеше реч, че ме мързи) спира да права каквото и да било и го дава в статус alert. Затова е второто правило.
Титла: Re: Mmonit - стартиране на shell script Публикувано от: globaluty в Aug 13, 2015, 15:17 Успях да накарам въпросният геймсървър да си пише PID-a във файл. Бях се заблудил, че трябва аз да му го дефинирам в този файл и всеки път, сървърът ще използва един и същи PID. Но явно той си го пише и Monit си го взема от този файл. Дотук добре, Monit го изкарва running, сега само остава да оправя script-a за старт/стоп :)
Титла: Re: Mmonit - стартиране на shell script Публикувано от: globaluty в Aug 14, 2015, 13:07 В момента имам 2 скрипта - един за пускане и един за спиране на процеса.
И двата скрипта изпълнени в терминала работят нормално. /bin/sh /home/dido/user/stop.sh /bin/sh /home/dido/user/start.sh В Монит имам следното: Код
Когато геймсървърът е стартиран ръчно, тоест съм изпълнил командата /bin/sh /home/dido/user/start.sh в терминала, Монит вижда сървъра Running, тоест до тук добре. Когато натисна Stop Service (от Монит), процесът се спира коректно. НО, когато се опитам да го стартирам през Монит (Start Service), процесът не може да се стартира. В лога изписва следното: Код: [EEST Aug 14 12:32:15] info : 'gameserver' start on user request Когато го спра през Монит (Service Stop), всичко си е точно. Код: [EEST Aug 14 12:53:14] info : 'gameserver' stop on user request Титла: Re: Mmonit - стартиране на shell script Публикувано от: BRADATA в Aug 14, 2015, 15:03 Дай изхода от ls -la /home/dido/user/
Титла: Re: Mmonit - стартиране на shell script Публикувано от: globaluty в Aug 14, 2015, 15:19 root@debian:~# ls -la /home/dido/user
total 34640 drwxrwxrwx 5 root root 4096 Aug 14 13:17 . drwxrwxrwx 23 dido user2 4096 Aug 13 16:17 .. -rwxrwxrwx 1 root root 4767 Aug 14 13:30 CONSOLE.log -rwxrwxrwx 1 root root 954176 Jul 24 16:44 core.so -rwxrwxrwx 1 root root 658817 Jul 24 16:44 crashhandler.so drwxrwxrwx 15 root root 4096 Jul 24 16:44 cstrike -rwxrwxrwx 1 root root 28755 Aug 14 13:17 debug.log -rwxrwxrwx 1 root root 303632 Jul 24 16:44 demoplayer.so -rwxrwxrwx 1 root root 7340 Jul 24 16:44 dproto.cfg -rwxrwxrwx 1 root root 2949240 Jul 24 16:44 engine_i486.so -rwxrwxrwx 1 root root 393734 Jul 24 16:44 filesystem_stdio.so -rwxrwxrwx 1 root root 107274 Jul 24 16:44 hlds_linux -rwxrwxrwx 1 root root 7778 Jul 24 16:44 hlds_run -rwxrwxrwx 1 root root 171230 Jul 24 16:44 hltv -rwxrwxrwx 1 root root 322152 Jul 24 16:44 libgcc_s.so.1 -rwxrwxrwx 1 root root 17 Jul 24 16:44 libSDL2.so -rwxrwxrwx 1 root root 3769939 Jul 24 16:44 libstdc++.so.6 -rwxrwxrwx 1 root root 76032 Jul 24 16:44 libsteam_api.so -rwxrwxrwx 1 root root 4383138 Jul 24 16:44 libsteam.so -rwxrwxrwx 1 root root 474299 Jul 24 16:44 libtier0.so -rwxrwxrwx 1 root root 441049 Jul 24 16:44 libvstdlib.so -rw-r--r-- 1 root root 6 Aug 13 14:50 pid -rwxrwxrwx 1 dido user2 5 Aug 14 13:29 pid.pid -rwxrwxrwx 1 root root 948577 Jul 24 16:44 proxy.so -rw-rw-rw- 1 dido user2 218 Aug 14 13:16 start2.sh -rwxrwxrwx 1 dido root 219 Aug 13 15:03 start.bat -rwxrwxrwx 1 dido user2 248 Aug 14 13:14 start.sh -rwxrwxrwx 1 root root 3 Aug 14 13:29 steam_appid.txt drwxrwxrwx 4 root root 4096 Jul 24 16:44 steamapps -rwxrwxrwx 1 root root 16627778 Jul 24 16:44 steamclient.so -rwxrwxrwx 1 dido user2 80 Aug 13 18:38 stop.sh drwxrwxrwx 16 root root 4096 Jul 24 16:44 valve -rwxrwxrwx 1 root root 900425 Jul 24 16:44 vgui2.so -rwxrwxrwx 1 root root 975981 Jul 24 16:44 vgui.so -rwxrwxrwx 1 root root 54955 Jul 24 16:44 voice_miles.so -rwxrwxrwx 1 root root 664256 Jul 24 16:44 voice_silk.so -rwxrwxrwx 1 root root 135312 Jul 24 16:44 voice_speex.so Титла: Re: Mmonit - стартиране на shell script Публикувано от: BRADATA в Aug 14, 2015, 20:42 Я ги дай тея старт/стоп скриптове да се види какво има вътре...
Титла: Re: Mmonit - стартиране на shell script Публикувано от: globaluty в Aug 15, 2015, 01:17 start.sh
Код
Oт /hlds_run нататък са опции за стариране на геймсървъра. stop.sh Код
Титла: Re: Mmonit - стартиране на shell script Публикувано от: BRADATA в Aug 15, 2015, 06:12 Всичко изглежда нормално. Вдигни timeout на старт скрипта на 60sec.
Титла: Re: Mmonit - стартиране на shell script Публикувано от: globaluty в Aug 15, 2015, 11:53 Пак същото. Попринцип сървърът се стартира за максимум 5 секунди.
EDIT: Забелязах нещо много интересно. Подобно на service-a от другата тема, когато отворя нов терминал и се опитам да execute-на start.sh (/bin/sh /home/dido/user/start.sh), сървърът не се стартира. Излиза само този ред. http://prikachi.com/images.php?images/147/8300147A.png Чак когато го стартирам, както съм го стартирал досега, отивам в /home/dido/user/ и пиша ./start.sh, чак след това скрипта за старт ще проработи в същия терминал. Стоп скриптът винаги си работи. Чак след това се появява и този ред, което всъщност е самият гейм сървър. http://prikachi.com/images.php?images/158/8300158t.png Титла: Re: Mmonit - стартиране на shell script Публикувано от: BRADATA в Aug 15, 2015, 20:08 Копирай скриптовете в /usr/local/sbin и пробвай пак.
Титла: Re: Mmonit - стартиране на shell script Публикувано от: bILLY в Aug 15, 2015, 20:41 @Offtopic
./hlds_run -game cstrike.... :D :D :D изведнъж се подмладих с 6-7 години :D :D :D :D Титла: Re: Mmonit - стартиране на shell script Публикувано от: globaluty в Aug 17, 2015, 18:22 Копирай скриптовете в /usr/local/sbin и пробвай пак. Не помага.. :'( Титла: Re: Mmonit - стартиране на shell script Публикувано от: globaluty в Aug 19, 2015, 17:47 Разделяйки го на 2 скрипта, всичко си дойде на мястото. :)
Сега се опитвам да получавам alerts по mail. Това са ми настройките в monitrc: set alert my_email@gmail.com set mailserver smtp.gmail.com port 587 username "my_email@gmail.com" password "PAROLA" В лога получавам следните грешки. [EEST Aug 19 17:44:29] error : Sendmail error: 530 5.7.0 Must issue a STARTTLS command first. eu2sm1923841wic.8 - gsmtp [EEST Aug 19 17:44:29] error : Alert handler failed, retry scheduled for next cycle Някакви идеи? |