rrd 그래프를 생성하고 있는데 2 가지 문제가 있습니다.php RRD 정수 대신 부동 값 그래프 표시
문제 1 : 인쇄 할 때 소수점이없는 정수입니다. 인쇄 할 때 소수점이 나타납니다. 정말 혼란 스럽습니다. 그래서 rrdgraph_graph에서 온라인으로 보았습니다. 올바른 구문을 사용하고 있지만 계산을 적용하지 않고 있지만 여전히 정수 대신 부동 값을 얻습니다. 공식 웹 사이트에 따르면
는 :%s place this after %le, %lf or %lg. This will be replaced by the appropriate SI magnitude unit and the value will be scaled accordingly (123456 -> 123.456 k).
I 출력의 샘플로 사진을 첨부했다. 또한 RRD가 가능한 오류를 볼 수 있음을 이해하면 작업 예제 코드를 제공합니다.
문제 2 : 그래프에 VRULE:time#color[:legend][:dashes[=on_s[,off_s[,on_s,off_s]...]][:dash-offset=offset]]
함수를 추가하려고 시도하고 온라인 지침에 따라 시간을 제공 할 수 있습니다. 그래프가 바뀌고 있기 때문에 1800 초 (가치)를 할 계획이었습니다. 그래프 중간에 세로선을 배치하여 30 분 값의 평균을 볼 수있었습니다. 나는 그런 형식을 신청하는 경우이 오류를 얻을 :
<b>Graph error: </b>parameter '1400274668-1800' does not represent time in line VRULE:1400274668-1800#0000CD:Half way values
내가 빼기 모든 작업 벌금을 제거합니다. 그래프의 중간에이 선을 만드는 방법이 있습니까?
<?php
$file = "snmp";
$rrdFile = dirname(__FILE__) . "/".$file.".rrd";
$in = "losses";
$png = "/home/linux/Desktop/";
$in_min = "vdef_in_min";
$in_max = "vdef_in_max";
$in_lst = "vdef_in_lst";
$in_av = "vdef_in_av";
$title = "Losses RRD::Graph";
$output = array("1h","1d");
$step = 5;
$heartbeat = 2 * $step;
while (1) {
sleep (1);
$options = array(
"--start","now -15s",
"--step", "".$step."",
"DS:".$in.":GAUGE:".$heartbeat.":0:U",
"RRA:LAST:0.5:1:3600",
"RRA:MIN:0.5:1:3600",
"RRA:MAX:0.5:1:3600",
"RRA:AVERAGE:0.5:6:600",
"RRA:LAST:0.5:300:288",
"RRA:MIN:0.5:300:288",
"RRA:MAX:0.5:300:288`",
"RRA:AVERAGE:0.5:600:144"
);
if (!isset($create)) {
$create = rrd_create(
"".$rrdFile."",
$options
);
if ($create === FALSE) {
echo "Creation error: ".rrd_error()."\n";
}
}
$t = time();
$losses = rand(0, 150);
$update = rrd_update(
"".$rrdFile."",
array(
"".$t.":".$losses.""
)
);
if ($update === FALSE) {
echo "Update error: ".rrd_error()."\n";
}
date_default_timezone_set('Europe/Stockholm');
$timezone = new DateTime(NULL, new DateTimeZone('Europe/Stockholm'));
$date = date('l jS \of F Y h\\:i\\:s A' , $timezone->format('U'));
$comment = "RRD last updated:".$date;
$comment = str_replace(":", "\\:", $comment);
$graph = "Graph last updated:".$date;
$graph = str_replace(":", "\\:", $graph);
foreach ($output as $test) {
$final = array(
"--start","end - ".$test."",
"--end", "".$t."",
"--title=".$file." RRD::Graph with - ".$test." Periods",
"--vertical-label=Bytes(s)/sec",
"--right-axis-label=latency(ms)",
"--alt-y-grid", "--rigid",
"--width", "800", "--height", "500",
"--lower-limit=0",
"--no-gridfit",
"--slope-mode",
"DEF:".$in."_def=".$file.".rrd:".$in.":LAST",
"CDEF:inbytes=".$in."_def",
"VDEF:".$in_lst."=inbytes,LAST",
"VDEF:".$in_min."=inbytes,MINIMUM",
"VDEF:".$in_max."=inbytes,MAXIMUM",
"VDEF:".$in_av."=inbytes,AVERAGE",
"COMMENT:\\n",
"LINE2:".$in."_def#FF0000:".$in."",
"GPRINT:".$in_min.": Minimum\:%6.2lf %S",
"GPRINT:".$in_max.":Maximum\:%6.2lf %S",
"GPRINT:".$in_lst.":Last\:%6.2lf %s",
"GPRINT:".$in_av.":Average\:%6.2lf %s",
"COMMENT:\\n",
"VRULE:".$t."#0000CD:Half way values",
"COMMENT:\\n",
"HRULE:50#FFFF00:Maximum value",
"COMMENT:\\n",
"COMMENT: ",
"COMMENT:\\n",
"COMMENT:".$comment."\\r",
"COMMENT:".$graph."\\r"
);
$outputPngFile = rrd_graph(
"".$png."".$test.".png",
$final
);
if ($outputPngFile === FALSE) {
echo "<b>Graph error: </b>".rrd_error()."\n";
}
}
$debug = rrd_lastupdate (
"".$rrdFile.""
);
if ($debug === FALSE) {
echo "<b>Graph result error: </b>".rrd_error()."\n";
}
var_dump ($debug);
}
?>
더 많은 정보를 읽고 이해하기 위해 정보를 제공해 주셔서 감사합니다. 모든 것이 더 의미가 있기 시작합니다 ... 시간과 노력에 감사드립니다. 이것은 많은 사람들이 그것에 대해 많이 알지 못하는 후방 주제입니다. – thanos