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

[Приложение] Open Hardware Monitor

Добавлено: Вт дек 11, 2012 3:00 pm
Alex
Open Hardware Monitor (Mozilla Public License 2.0 )

http://openhardwaremonitor.org/

Собственно вот. Запускается как веб-сервер на 8085 порту и выдаёт всё, что только можно о состоянии компьютера. Вопрос с мониторингом компьютеров закрыт или тут есть подводные камни?

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

Добавлено: Вт дек 11, 2012 3:20 pm
sergejey
Отличное приложение. Думаю, что закрыт :)
Из особенностей -- веб-сервер запускается, но для веб-переменных нужно использовать ссылку http://localhost:8085/data.json -- именно там динамические данные передаются.

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

Добавлено: Вт дек 11, 2012 3:25 pm
raptorialfungus
Alex писал(а):Open Hardware Monitor (Mozilla Public License 2.0 )

http://openhardwaremonitor.org/

Собственно вот. Запускается как веб-сервер на 8085 порту и выдаёт всё, что только можно о состоянии компьютера. Вопрос с мониторингом компьютеров закрыт или тут есть подводные камни?
Очень неплохо. Главное, чтобы заработало на том железе, на котором стоит MajorDoMo. У меня на рабочей машине под Windows 7 64bit всё вроде определилось хорошо. Вопрос в стабильности работы.
Вся инфа забирается с встроенного веб-сервера в json-формате по ссылке http://адрессервера:порт/data.json

P.S. Извините, опоздал ;)

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

Добавлено: Вт дек 11, 2012 8:44 pm
Alex
Это работает!

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

Добавлено: Ср дек 12, 2012 12:45 am
Urbas81
Выложите пожалуйста, скрины, что куда писать, спасибо!

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

Добавлено: Ср дек 12, 2012 10:46 am
Alex
Устанавливаем и запускаем OHM как сервер.

Option – Remote Web Server - Run

Настройки.

В веб-переменных вводим
--------------------------
Ссылка:
http://ip:8085/data.json
, где ip — адрес сервера

Шаблон поиска:
CPU Total", "Children[^^]{24}Value": "([^^]{4})
(это пример, - надо подбирать индивидуально)

Связанный объект.Свойство:
тут вводите свой объект.свойство

Интервал проверки:
60

Всё. Дальше работаем как с обычным объектом.

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

Добавлено: Ср дек 12, 2012 10:47 am
Alex
Теперь подробности. У меня в файле http://ip:8085/data.json были такие строки (первые строки). К ним я подобрал такие шаблоны (вторые строки). Это работает, но, на самом деле, шаблоны некорректные. Они не учитывают изменения Min величины и Value величины. В шаблонах жёстко заданы смещения (24, 26, 27). Если меняется количество цифр в Min или Value — то шаблон промахивается.

-----------------------------------
Help! Кто хорошо понимает — поправьте шаблоны и выложите сюда, пожалуйста. Они должны учитывать изменение количества цифр в Min или Value.
-----------------------------------

Core #1 - #2", "Children": [], "Min": "56,5 В°C", "Value": "59,8 В°C", "Max": "64,4 В°C",
Core #1 - #2", "Children[^^]{27}Value": "([^^]{4})

CPU Total", "Children": [], "Min": "1,0 %", "Value": "26,9 %", "Max": "100,0 %"
CPU Total", "Children[^^]{24}Value": "([^^]{4})

33, "Text": "Memory", "Children": [], "Min": "28,1 %", "Value": "29,0 %", "Max":
33, "Text": "Memory", "Children[^^]{25}Valu

Fan #1", "Children": [], "Min": "948 RPM", "Value": "964 RPM", "Max": "969 RPM
Fan #1", "Children[^^]{26}Value": "([^^]{4})

Fan #2", "Children": [], "Min": "3515 RPM", "Value": "3515 RPM", "Max": "3590 RPM"
Fan #2", "Children[^^]{27}Value": "([^^]{4})

Temperature", "Children": [], "Min": "42,0 В°C", "Value": "43,0 В°C", "Max": "43,0 В°C", "ImageURL
Temperature", "Children[^^]{27}Value": "([^^]{4})


Ещё одна проблема. На сколько я понял OHM имеет опцию автозагрузки, но автозагружаясь не стартует веб-сервер. Кто может - помогите разобраться.

Проблема номер 3. Это персонально к Сергею. В веб-переменных есть пункт «Действие при изменении: », но иногда нужно не только действие «при изменении», но и действие «при обновлении», даже если величина не изменилась.
Зачем это нужно. На скриншоте видно, что часть датчиков имеют тёмную нижнюю часть, а часть светлую. Тёмные — это живые датчики, т. е. те, которые получили обновление в течении положенного периода, а светлые — дохлые, обновление которых по какой то причине не произошло. Так вот. При обычном обновлении легко отследить факт обновления, а в случае веб-переменных

--------------
если в течение (например) 1 минуты не изменялась контролируемая величина, то негде взять информацию, о том, что виртуальный датчик жив! FAN CPU и HDD temp выглядят дохлыми, потому, что их значение не менялось в течении минуты. На самом деле они живые и «здоровье» у них 100%!
--------------

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

Добавлено: Ср дек 12, 2012 11:03 am
raptorialfungus
Urbas81 писал(а):Выложите пожалуйста, скрины, что куда писать, спасибо!
1. Создаем свойство(а). Например, ThisComputer.fan2 и ThisComputer.cputemp. Это будет скорость вентилятора и температура жесткого диска.
2. Запрашиваем в браузере файл с данными: http://localhost:8085/data.json
3. Ищем в этом файле id необходимых параметров по имени сенсора. Например для вентилятора 2 параметр id будет иметь значение 18, а для общей температуры процессора 32.

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

{"id": 18, "Text": "Fan #2", "Children": [], "Min": "1092 RPM", "Value": "1166 RPM", "Max": "1236 RPM", "ImageURL": "images/transparent.png"}
{"id": 32, "Text": "CPU Package", "Children": [], "Min": "36,0 В°C", "Value": "40,0 В°C", "Max": "45,0 В°C", "ImageURL": "images/transparent.png"}
4. Далее в каком-то периодическом методе (например, OnNewMinute) или в каком-то сценарии пишем следующий код (поправляя id сенсоров и имена переменных):

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

function searchJson($obj, $value)
{
global $sensorvalue;
    foreach($obj as $item)
    {
        foreach($item as $child)
        {
	    if(isset($child->id) && $child->id == $value)
    	    {
                $sensorvalue = $child->Value;
                return;
            }
	searchJson($child,$value);
        }
    }
return null;
}

$ch = curl_init('http://localhost:8085/data.json');                                                                      
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
          
$ohm = curl_exec($ch);
$json = json_decode($ohm);
searchJson($json,'18');
sg('ThisComputer.fan2',$sensorvalue);
searchJson($json,'32');
sg('ThisComputer.cputemp',$sensorvalue);
Можно, конечно, через web-переменные, но это слишком много однообразных запросов получается и мучение с регулярными выражениями.

Какой именно параметр возвращать указано вот в этой строке:

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

$sensorvalue = $child->Value;
$child->Text - название сенсора, $child->Min - минимальное значение параметра и т.д.

Сергей, просьба проинспектировать код, а то я не большой спец в php. С рекурсивностью я не перемудрил? Может можно было еще проще как-то из json'а всё это запросить ...

Андрей

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

Добавлено: Ср дек 12, 2012 12:25 pm
Urbas81
Спасибо всем, буду изучать!

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

Добавлено: Ср дек 12, 2012 12:50 pm
dimitriy
Вот это находка. Полез разбираться :)