Решено: Cacti и hddtemp

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
plab
Сообщения: 298
ОС: Gentoo

Решено: Cacti и hddtemp

Сообщение plab »

Установил шаблон и скрипт отсюда http://forums.cacti.net/about15743.html.
В какти девайсы определились, графики добавились, даже модели винтов написались, но проблема в том, что графики не строятся, на графиках нет ничего вообще, хотя по телнету на порт локалхоста инофрмация о температуре нормально отдается. В чем может быть проблема? В какую сторону хотя бы копать?
PIV 2.4GHz, 1.5GB RAM, Nvidia 7600GS && Xinerama, 420GB hdd
Спасибо сказали:
Аватара пользователя
plab
Сообщения: 298
ОС: Gentoo

Re: Решено: Cacti и hddtemp

Сообщение plab »

судя по всему косяк в скрипте для какти, я к сожалению ничего кроме перла толком на знаю, а эта фигня на похапэ
изначально скрипт выглядит так:

Код:

<?php /* HDDTEMP Template for cacti 0.8.6h v0.8.1 cyril@pawelko.net */ $no_http_headers = true; $port = 7634; function getdisks($host,$port) { $fp = fsockopen($host,$port, $errno, $errstr, 10); if ($fp) { $ligne = fgets($fp); fclose($fp); } $ligne=trim($ligne,"|"); $disks = array(); $disks = explode("||",$ligne); foreach ($disks as $i => $val) { $disks[$i]=explode("|",$val); } return $disks; } function printindex($disks){ foreach ($disks as $i => $val) { print($disks[$i][0])."\n"; } } function query($disks,$query){ switch ($query){ case "device" : $col = 0; break; case "model" : $col = 1; break; case "unit" : $col = 3; break; } foreach ($disks as $i => $val) { print($disks[$i][0]).":".$disks[$i][$col]."\n"; } } function get($disks,$data,$index){ if ( $data == "temperature" ) { foreach ($disks as $i => $val) { if ($disks[$i][0] == $index) { // print($disks[$i][0]).":".$disks[$i][2]."\n"; print($disks[$i][2]."\n"); } } } } $action = $_SERVER["argv"][2]; switch ($action){ case "index" : printindex(getdisks($_SERVER["argv"][1],$port)); break; case "query" : query(getdisks($_SERVER["argv"][1],$port),$_SERVER["argv"][3]); break; case "get" : if (count($_SERVER["argv"]) == 5) { get(getdisks($_SERVER["argv"][1],$port),$_SERVER["argv"][3],$_SERVER["argv"][4]); } break; } ?>

как видим, тут есть функция query($disks,$query) я так подозреваю, что она используется для определения девайсов на этапе впиливания их в cacti, если немного её подпилить

Код:

function query($disks,$query){ switch ($query){ case "device" : $col = 0; break; case "model" : $col = 1; break; case "temp" : $col = 2; break; case "unit" : $col = 3; break; } foreach ($disks as $i => $val) { print($disks[$i][0]).":".$disks[$i][$col]."\n"; } }

то через неё можно получить и температуру:

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

plab plab # php -q hddtemp.php localhost query temp
/dev/hda:34
/dev/sda:45

однако, я так подозреваю что тут для получения температуры, и для дальнейшего использования её в построении графиков для рдтулс используется другая фунция:

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

function get($disks,$data,$index){
  if ( $data == "temperature" ) {
    foreach ($disks as $i => $val) {
      if ($disks[$i][0] == $index) {
        //      print($disks[$i][0]).":".$disks[$i][2]."\n";
        print($disks[$i][2]."\n");
      }
    }
  }
}

однако, либо она не работает, либо я не могу догнать как ей пользоваться

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

plab plab # php -q hddtemp.php localhost get disks
plab plab # php -q hddtemp.php localhost get temperature
plab plab # php -q hddtemp.php localhost get data
plab plab # php -q hddtemp.php localhost get index
PIV 2.4GHz, 1.5GB RAM, Nvidia 7600GS && Xinerama, 420GB hdd
Спасибо сказали:
Аватара пользователя
plab
Сообщения: 298
ОС: Gentoo

Re: Решено: Cacti и hddtemp

Сообщение plab »

все волшебным образом заработало, спасибо
PIV 2.4GHz, 1.5GB RAM, Nvidia 7600GS && Xinerama, 420GB hdd
Спасибо сказали: