gnuplot datei aufrufen oder gnuplot aufrufen und direkt hineinschreibenwenn man nichts weiter sagt, gibt gnuplot normalerweise auf dem grafischen Terminal aus (X11)
weitere Ausgabeformate sind unter anderem: PNG, PS, SVG …. und man kann die Ausgabe auch umleiten, z.B in ps2pdf
set terminal png set output "out.12.png"
set terminal postscript portrait enhanced color dashed lw 1 "Helvetica" 8 set output "| ps2pdf - gnuplotbeispiel.out.pdf"
gegeben ist eine Logdatei postgres.queryonly.log in ähnlichem Format:
2009-05-10 00:00:04 CEST 192.0.2.143 malta SELECTLOG: duration: 547.624 ms statement: SELECT data, created, headers, expire FROM cache WHERE xid = 'rot'
(Langsame Queries)
mit gnuplot 1) und folgenden Befehlen bekommt man eine schönes PDF (zeitliche Verteilung: x-Achse, Langsamkeit: y-Achse)
set format x "%R" set xdata time set timefmt "%H:%M:%S" set timestamp set terminal postscript portrait enhanced color dashed lw 1 "Helvetica" 8 set output "| ps2pdf - out.pdf" plot "postgres.queryonly.log" using 2:8 title "laufzeit datenbankanfragen"
#!/usr/bin/gnuplot
#all.dat -> postgres.laufzeit.log
#daenemark.dat -> postgres.daenemark.laufzeit.log
#portugal.dat -> postgres.portugal.laufzeit.log
#daenemark.select.dat -> postgres.selectfromcachewherecid.daenemark.laufzeit.log
set format x "%R"
set xdata time
set timefmt "%H:%M:%S"
set timestamp
# output
set terminal postscript portrait enhanced color dashed lw 1 "Helvetica" 8
set output "| ps2pdf - gnuplotbeispiel.out.pdf"
set xrange["16:00:00":"22:00:00"]
set yrange[0:7000]
plot \
"daenemark.select.dat" using 2:8 title "laufzeit daenemark select data,created,expire from cache" lc rgb "#53868b", \
"daenemark.noselect.dat" using 2:8 title "laufzeit daenemark sonstige" lc rgb "black", \
"portugal.dat" using 2:8 title "laufzeit portugal alle" lc rgb "#ffaeb9"
das noch wenig kunstvolle Ergebnis sieht so aus: gnuplotbeispiel.out.pdf
Input-Quellen können auch Programme und Scripts sein, hier mit awk:
...
plot \
"< awk '/schweden/ && /duration/ && /2009-05-12/ && /data, created, headers, expire FROM cache WHERE xid/ {print $2, $8}' postgres.log" \
using 1:2 title "laufzeit schweden select data,created,expire from cache" lc rgb "red", \
"< awk '/schweden/ && /duration/ && /2009-05-12/ && !/data, created, headers, expire FROM cache WHERE xid/ {print $2, $8}' postgres.log" \
using 1:2 title "laufzeit schweden sonstige" lc rgb "blue", \
"< awk '/frankreich/ && /duration/ && /2009-05-12/ {print $2, $8}' postgres.log" \
using 1:2 title "laufzeit frankreich alle" lc rgb "yellow"
Datum + Uhrzeit auswerten … hier in ISO: # 2009-05-10 00:00:03
gnuplot> # 2009-05-10 00:00:03
gnuplot>
gnuplot> set timefmt "%Y-%m-%d %H:%M:%S"
gnuplot>
gnuplot> set format x "%R"
gnuplot>
gnuplot> plot \
> "< awk '/norwegen/ && /duration/gc && /data, created, headers, expire FROM cache WHERE cid/ {print $1, $2, $8}' postgres.log" \
> using 1:3 title "laufzeit norwegen select data,created,expire from cache" lc rgb "#53868b"
Closing out.svg
gilt für alle Tipps, Tricks & Spickzettel:
dies sind einfache, teils banale Notizen für meinen persönlichen Gebrauch,
die hier eher zufällig auch öffentlich lesbar sind
(vielleicht hilft es ja jemandem weiter). Verwendung auf eigene Gefahr
Fehler-Hinweise, Dankesschreiben , etc. bitte an: web.25@unixwitch.de
weitere Tools / Spickzettel
gnuplot datei aufrufen oder gnuplot aufrufen und direkt hineinschreiben