Open tochev opened 10 years ago
Имаме си сървър, на който можем да го пуснем да работи. Когато прецените, мога да ви направя един контейнер (виртуалка) и да ви дам root достъп до там.
Работи локално при мен от няколко дни без да е забивало, така че мисля че е достатъчно стабилно. @mitio можеш да пратиш един акаунт да го кача на сървъра като имаш време. П.П. До момента нямаме match-ове и съответно tweet-ове за промени от следените IP-та.
@justnick, ще ми трябва публичния ти ключ. Машината ще е debian-базирана, реално зад NAT. Ако ти трябва препращане на входящ трафик, пиши, за да го настроим.
Ще се оправиш ли със setup-а, ако ти дам root-достъп до въпросната машина?
Да, ще се справя. По принцип основно ползвам RedHat базирани дистрибуции, но ще се справя и с debian. Не мисля че ще е необходим входящ трафик за момента, ако нещо не работи ще го търсим какво е. Къде да ти пратя ключа?
Може на me "в" ddimitrov.name. Може и тук. Публичен ключ е, все пак :)
И ти си прав :)
Готов си. Пратил съм ти на имейла SSH данни. Машината (контейнерът) е само твой. :)
Готово. Инсталирал съм нужното - т.е. nodejs и npm + curl, както разбира се и самият anon. Пуснато е в един screen с име anon.bgwikigovedits под user anon. Наложи се да направя chmod 666 /dev/ptmx заради ето този bug
Точев е писал за monitoring script, имате ли пуснат nagios, на който можем да го включим или да напиша един скрипт в cron, който да проверява на 10 минути дали е up и да го рестартира ако не е?
Това ми звучи като много дървено решение. Не е ли по-добре да имаме културен init.d скрипт за целта, или да си сложим Upstart на машината и да го ползваме него? Сто процента има process management инструменти, по-добри от screen и мониторинг скрипта/крона, който да проверява и да го пуска.
От друга страна, един cron ред, който го пуска на всяка минута и един .lock файл също биха свършили работа.
Nagios има, но не мога да помогна много с включването. @krokodilerian може да ти даде повече инфо.
Nagios-а може да проверява дали е живо, но не може да го стартира (на друга машина е). Решенията са: нещо, което пуска script в screen от /etc/rc.local, в който script има while /bin/true; do пусни-нещото; sleep 2; date; done upstart или компания, които да го държат живо нормален init.d скрипт, който го пали/пуска, в тоя случай ако умре, няма да се пусне пак.
Не знам кой вариант ви харесва най-много, първия е най-грозен и се пише най-лесно :)
За Nagios-а, всъщност не знам дали ни трябва чак толкова, не е нещо фатално според мен ако не работи 20-30 минути, но ако ще следим хоста така или иначе, нищо не пречи да пуснем и един check_procs. Така и не стигнах до ползването на Upstart, когато RedHat го вкараха в дериватите си, аз си останах на SysVinit, а сега всички ще трябва да ползваме systemd :) така или иначе, така че не знам каква е опцията с upstart точно. За него вие кажете, ако в момента не е native за debian дали искаме да го слагаме само заради това да проверява този процес. Та за да е по-чист вариант може би един init script за да стартира on boot, и един малък скрипт, който да проверява на 10-20 минути дали е up, и ако не е да го стартира като ползва същия init script. Но ако варианта с upstart е по-читав, нека да е така. Иначе аз снощи драснах едно такова, но не съм го пускал за момента:
PID=$(pgrep -u anon -f anon.coffee)
if [ -z "${PID}" ];
then /home/anon_bgwikigov/anon/anon.coffee &
fi
@justnick, ще бъде каквото ти решиш. Аз бих препоръчал да поразгледаш малко Upstart или systemd и да видиш дали ще ти вършат работа. Тъкмо нещо ново ще се научи :)
Иначе - най-простото, което ще работи, плюс мониторинг дали работи (може би Nagios).
Кода за congressedits е на https://github.com/edsu/anon/ .
Работи като в едно irc слуша за промени по 30тина wiki-та (вкл. bg), проверява дали user-a е IP и го сравнява с една таблица.
Подкарах го под ubuntu 12.04 с инструкциите от README-то, трябва само да се компилира nodejs от source, защото пакета в репото е стар.
Работи out-of-the-box, но не съм тествал twitter интеграцията и не съм променял специално bg wiki-то, но не очаквам проблеми – и двете трябва да са добре тествани.
Един от requirement-ите му имаше бъг и не знам как това работи в production, като при мен умираше за 15тина мин. Пратил съм pull request, до ден очаквам да е merge-нато.
Twitter, до колкото си спомням, иска gsm за write api-то.
От към monitoring трябва да се напише един cron job/nagios/munin plugin/etc., който да проверява дали процеса е жив.