Delprosjekt:
Statistikk - Grafisk representasjon

Ansvarlig:
Eirik Rogne (eirik.rogne@hiof.no)

Innledning:
Grafisk representasjon av statistikk på Al Mashriq manglet, og det ble derfor bestemt at vi skulle representere "average bytes sent" og "average requests" grafisk i en og samme graf.

Hva har vi gjort:
Til wwwstat finnes et program (gwstat) som genererer mange ulike grafiske oversikter, men dette programmet kunne ikke gi oss linjediagrammer, så gnuplot ble derfor valgt.

gnuplot er et meget kraftig verktøy for å visualisere matematiske funksjoner, og støtter de fleste platformer. gnuplot kan også brukes på datasett, og passet derfor til vår oppgave.

"Basically, gnuplot is a freely available plotting package with the added ability to fit data files to functions. It's very flexible, both in plotting and output formats - it can be run in batch mode and can even be interfaced by other programs. It's command-line driven which gives gnuplot a powerful and flexible interface via simple commands." (http://cmpc1.phys.soton.ac.uk/)

Det første som måtte gjøres var å generere filer som inneholdt de dataene vi trengte. Gjennomsnittene ble hentet fra html-sidene som ligger under /almashriq/base/statistics/ vha et perl-script (stat2gif.pl). Dette scriptet filtrerte dataene slik at de kunne brukes i gnuplot og genererte en gif for "Average megabytes sent and requests pr. day".

gnuplot har som STDOUT en X11-terminal, og vi satte derfor output til å være interlaced gif-filer med en størrelse på 800x480.

stat2gif.pl kjøres en gang i måneden, og genererer nye gif'er for hver gang. Scriptet kalles fra wwwstat.monthly.cron.

Datafilene så slik ut (gnuplot_requests.dat):

1654
2222
2371
2817
4060
4023
4745
6130
7962
6066
7539
10086
9524

Scriptet som kjøres av gnuplot (merged.gp):

set terminal gif interlace small size 800,480
set output '/www/almashriq/htdocs/base/statistics/merged.gif'
set xtics border mirror  ("Feb96" 0, "Mar96" 1, "Apr96" 2,\
"May96" 3, "Jun96" 4, "Jul96" 5, "Aug96" 6, "Sep96" 7,\
"Oct96" 8, "Nov96" 9, "Dec96" 10, "Jan97" 11, "Apr97" 12)
set y2tics
set ylabel 'Megabytes sent'
set y2label 'Requests'
plot '/www/almashriq/htdocs/base/statistics/gnuplot_bytes.dat' axes\
x1y1 title 'Megabytes sent' with lines,\
'/www/almashriq/htdocs/base/statistics/gnuplot_requests.dat'\
axes x1y2 title 'Requests' with lines

Erfaringer:
gnuplot var ikke enkelt å forstå i starten, men det finnes en god del hjelp i programmets hjelpesystem, samt på følgende url'er:

Perl kan brukes til det meste :-)

Prosjektfakta:
Lokalisering:
  • Ferdige html-sider/gif'er:
    • /almashriq/base/statistics/averages.html
    • /almashriq/base/statistics/averages.gif
  • Script:
    • /home/almash/admin/statistics/gnuplot/stat2gif.pl
Tidsestimering:
  • En dag
Ressurspersoner:
Programvare:
  • gnuplot 3.5 (pre 3.6)