Установил шаблон и скрипт отсюда http://forums.cacti.net/about15743.html.
В какти девайсы определились, графики добавились, даже модели винтов написались, но проблема в том, что графики не строятся, на графиках нет ничего вообще, хотя по телнету на порт локалхоста инофрмация о температуре нормально отдается. В чем может быть проблема? В какую сторону хотя бы копать?
Решено: Cacti и hddtemp
Модераторы: SLEDopit, Модераторы разделов
-
plab
- Сообщения: 298
- ОС: Gentoo
Решено: Cacti и hddtemp
PIV 2.4GHz, 1.5GB RAM, Nvidia 7600GS && Xinerama, 420GB hdd
-
plab
- Сообщения: 298
- ОС: Gentoo
Re: Решено: Cacti и hddtemp
судя по всему косяк в скрипте для какти, я к сожалению ничего кроме перла толком на знаю, а эта фигня на похапэ
изначально скрипт выглядит так:
как видим, тут есть функция query($disks,$query) я так подозреваю, что она используется для определения девайсов на этапе впиливания их в cacti, если немного её подпилить
то через неё можно получить и температуру:
однако, я так подозреваю что тут для получения температуры, и для дальнейшего использования её в построении графиков для рдтулс используется другая фунция:
однако, либо она не работает, либо я не могу догнать как ей пользоваться
изначально скрипт выглядит так:
Код:
<?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 indexPIV 2.4GHz, 1.5GB RAM, Nvidia 7600GS && Xinerama, 420GB hdd
-
plab
- Сообщения: 298
- ОС: Gentoo
Re: Решено: Cacti и hddtemp
все волшебным образом заработало, спасибо
PIV 2.4GHz, 1.5GB RAM, Nvidia 7600GS && Xinerama, 420GB hdd