Страница 1 из 1

RRD красивый граффик :)

Добавлено: 2009-03-13 16:40:32
sens7
Привет
наверно много кто строил граффики *) с помощью RRD

захотел посторить красивый граффик, что б цвет менялся как тут с низу вверх
но несмог найти как :st:
Изображение
подскажите если кто сталкивался

буду крайне признателен :drinks:

Re: RRD красивый граффик :)

Добавлено: 2009-03-13 16:48:39
hizel
делается вручную, очень неудобно

Код: Выделить всё

       "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" 

Re: RRD красивый граффик :)

Добавлено: 2009-03-13 17:18:24
sens7
БОЛЬШОЕ СПАСИБО! :drinks: :drinks: :drinks:
догадывался что придеться так делать :( но думал что есть другой способ

Re: RRD красивый граффик :)

Добавлено: 2009-03-13 17:28:14
hizel
ну Тоби в рассылке чотко сказал, хотите градиенты, C в лапы и вперед на танки : )

Re: RRD красивый граффик :)

Добавлено: 2009-03-16 10:44:02
terminus
http://pchart.sourceforge.net/index.php

Может эта штука подойдет?

Re: RRD красивый граффик :)

Добавлено: 2009-03-16 11:25:13
MAK
terminus писал(а):http://pchart.sourceforge.net/index.php

Может эта штука подойдет?
если голых баб туда нарисует, на фоне градиента, то да! ))

Re: RRD красивый граффик :)

Добавлено: 2009-03-16 12:04:31
terminus
На счет "бап" и градиента я не вкурсе - просто видел, что оно красивые графики умеет рисовать. Авось подойдет...

Re: RRD красивый граффик :)

Добавлено: 2009-03-16 15:48:23
sens
я уже cделал, как hizel написал
получилось симпатично
Изображение

Re: RRD красивый граффик :)

Добавлено: 2009-03-16 19:24:55
Alex Keda
sens писал(а):я уже cделал, как hizel написал
получилось симпатично
Изображение
покажи как именно.

Re: RRD красивый граффик :)

Добавлено: 2009-03-16 19:37:26
sens7
сейчас распишу, мож кому-то згодиться
в нете надыбал простенький скриптик на пхп
с помощью которого можно получать базовую инфу о серваке
допилял его до состояния

Код: Выделить всё

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

Re: RRD красивый граффик :)

Добавлено: 2009-03-19 14:08:25
detx
Как бы такую штуку к cacti прикрутить

Re: RRD красивый граффик :)

Добавлено: 2009-03-29 19:19:54
LizardOfOzz
detx писал(а):Как бы такую штуку к cacti прикрутить
В кактусе точно также, по сути. Вручную делаем 20 цветов + 20 функций вроде такой: cdef=CURRENT_DATA_SOURCE,0.5,*
Потом делаем 20 арий нужных цветов и функций, расставляем их в правильном порядке и получаем градиент.

:crazy:

Код: Выделить всё

/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

Re: RRD красивый граффик :)

Добавлено: 2009-03-30 13:53:07
MAK
а где сиськи? ))

Re: RRD красивый граффик :)

Добавлено: 2009-03-30 13:58:42
Pez!
Спасибо за объяснение, надеюсь мне скоро это пригодится = )

Re: RRD красивый граффик :)

Добавлено: 2009-03-30 15:40:54
detx
Спасибо в обяз на днях попробую