Страница 5 из 7

Re: Мониторинг системных ресурсов локально и через сеть

Добавлено: Пт янв 11, 2013 12:41 am
Alex
вызов из OnNewMinute 8-ми разных параметров.
Всё страньше и страньше. :)

Перенёс из метода в скрипт (и запустил как скрипт вручную) - действительно всё работает, только выдаёт

Warning: Invalid argument supplied for foreach() in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(130) : eval()'d code on line 24

это как раз - foreach($item as $child) {

Но! При работе в onNewMinute или при запуске этого же (!) скрипта через runScript из onNewMinute — не работает.

?!!

Re: Мониторинг системных ресурсов локально и через сеть

Добавлено: Пт янв 11, 2013 7:48 am
raptorialfungus
Alex писал(а):Warning: Invalid argument supplied for foreach() in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(130) : eval()'d code on line 24
Это нормально. Я просто не встраивал всяких проверок на наличие детей у родителей :)
Alex писал(а):Но! При работе в onNewMinute или при запуске этого же (!) скрипта через runScript из onNewMinute — не работает.
?!!
Пора бы уже этот onNewMinute в студию и еще его родительский, если он не пустой.

Андрей

Re: Мониторинг системных ресурсов локально и через сеть

Добавлено: Пт янв 11, 2013 11:38 am
Alex
Создал новый таймер, у которого метод onNewMinute пустой. Только одна строчка runScript. Вот этот скрипт не работает при запуске даже из совершенно пустого метода.

Код: Выделить всё

function searchJson($obj, $value){
  foreach($obj as $item) {
    foreach($item as $child) {
      if (isset($child->id) && $child->id == $value) {
        sg('ThisComputer.temp', substr($child->Value,0,strpos($child->Value,' ')));
        return;
      }
      searchJson($child,$value);
    }
  }
  return;
}

$ch = curl_init('http://192.168.1.2:8085/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$ohm = curl_exec($ch);
$json = json_decode($ohm);

searchJson($json,'17');
searchJson($json,'24');
searchJson($json,'27');
searchJson($json,'32');
searchJson($json,'50');
Одновременно, при ручном запуске он работает. :shock:

Re: Мониторинг системных ресурсов локально и через сеть

Добавлено: Пт янв 11, 2013 7:01 pm
Alex
Запустил по второму (ручному) варианту. Всё заработало. Для практических целей более чем достаточно. Вопрос, можно сказать, снят.

С другой стороны жалко, что функция (у меня) не работает. Как то неаккуратненько получается. А если у меня не работает, значит и у других может потихому барахлить. Пока ещё разберёшься, что ниже одного из её вызовов (!) при некоторых условиях (!) ничего не исполняется... Очумеешь глюки выискивать...

Re: Мониторинг системных ресурсов локально и через сеть

Добавлено: Сб июн 08, 2013 3:07 pm
seven
Alex, можно пару вопросов по Вашему веб-интерфейсу, описанном на 2й странице этой темы? Понравился очень :)
Я так понял из json файла Вы вытаскиваете не только текущее значение (value), но и минимальное (Min) и максимальное значение (Max).
Т.е. вводится еще 12 переменных для 6-ти датчиков и 2 временные переменные (для Min и Max)? Если да, то тут понятно все.
А где Вы высчитываете разницу? И откуда берется время последнего обновления?
analog20-25 это обеъекты, а value,directionArrow, updated, statDayMax,statDayMin, statDayDelta это их свойства?
И что совсем не понятно как строятся индикаторы, особенно вот эти строки:

Код: Выделить всё

&health=%analog20.health%&dbalert=%analog20.alert1%&balert=%analog20.alert2%&galert=%analog20.alert3%&oalert=%analog20.alert4%&ralert=%analog20.alert5%
Откуда это все берется? :)
Спасибо.

Re: Мониторинг системных ресурсов локально и через сеть

Добавлено: Ср ноя 06, 2013 10:06 pm
adzam
A у меня последний код Алекса выдает такую ошибку

Warning: Invalid argument supplied for foreach() in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(135) : eval()'d code on line 2
5 раз т.е. на все запросы

Re: Мониторинг системных ресурсов локально и через сеть

Добавлено: Вс ноя 10, 2013 10:37 am
DiArt
seven писал(а):Alex, можно пару вопросов по Вашему веб-интерфейсу, описанном на 2й странице этой темы? Понравился очень :)
Я так понял из json файла Вы вытаскиваете не только текущее значение (value), но и минимальное (Min) и максимальное значение (Max).
Т.е. вводится еще 12 переменных для 6-ти датчиков и 2 временные переменные (для Min и Max)? Если да, то тут понятно все.
А где Вы высчитываете разницу? И откуда берется время последнего обновления?
analog20-25 это обеъекты, а value,directionArrow, updated, statDayMax,statDayMin, statDayDelta это их свойства?
И что совсем не понятно как строятся индикаторы, особенно вот эти строки:

Код: Выделить всё

&health=%analog20.health%&dbalert=%analog20.alert1%&balert=%analog20.alert2%&galert=%analog20.alert3%&oalert=%analog20.alert4%&ralert=%analog20.alert5%
Откуда это все берется? :)
Спасибо.
Вопрос также актуален и для меня

Re: Мониторинг системных ресурсов локально и через сеть

Добавлено: Чт янв 30, 2014 7:22 am
havenofear
Всем доброго времени суток. Пару недель назад начал разбираться с данной системой, очень понравилось... Взял выложенный в данной теме скрипт и немного "допилил". Вот что у меня получилось, если кому-то нужно - пользуйтесь, буду рад замечаниям...

Код: Выделить всё

function searchJson($obj, $valut, $direct)
{foreach($obj->Children as $child)
    {   
       if(isset($child->id) && $child->id == $valut)
           {
                $sensorvalue = $child->Value;
                sg($direct,$sensorvalue);
                          }
   searchJson($child,$valut,$direct);
    }
return;
}

$ch = curl_init('http://localhost:8085/data.json');                                                                     
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$ohm = curl_exec($ch);
$json = json_decode($ohm);
searchJson($json,'8','ThisComputer.CPUtemp');
searchJson($json,'25','ThisComputer.HDDtemp');

Re: Мониторинг системных ресурсов локально и через сеть

Добавлено: Вс фев 23, 2014 10:07 am
dimik
havenofear писал(а):Всем доброго времени суток. Пару недель назад начал разбираться с данной системой, очень понравилось... Взял выложенный в данной теме скрипт и немного "допилил". Вот что у меня получилось, если кому-то нужно - пользуйтесь, буду рад замечаниям...

Код: Выделить всё

function searchJson($obj, $valut, $direct)
{foreach($obj->Children as $child)
    {   
       if(isset($child->id) && $child->id == $valut)
           {
                $sensorvalue = $child->Value;
                sg($direct,$sensorvalue);
                          }
   searchJson($child,$valut,$direct);
    }
return;
}

$ch = curl_init('http://localhost:8085/data.json');                                                                     
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$ohm = curl_exec($ch);
$json = json_decode($ohm);
searchJson($json,'8','ThisComputer.CPUtemp');
searchJson($json,'25','ThisComputer.HDDtemp');
Да. Скрипт работает замечательно. А вот как сделать чтобы состояние сервера опрашивалось циклически?
Создал файл cycle_server.php, с содержимым приведенным выше.... и почему-то этот цикл не отрабатывает. Что не так?

Re: Мониторинг системных ресурсов локально и через сеть

Добавлено: Чт мар 06, 2014 5:03 pm
dimik
Вот всегда так. Все сделал, заработало и забыл про проблему, а поделиться решением с другими забыл :)
вот код cycle_server.php:

Код: Выделить всё

<?php
/*
* @version 0.2 (auto-set)
*/

chdir(dirname(__FILE__).'/../');

include_once("./config.php");
include_once("./lib/loader.php");

set_time_limit(0);

// connecting to database
$db = new mysql(DB_HOST, '', DB_USER, DB_PASSWORD, DB_NAME); 
 
include_once("./load_settings.php");


function searchJson($obj, $valut, $direct)
{foreach($obj->Children as $child)
    {   
       if(isset($child->id) && $child->id == $valut)
           {
                $sensorvalue = $child->Value;
                sg($direct,$sensorvalue);
                          }
   searchJson($child,$valut,$direct);
    }
return;
}



$checked_time=0;
while(1) 
{
   echo date("H:i:s") . " running " . basename(__FILE__) . "\n";
   if (time()-$checked_time>10) {
	$ch = curl_init('http://localhost:8085/data.json');                                                                 
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
	$ohm = curl_exec($ch);
	$json = json_decode($ohm);
	searchJson($json,'31','ThisComputer.CPUtemp');
	searchJson($json,'33','ThisComputer.CPUload');
	searchJson($json,'18','ThisComputer.CPUFan');
   }

   if (file_exists('./reboot')) 
   {
      $db->Disconnect();
      exit;
   }
   sleep(1);
}

DebMes("Unexpected close of cycle: " . basename(__FILE__));
?>
ну и перезапустить MDM :)