[bcn-pm] RRDs::graph i cgi

Arnau Bria listsarnau a gmail.com
dic feb 22 08:26:41 PST 2012


Hola (una altra vegada),

estava intentant fer un plot simple fent servir RRDs::grpahs (juntant 2
sources) i volia no utilitzar fitxers inter-mitjos. La cosa es que algo
com:

#!/usr/bin/perl -w
use strict;
use CGI;

print "Content-Type: image/png\n\n";
my $img =`rrdtool graph - --start -1d --end=now [...]`;
print $img;

funciona. La web em mostra el que vull.
Ara ho volia fer utilitzant RRDs:

#!/usr/bin/perl -w
use strict;
use CGI;
use RRDs;
print "Content-Type: image/png\n\n";
RRDs::graph('-', '--imgformat=PNG' , [...]) ;

Això ja genera el png (directament). Però no anava, fallava dient:
malformed header from script. Bad header=\x89PNG 
S'estava equivocant amb el header.

Ho llençava a mà i veia que el format era correcte:
-----------
Content-Type: image/png

PNG
[El png en caracters raros]
--------------------

I no entenia el error, fins que ho he llençat a un fitxer i he vist que
el content type no estava al principi del fitxer sinó en mig...
-----------
PNG
[El png en caracters raros]
Content-Type: image/png
[El png en caracters raros]
--------------------


Segurament és obvi, però, ja coneixeu el meu nivell, no entenc perquè
passa això. Algú m'il·lumina? 

Moltes gràcies per endavant,
Arnau

PS: Àlex, estic fent servir això i no Chart::Clicker perquè haig de
plotar les coses al ganglia server si o si. Tant per tant, m'envio les
dades al servidor via gmond i jugo amb els rrds generats.


Més informació sobre la llista de correu Barcelona-pm