Перейти до

ОФИГЕННЫЙ КОСЯК СО STARGAZER


Рекомендованные сообщения

Поставил я короче говоря под FreeBSD 5.2.1 Release биллинг под названием Stargazer (второй который). Настроил все скрипты как пологоается, настроил правила подсчета, начал он считать.....,и я конечно же подсел на него, остальные сидели на UserGate(e) втором......... (клиенты тобишь), тут я не успел перевести клиента первого самого для опробы.... не успели мы с клиентом проработать и дня (хотя сам обсчитывался я один на нем порядка дней 26.), как Stargazer выкидывает такую шутку........ вешает машину............ (в этот момент я работал с FTP)........ так ничего от машины я не добился, пришлось в ребут послать (за стенкой стоит), нажал заветную клавишу Reset. вошел в терминале, проверился на размонтирование - fsck , запускаю биллинг ( /sbin/stargazer) запускается............... но остался только порт UDP - 5555 а TCP порт 5555 кудато в ужасе испарился........ что только не пробовал, уже переставлял, сносил все кроме базы данных. Одинаково ему......... в логах ишет что

 

2005-01-26 13:23:10 -- User 'visser's' stat not read. Parameter D0.

2005-01-26 13:23:10 -- User visser's data not read.

 

visser - под этим логином я сижу

вот теперь незнаю что и делать, сносить его кебеням чтоль :muu:

Ссылка на сообщение
Поделиться на других сайтах

Во блин нормально................... это что теперь всю статистику его я получается потеряю? :00: так это же не дело.................. да и собственно как.......... если TCP админский порт не подымается............ блин........ че делать то.

Ссылка на сообщение
Поделиться на других сайтах

Во советчики..... ты бы глянул что там у юзверя с Д0 параметром....

и файлик stat мог бы показать ....

ну накрайняк просто перенеси его папочку временно куда-то и стартани сервер......

Ссылка на сообщение
Поделиться на других сайтах

У меня такой глюк бывает иногда.

Раз в неделю примерно.

Билд от 16.11.2004.

У какого-нибудь пользователя затирается файл stat.

Затирается - т.е. начинает весить 0 байт.

 

Обошел я его таким путем:

- каждый час делаю бекап папки /var/stargazer/users

- раз в минуту у меня запускается скрипт, который проверяет, не упал ли сервер. Если сервер упал, анализирует лог и из записей

2005-01-26 13:23:10 -- User 'visser's' stat not read. Parameter D0.

2005-01-26 13:23:10 -- User visser's data not read.

выуживает имя пользователя.

Потом восстанавливает из бекапа файл stat данного пользователя.

Кстати, этот же ежеминутный скрипт проверяет, не завис ли сервер stg.

 

Зависания сервера, как я понял, в новой версии не замечаются.

А вот обнуления файла stat, похоже, остались.

 

2Борис: посмотри пожалуйста, как такое получается.

Ссылка на сообщение
Поделиться на других сайтах

:-/ в общем друзья пришлось снести все к Бабушке Била Гейтса. :argh: И поставить по новой. В начале он ругался на пользователя............ я его снес....... предварительно сохранил лог и файл stat , потом он ругнулся на следующего и так продолжалось пока папка users не опустела......... :tongue: благо наработка была только у одного............. выжернул сумму пробил по новой пользователей.......... но это же не дело , а когда я всех переведу на Газера, это что же каждую неделю передергивать пользователей.......... блин........... Друг поделись скриптом......... очень признателен буду -:)

Ссылка на сообщение
Поделиться на других сайтах

гы

В теме http://local.com.ua/forum/index.php?showtopic=1360 Den_LocalNet хорошо написал про слова "плиз", "срочно надо" и т.п.

Это вам на будущее.

Приду с универа, поделюсь.

Ссылка на сообщение
Поделиться на других сайтах

Спасиб, пока ты с универа приедешь я уже миллион скриптов накидаю.......... не такой уж он и сложный...... вот доделаю чтоб без косяков и выложу :rrr:

Ссылка на сообщение
Поделиться на других сайтах

Вот вот. Я о том-же. Скрипты простые.

У меня работает такая связка:

Скрипт для бэкапа

#!/usr/local/bin/perl

exit unless (`/bin/ps -ax | /usr/bin/grep /usr/local/sbin/stargazer | /usr/bin/grep -v grep | /usr/bin/awk '{print \$3}'`);

($hour, $day, $month, $year) = (localtime)[2..5];
$year += 1900;
$month++;
$month = '0'.int($month) if ($month < 10);
$day = '0'.int($day) if ($day < 10);
$hour = '0'.int($hour) if ($hour < 10);
$date = "$year.$month.$day.$hour";

($h, $d, $m, $y) = (localtime(time - 21600))[2..5];
$y += 1900;
$m ++;
$d = '0'.int($d) if ($d < 10);
$m = '0'.int($m) if ($m < 10);
$m = '0'.int($m) if ($m < 10);
$h = '0'.int($h) if ($h < 10);
$old = "$y.$m.$d.$h";

`/bin/mkdir /var/back/$date`;
`/bin/mkdir /var/back/$date/log`;
`/bin/cp -rf /var/stargazer /var/back/$date`;
`/bin/cp -rf /var/log/stargazer/ /var/back/$date/log`;
`/bin/rm -rf /var/back/$old`;

Запускается каждый час.

Бэкапит содержимое /var/stargazer в /var/back/$date, а /var/log/stargazer в /var/back/$date/log.

В папке /var/back постоянно хранятся 6 последних бэкапов.

Скрипт для проверки состояния:

#!/usr/local/bin/perl

$adr = 'adr@host.ru';
($sec, $min, $hour, $day, $month, $year) = (localtime)[0..5];
$year += 1900;
$month++;

$month = '0'.int($month) if ($month < 10);
$day = '0'.int($day) if ($day < 10);
$hour = '0'.int($hour) if ($hour < 10);
$min = '0'.int($min) if ($min < 10);
$sec = '0'.int($sec) if ($sec < 10);
$date = "$year.$month.$day.$hour";
$time = "$year.$month.$day $hour:$min:$sec";
if ($stat = `/bin/ps -ax | /usr/bin/grep /usr/local/sbin/stargazer | /usr/bin/grep -v grep | /usr/bin/awk '{print \$3}'`) {
       chomp $stat;
       if ($stat eq 'I<s'){
               `/usr/local/etc/rc.d/stargazer.sh reload`;
               `echo '$time: reload' >> /var/log/stargazer/check.log`;
       }
       exit;
}elsif($user = `/usr/bin/tail -n 2 /var/log/stargazer/server.log | /usr/bin/head -n 1 | /usr/bin/awk '{print \$5}'`) {
       chomp $user;
       $user =~ s/(^\'|\'s\'$)//g;
       `/bin/cp -f /var/back/$date/stargazer/users/$user/stat /var/stargazer/users/$user/`;
       `/usr/local/etc/rc.d/stargazer.sh start`;
       `echo '$time: killed on $user' >> /var/log/stargazer/check.log`;
       `echo '$time: stargazer.killed' | /usr/bin/mail -s stargazer $adr`;
}

Запускается каждую минуту.

Перезапускает сервер при подвисаниях (в последних билдах уже не нужно) и восстанавливает файл stat у нужного юзера.

Кроме того посылает письмо на указанный адрес.

 

Советую править по вкусу =)

Ссылка на сообщение
Поделиться на других сайтах
  • 4 months later...

Объясните, плиз, что означают сии строки:

 

exit unless (`/bin/ps -ax | /usr/bin/grep /usr/local/sbin/stargazer | /usr/bin/grep -v grep | /usr/bin/awk '{print \$3}'`);

и

 ($stat = `/bin/ps -ax | /usr/bin/grep /usr/local/sbin/stargazer | /usr/bin/grep -v grep | /usr/bin/awk '{print \$3}'`)

 

Скрипт на моем серваке в таком виде не запускается. В силу абсолютно нулевых знаний perl я не могу эти строки переделать, поскольку не знаю их назначения. Буду очень признателен.

Ссылка на сообщение
Поделиться на других сайтах

текст в `` таких ковычках исполняется не перлом, а шеллом sh, bash, tcsh и т.д.

команда

/bin/ps -ax | /usr/bin/grep /usr/local/sbin/stargazer | /usr/bin/grep -v grep | /usr/bin/awk '{print $3}'

получает pid запущеного старгейзера.

Кстати забыл обратить внимание, у меня stargazer лежит в /usr/local/sbin/

У остальных он, наверное, лежит в /usr/sbin

Ссылка на сообщение
Поделиться на других сайтах
текст в `` таких ковычках исполняется не перлом, а шеллом sh, bash, tcsh и т.д.

команда

/bin/ps -ax | /usr/bin/grep /usr/local/sbin/stargazer | /usr/bin/grep -v grep | /usr/bin/awk '{print $3}'

получает pid запущеного старгейзера.

Кстати забыл обратить внимание, у меня stargazer лежит в /usr/local/sbin/

У остальных он, наверное, лежит в /usr/sbin

скорее в /sbin/

Ссылка на сообщение
Поделиться на других сайтах
текст в `` таких ковычках исполняется не перлом, а шеллом sh, bash, tcsh и т.д.

Это я понял

 

Кстати забыл обратить внимание, у меня stargazer лежит в /usr/local/sbin/

У остальных он, наверное, лежит в /usr/sbin

С этим у меня тоже проблем не возникло.

 

команда /bin/ps -ax | /usr/bin/grep /usr/local/sbin/stargazer | /usr/bin/grep -v grep | /usr/bin/awk '{print $3}'

получает pid запущеного старгейзера.

Вот здесь мне не совсем понятно. Дело в том, что pid stargazer'a я могу получить и командой "ps -ax | grep stargazer", ну или в переводе на этот язык это будет выглядеть так: "/bin/ps -ax | /bin/grep /sbin/stargazer". Мне остальной кусок команды не понятен. Дел в том, что даже если СТГ висит, он все равно виден в процессах. А когда я запускаю команду в таком виде (адаптированном под мой сервак) он упорно отправляет меня к хелпам grep'a.

Ссылка на сообщение
Поделиться на других сайтах

просто команда

/bin/ps -ax | /usr/bin/grep /usr/local/sbin/stargazer

выведет не только строчку с стг, но и может вывести

681 p0 R+ 0:00.00 /usr/bin/grep /usr/local/sbin/stargazer

поэтому я добавил

| /usr/bin/grep -v grep

чтобы убрать это.

А строчка

| /usr/bin/awk '{print $3}'

Вылавливает состояние процесса, т.е. R+, S<s, I<s и т.д.

 

Эти скрипты для версии от 15.11.2004.

Для более поздних версий я сейчас пишу новые скрипты.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...