Я пытаюсь создать rrd graph с помощью php5-rrd libraires.
Я пытаюсь нарисовать (LASTHOUR, LASTDAY, LASTWEEK, LASTMONTH) графики. но не работает, (может быть, мои настройки RRA отсутствуют). я пытаюсь использовать функцию «rrd_update». но не работает. так что попробуйте использовать функцию «rrd_fetch». но все данные появляются на -NaN.
Это мой консольный журнал.
1426322479:6249:1817
Array
(
[start] => 1426318800
[end] => 1426322700
[step] => 300
[data] => Array
(
[Users] => Array
(
[1426319100] => NAN
[1426319400] => NAN
[1426319700] => NAN
[1426320000] => NAN
[1426320300] => NAN
[1426320600] => NAN
[1426320900] => NAN
[1426321200] => NAN
[1426321500] => NAN
[1426321800] => NAN
[1426322100] => NAN
[1426322400] => NAN
[1426322700] => NAN
)
[Games] => Array
(
[1426319100] => NAN
[1426319400] => NAN
[1426319700] => NAN
[1426320000] => NAN
[1426320300] => NAN
[1426320600] => NAN
[1426320900] => NAN
[1426321200] => NAN
[1426321500] => NAN
[1426321800] => NAN
[1426322100] => NAN
[1426322400] => NAN
[1426322700] => NAN
)
)
)
Это мой код PHP
$rrdFile = dirname(__FILE__) . "/speed.rrd";
//create rrd file
rrd_create($rrdFile,
array(
"DS:Users:GAUGE:600:0:U",
"DS:Games:GAUGE:600:0:U",
"RRA:AVERAGE:0.5:1:1440",
"RRA:AVERAGE:0.5:5:1440",
"RRA:AVERAGE:0.5:30:800",
"RRA:AVERAGE:0.5:120:800",
"RRA:AVERAGE:0.5:1440:80")
);
//update rrd file
if(!(rrd_update($rrdFile,
array(
"N:".rand(0,9999).":".rand(0,9999)
)
))) {
$err = rrd_error();
echo "rrd_update() ERROR: $err\n";
}
// TEST CODE
$result = rrd_fetch( $rrdFile, array( "AVERAGE", "--resolution", "100", "--start", "-1h", "--end", "start+1h" ) );
print_r($result);//graph output
if(!is_array(rrd_graph(dirname(__FILE__) . "/speed.png",
array(
"--start", "-1h",
"--title", "Status",
"--vertical-label", "Users & Games",
"--width", "600",
"--height", "200",
"DEF:Users=$rrdFile:Users:AVERAGE",
"DEF:Games=$rrdFile:Games:AVERAGE",
"CDEF:cUsers=Users",
"CDEF:cGames=Games",
"LINE:cUsers#FF0000",
"LINE:cGames#00FF00")
))) {
$err = rrd_error();
echo "rrd_graph() ERROR: $err\n";
}
У вас недостаточно образцов данных, поэтому ваш график и RRA пусты.
Ваш график настроен на график за последний час; так как у вас есть интервал по умолчанию (5 минут), это означает только 12 выборок из RRA с самым высоким разрешением.
Тем не менее, у вас нет никаких данных, вводимых в! Вы только звоните rrd_update
один раз, с отметкой времени «сейчас», и этого недостаточно, чтобы заполнить хотя бы одну запись RRA (для полного заполнения записи RRA вам понадобится как минимум две выборки с интервалом времени 5 минут).
Если вы хотите сгенерировать некоторые тестовые данные, начните с временной отметки 3600 секунд в прошлом и добавьте 12 выборок, увеличив отметку времени на 300 на каждую итерацию. Это приведет к 11 записям в вашем основном (5-минутном) RRA и, возможно, 2 в вашем дополнительном 25-минутном RRA.
Других решений пока нет …