наверно много кто строил граффики *) с помощью RRD
захотел посторить красивый граффик, что б цвет менялся как тут с низу вверх
но несмог найти как


подскажите если кто сталкивался
буду крайне признателен

Код: Выделить всё
"CDEF:shading10=ping_time,0.90,*" "AREA:shading10#E10000" \
"CDEF:shading15=ping_time,0.85,*" "AREA:shading15#D20000" \
"CDEF:shading20=ping_time,0.80,*" "AREA:shading20#C30000" \
"CDEF:shading25=ping_time,0.75,*" "AREA:shading25#B40000" \
"CDEF:shading30=ping_time,0.70,*" "AREA:shading30#A50000" \
"CDEF:shading35=ping_time,0.65,*" "AREA:shading35#960000" \
"CDEF:shading40=ping_time,0.60,*" "AREA:shading40#870000" \
"CDEF:shading45=ping_time,0.55,*" "AREA:shading45#780000" \
"CDEF:shading50=ping_time,0.50,*" "AREA:shading50#690000" \
"CDEF:shading55=ping_time,0.45,*" "AREA:shading55#5A0000" \
"CDEF:shading60=ping_time,0.40,*" "AREA:shading60#4B0000" \
"CDEF:shading65=ping_time,0.35,*" "AREA:shading65#3C0000" \
"CDEF:shading70=ping_time,0.30,*" "AREA:shading70#2D0000" \
"CDEF:shading75=ping_time,0.25,*" "AREA:shading75#180000" \
"CDEF:shading80=ping_time,0.20,*" "AREA:shading80#0F0000" \
"CDEF:shading85=ping_time,0.15,*" "AREA:shading85#000000"
если голых баб туда нарисует, на фоне градиента, то да! ))
покажи как именно.sens писал(а):я уже cделал, как hizel написал
получилось симпатично
Код: Выделить всё
if(!function_exists('getmicrotime'))
{
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
}
function serverInfo($ip, $port)
{
$ip = gethostbyname($ip);
$timeStart = getmicrotime();
$fp = fsockopen('udp://'.$ip, $port);
stream_set_timeout($fp, 2);
if($fp)
{
fwrite($fp,"\xFF\xFF\xFF\xFFTSource Engine Query\0\r");
$temp = fread($fp, 4);
$status = socket_get_status($fp);
if($status['unread_bytes']>0)
{
$temp = fread($fp, $status['unread_bytes']);
$array = array();
$pos = 0;
while($pos !== false)
{
$pos2 = strpos($temp, "\0", $pos+1);
$array[] = substr($temp, $pos+1, $pos2-$pos)."\n";
$pos = $pos2;
}
if( strpos($array[0], $ip) !== 0)
{
$server['players'] = ord($array[5][0]);
# $server['maxplayers'] = ord($array[5][1]);
}
else
{
$server['players'] = ord($array[5][0]);
# $server['maxplayers'] = ord($array[5][1]);
}
}
else
$server['status'] = 'off';
}
return $server;
}
echo "213.169.74.201";
print_r(serverInfo("213.169.74.201", 27015));
echo "213.169.74.202";
print_r(serverInfo("213.169.74.202", 27015));
echo "213.169.74.203";
print_r(serverInfo("213.169.74.203", 27015));
echo "213.169.74.204";
print_r(serverInfo("213.169.74.204", 27015));
?>
Код: Выделить всё
#!/bin/sh
rrdtool create /usr/steam/grafiki/players.rrd \
--step 60 \
--start N \
DS:cs201:GAUGE:120:U:U \
DS:cs202:GAUGE:120:U:U \
DS:cs203:GAUGE:120:U:U \
DS:cs204:GAUGE:120:U:U \
RRA:LAST:0.5:1:864 \
RRA:LAST:0.5:5:864 \
RRA:LAST:0.5:60:864 \
RRA:LAST:0.5:720:864 \
RRA:LAST:0.5:2880:864
Код: Выделить всё
#!/bin/sh
cs201=`/usr/local/php5/bin/php players.php | grep -A 3 213.169.74.201 | grep player | awk '{print $3}'`
cs202=`/usr/local/php5/bin/php players.php | grep -A 3 213.169.74.202 | grep player | awk '{print $3}'`
cs203=`/usr/local/php5/bin/php players.php | grep -A 3 213.169.74.203 | grep player | awk '{print $3}'`
cs204=`/usr/local/php5/bin/php players.php | grep -A 3 213.169.74.204 | grep player | awk '{print $3}'`
echo $cs201
echo $cs202
echo $cs203
echo $cs204
DB=/usr/steam/grafiki/players.rrd
/usr/local/bin/rrdtool update $DB \
N:$cs201:$cs202:$cs203:$cs204
Код: Выделить всё
#!/bin/sh
ip="$1"
name="$2"
img="$3.png"
DS="$3"
#ip="213.169.74.202"
#name="cs1.maxmedia.org.ua cs1.6 CLASSIC"
#img="cs_202.png"
#DS="cs202"
WWWPREFIX=/home/www/img.maxmedia.org.ua/graph
RRDPREFIX=/usr/steam/grafiki
################################################################
/usr/local/bin/rrdtool graph $WWWPREFIX/$img \
--width 471 --height 70 --imgformat PNG \
--imginfo "<IMG SRC="%s" WIDTH="%lu" HEIGHT="%lu" ALT=$ip $name>" \
--step 60 \
--interlaced \
--x-grid HOUR:24:HOUR:24:HOUR:1:0:%H \
--y-grid 4:1 \
--units-length 2 \
--slope-mode \
--start -1d \
--no-gridfit \
--end now \
--alt-autoscale \
--font-render-mode light \
--pango-markup \
--title "$ip $name" --rigid --color BACK#FFFFFF --color FRAME#FFFFFF \
--color SHADEA#fff --color SHADEB#fff \
--color FONT#735e4b --color ARROW#fff\
--vertical-label players \
DEF:cs=$RRDPREFIX/players.rrd:$DS:LAST \
VDEF:avg_cs=cs,AVERAGE \
AREA:cs#375082 \
CDEF:cs10=cs,0.90,* AREA:cs10#375082 \
CDEF:cs15=cs,0.85,* AREA:cs15#3e5686 \
CDEF:cs20=cs,0.80,* AREA:cs20#485e8d \
CDEF:cs25=cs,0.75,* AREA:cs25#526894 \
CDEF:cs30=cs,0.70,* AREA:cs30#60739c \
CDEF:cs35=cs,0.65,* AREA:cs35#6d80a4 \
CDEF:cs40=cs,0.60,* AREA:cs40#7c8dad \
CDEF:cs45=cs,0.55,* AREA:cs45#8b9ab6 \
CDEF:cs50=cs,0.50,* AREA:cs50#9ba7c0 \
CDEF:cs55=cs,0.45,* AREA:cs55#aab5ca \
CDEF:cs60=cs,0.40,* AREA:cs60#bac2d4 \
CDEF:cs65=cs,0.35,* AREA:cs65#b9c2d4 \
CDEF:cs70=cs,0.30,* AREA:cs70#c8d0dd \
CDEF:cs75=cs,0.25,* AREA:cs75#d6dce6 \
CDEF:cs80=cs,0.20,* AREA:cs80#e3e7ed \
GPRINT:avg_cs:"average online %2.lf" \
GPRINT:cs:"LAST:current online %2.lf"
Код: Выделить всё
#!/bin/sh
cd /usr/steam/grafiki;
/bin/sh ./get_players.sh
#########################
#risuem grafiki
/bin/sh ./make_graph.sh 213.169.74.201 "cs2.maxmedia.org.ua cs-sorce" cs201
/bin/sh ./make_graph.sh 213.169.74.202 "cs1.maxmedia.org.ua cs1.6 CLASSIC" cs202;
/bin/sh ./make_graph.sh 213.169.74.203 "cs3.maxmedia.org.ua cs1.6 JUMP server" cs203
/bin/sh ./make_graph.sh 213.169.74.204 "cs4.maxmedia.org.ua cs1.6 clan wars" cs204
В кактусе точно также, по сути. Вручную делаем 20 цветов + 20 функций вроде такой: cdef=CURRENT_DATA_SOURCE,0.5,*detx писал(а):Как бы такую штуку к cacti прикрутить
Код: Выделить всё
/usr/local/bin/rrdtool graph - \
--imgformat=PNG \
--start=-86400 \
--end=-60 \
--title="clay - Traffic - 192.168.0.31 (wpi0)" \
--rigid \
--base=1000 \
--height=120 \
--width=500 \
--alt-autoscale \
--vertical-label="bytes per second" \
--slope-mode \
--font TITLE:12: \
--font AXIS:8: \
--font LEGEND:10: \
--font UNIT:8: \
DEF:a="/usr/local/share/cacti/rra/clay_traffic_in_67.rrd":traffic_out:LAST \
DEF:b="/usr/local/share/cacti/rra/clay_traffic_in_67.rrd":traffic_out:MIN \
DEF:c="/usr/local/share/cacti/rra/clay_traffic_in_67.rrd":traffic_out:MAX \
DEF:d="/usr/local/share/cacti/rra/clay_traffic_in_67.rrd":traffic_in:LAST \
DEF:e="/usr/local/share/cacti/rra/clay_traffic_in_67.rrd":traffic_in:MIN \
DEF:f="/usr/local/share/cacti/rra/clay_traffic_in_67.rrd":traffic_in:MAX \
CDEF:cdefa=a,-1,* \
CDEF:cdefb=a,-1,*,0.9,* \
CDEF:cdefc=a,-1,*,0.8,* \
CDEF:cdefd=a,-1,*,0.7,* \
CDEF:cdefe=a,-1,*,0.6,* \
CDEF:cdeff=a,-1,*,0.5,* \
CDEF:cdefg=a,-1,*,0.4,* \
CDEF:cdefh=a,-1,*,0.3,* \
CDEF:cdefi=a,-1,*,0.2,* \
CDEF:cdefj=a,-1,*,0.1,* \
CDEF:cdefbe=d,0.9,* \
CDEF:cdefbf=d,0.8,* \
CDEF:cdefbg=d,0.7,* \
CDEF:cdefbh=d,0.6,* \
CDEF:cdefbi=d,0.5,* \
CDEF:cdefbj=d,0.4,* \
CDEF:cdefca=d,0.3,* \
CDEF:cdefcb=d,0.2,* \
CDEF:cdefcc=d,0.1,* \
AREA:cdefa#375082FF:"Out" \
AREA:cdefb#3e5686FF:"" \
AREA:cdefc#485e8dFF:"" \
AREA:cdefd#526894FF:"" \
AREA:cdefe#60739cFF:"" \
AREA:cdeff#6d80a4FF:"" \
AREA:cdefg#7c8dadFF:"" \
AREA:cdefh#8b9ab6FF:"" \
AREA:cdefi#9ba7c0FF:"" \
AREA:cdefj#aab5caFF:"" \
GPRINT:a:LAST:" Current\:%8.2lf %s" \
GPRINT:c:AVERAGE:"Average\:%8.2lf %s" \
GPRINT:c:MAX:"Maximum\:%8.2lf %s\n" \
AREA:d#ff1010FF:"Inp" \
AREA:cdefbe#ff191aFF:"" \
AREA:cdefbf#ff3030FF:"" \
AREA:cdefbg#ff4040FF:"" \
AREA:cdefbh#ff5050FF:"" \
AREA:cdefbi#ff6060FF:"" \
AREA:cdefbj#ff7070FF:"" \
AREA:cdefca#ff8080FF:"" \
AREA:cdefcb#ff9090FF:"" \
AREA:cdefcc#ffa0a0FF:"" \
GPRINT:d:LAST:" Current\:%8.2lf %s" \
GPRINT:f:AVERAGE:"Average\:%8.2lf %s" \
GPRINT:f:MAX:"Maximum\:%8.2lf %s\n"
RRDTool Says:
OK