Страница 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');
Одновременно, при ручном запуске он работает.

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
