首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP-RRD不工作

PHP-RRD不工作
EN

Stack Overflow用户
提问于 2015-03-14 16:54:35
回答 1查看 920关注 0票数 0

我正在尝试用php5-rrd libraire创建rrd图。我正在尝试画(LASTHOUR,LASTHOUR,LASTHOUR,draw但效果不佳(可能我的RRA设置丢失了)。我尝试使用"rrd_update“函数。但不起作用。所以尝试使用"rrd_fetch“函数。但是所有的数据都会出现在-NaN上。

这是我的控制台日志。

代码语言:javascript
复制
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代码

代码语言:javascript
复制
$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";
}
EN

回答 1

Stack Overflow用户

发布于 2015-03-16 09:18:10

您没有足够的样本数据,因此您的图和RRAs是空的。

您的图表设置为绘制过去1小时的图表;由于您有默认的间隔(5分钟),这意味着只有12个来自最高分辨率RRA的样本。

但是,您没有任何要放入的数据!您只需调用rrd_update一次,时间戳为'now',这甚至不足以填充一个RRA条目(您将需要至少两个样本,间隔5分钟,才能完全填充一个RRA条目)。

如果您希望生成一些测试数据,可以从过去3600秒的时间戳开始,然后添加12个样本,每次迭代增加300个时间戳。这将导致在您的主要(5分钟) RRA中有11个条目,而在次要的25分钟RRA中可能有2个条目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29047167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档