Автор Тема: Proc::ProcessTable выпадают процессы, хотя в top/ps они присутствуют  (Прочитано 4393 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Собсно сабж. Как с этим бороться? Чаще всего такое происходит ночью, когда на серваке smb шары ставятся на проверку антивирусником. А по крону каждые 5 минут отрабатываются критичные процессы.
"Вылетают" четыре процесса. И если пару я могу отключить от мониторинга, то остальная пара взаимосвязана. Согласно модуля, "вылетают":

natd
pop3d
asterisk
mpg123

ВОт собственно код:
Цитировать
#!/usr/bin/perl -w
use strict;
use warnings;
use lib "/usr/local/scripts/lib/";
use lib "/usr/local/script/lib/";
use skmainmod;
use Sys::Hostname;
use Proc::ProcessTable;

my @etc = (\'/etc/FS/\',\'/usr/local/etc/chk/\',
                \'/usr/chk/etc/\',\'/usr/chk/etc/\',
                \'/usr/local/chk/etc/\',
                \'/usr/script/chk/etc/\',
                \'/usr/scripts/chk/etc/\',
                \'/usr/local/script/chk/etc/\',
                \'/usr/local/scripts/chk/etc/\');

my $etc_file = \'cryt_proc.conf\';

my @log = (\'/usr/local/script/chk/log/\',
        \'/usr/local/scripts/chk/log/\',
        \'/usr/script/chk/log/\',
        \'/usr/scripts/chk/log/\',
        \'/usr/local/var/log/chk/\',
        \'/usr/var/log/chk/\',
        \'/var/log/chk/\',
        \'/var/log/\');

my %argv = skmainmod->argum_read(@ARGV);
my $conf_file = $argv{\'conf\'} || skmainmod->chk_file($etc_file,@etc) || die "No found config file!\\nExit!\\n";

my %conf = skmainmod->read_config($conf_file);

my $table = new Proc::ProcessTable;
my @proc_arr = ();
foreach my $process (@{$table->table}) {
   my $res = 0;
   #print "--------------------------------\\n";
   #print $process->fname, "\\n";
   foreach my $tbl (@proc_arr){
      if ($tbl eq $process->fname) {
         $res++;
      }
   }
   if ($res <1) {
      push @proc_arr, $process->fname;
   }

}

my @sort_arr = sort @proc_arr;
@proc_arr = ();
@proc_arr = @sort_arr;
@sort_arr = ();

my $cryt_proc = $conf{\'crytical_process\'};
$cryt_proc =~ s/[\\s\\t++]//g;
my @report_mail;
my $mail_send = 0;
foreach my $chk (sort(split(/\\,/,$cryt_proc))){
   my $res =0;
   my $report = "Crytical process: $chk --->";
   foreach my $pr (@proc_arr){
   #   print "$pr\\n";
      if ($pr eq $chk) {
         $res++;   
      }
   }
   if ($res < 1) {
      $report = "$report is down. Warning!!!\\n";
      $mail_send++;
      &send_report(\'sms\',$chk,\'down\');
   }
   else {
      $report = "$report is active.\\n";
   }
   push @report_mail,$report;
   
}

if ($mail_send > 0){
   &send_report(\'mail\',@report_mail);
}

exit(0);



Соотвественно на выходе в почту и на sms получаю:
Цитировать
DATE of REPORT: 05:00:06 27.03.2006
HOST: k.com.ua
Crytical process: asterisk ---> is down. Warning!!!
Crytical process: httpd ---> is active.
Crytical process: master ---> is active.
Crytical process: mpg123 ---> is down. Warning!!!
Crytical process: mysqld ---> is active.
Crytical process: pptpd ---> is active.
Crytical process: radiusd ---> is active.
Crytical process: smbd ---> is active.
Crytical process: squid ---> is active.
Crytical process: sshd ---> is active.
Crytical process: vtund ---> is active.



В общем проверка показывает, что процесс живой и никуда не девался, а скрипт рапортует, что уходит в даун. Тоесть, есть подозрения, что виной имено модуль Proc::ProcessTable... В чем может быть проблема? Никто не сталкивался с подобным?
Всё будет хорошо - я договорился!

Оффлайн Алан

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 31
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alanrin.com
пуф... никогда с таким не сталкивался, но можно поискать замену этуму модулю... к примеру системный вызов system("ps -A"); и там смотреть?

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
В принципе да, можно, но не хочется замарачиваться парсингом вывода. Это не сложно, но все же. тем более, что system не возвращает результат, а возвращают обратные кавычки.
Всё будет хорошо - я договорился!

Оффлайн Алан

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 31
  • +0/-0
  • 0
    • Просмотр профиля
    • http://alanrin.com
Ну я-то и имел ввиду... честно говоря никогда этим системом и не пользовался :) а `` использовал для uptime и только :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28