Portál AbcLinuxu, 7. května 2025 21:56
1276087320: 1,7434196486e+05 3,1120556019e+03 3,1023615741e+03 1,7423857708e+05 0,0000000000e+00 1,4237037037e+00 1276087680: 3,4037878750e+04 3,1348242130e+03 3,0627118519e+03 3,3793932731e+04 0,0000000000e+00 2,7325925926e+00 1276088040: 2,7069677315e+04 1,6220689352e+03 1,6054371296e+03 2,6964367917e+04 0,0000000000e+00 1,3777777778e+00 1276088400: 2,3554882722e+05 5,3369871759e+03 5,3396609722e+03 2,3550564838e+05 0,0000000000e+00 2,2962962963e-02 1276088760: 5,6289655694e+04 1,8072712037e+03 1,8719590741e+03 5,6912027222e+04 0,0000000000e+00 1,3777777778e+00 1276089120: 2,3972675648e+04 9,5799629630e+02 1,2797940741e+03 2,5103761481e+04 0,0000000000e+00 1,3777777778e+00Jde o tri sitova rozhranni . Data se ukladaji jako rozdil od posledni namerene hodnoty . Data jsou v bytech , primo z /proc/net Budu vdecny za kazdy komentar .
Řešení dotazu:
rrdtool update
), to máte, akorát časem nejspíš trochu konsolidováno, což je dáno formátem databáze (vytvořené pomocí rrdtool create
). Co čísla znamenají víte jen vy, nebo ten, kdo vytvořil databázi a updatuje ji. Nějaké informace, např. názvy DS a jejich formát (COUNTER, ABSOLUTE apod.) se samozřejmě dozvíte pomocí rrdtool info
. Ale někdy je lepší se prostě podívat do skriptu, který tu databázi updatuje, a tam uvidíte, co je první, co druhý, co třetí DS ("sloupec").
Třeba podle prvního sloupce, pokud by to byl traffic, tak mezi časem 1276087320 (to je timestamp, čili počet sekund od 1.1.1970, převedete pomocí date -d @1276087320
) a časem 1276087680, což je o šest minut později, prošlo 3,4037878750e+04 bytes. Hodnota nestoupá, takže ten sloupec bude ASI typu ABSOLUTE nebo GAUGE (zjistíte pomocí toho rrdtool info
).
man rrdcreate
, sekce COUNTER
.
The counter is stored as a per-second rate.Pokud to chcete převést na množství za nějaké období tak číslo (nebo čísla) vynásobte délkami intervalu/ů v sekundách a sečtěte.
timestamp: |vaše hodnota |vaše druhá hodn. |vaše třetí hodnota... 1276087320: |1,7434196486e+05 |3,1120556019e+03 |3,1023615741e+03Na převod čísla v normovaném tvaru s exponentem, tedy:
1,7434196486e+05 ^^exponent ^znaménko exponentu ^^^^^^^^^^část čísla za desetinou čárkou ^část čísla před desetinou čárkou jinak zapsáno: 1,7434196486 * 10^5 neboli 174341,96486na desetinné číslo můžete použít třeba perl (jsem vygoogloval) nebo to převeďte nějak jinak. Následující skript čte na vstupu timestamp a dvě čísla, vrátí timestamp a převedená čísla:
while (<>) { chomp $_; @a = split/\s+/, $_; print $a[0], ' ', $a[1] *1, ' ', $a[2] *1, "\n"; }
vstup: 1276087320: 1,7434196486e+05 3,1120556019e+03 výstup: 1276087320: 174341.96486 3112.0556019Pokud by vám dělaly problém desetinné čárky místo teček, tak nastavte locales pro rrdtool, zkuste LC_NUMERIC, pokud nepomůže tak zkuste LC_ALL=C nebo LANG=C :)
LC_NUMERIC=C rrdtool fetch .. AVERAGE ...
rrdtool fetch ... | perl -w -n -e 'my @l = split;print shift @l;for(@l){printf q{ %f},$_};print "\n"'
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.