Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: sandman_7920 в Feb 20, 2008, 13:03



Титла: Проблем с rrdtool
Публикувано от: sandman_7920 в Feb 20, 2008, 13:03
Много гаден проблем ми се очертава с rrdtool

Схема на rrd базата

-s 300\
DS:in:COUNTER:600:0:4294967295\
DS:out:COUNTER:600:0:4294967295\
RRA:AVERAGE:0.5:1:576\
RRA:AVERAGE:0.5:6:672\
RRA:AVERAGE:0.5:24:732\
RRA:AVERAGE:0.5:144:1460

Дотук всичко си е съвсем тривиално.
За Max на DS на rrd-то е сложена максималната стойност за един 32-bit counter

Проблема е следния взимам данните за трафика на ланките от /proc/net/dev и след рестарт на системата брояча им се нулира и при следващият отчет ми се генерира 100mbit. трафик, защото rrd-to си мисли, че брояча е стигнал макс. (2^32) и е превъртял (current=MAX-OLD+NEW).

Когато се ползва snmp за събиране на данните за броячите няма този проблем, защото snmp-to гледа system uptime.

Много, ама много ще се радвам, ако някой ми помогне,даде съвет или ми каже от къде да прочета решение за проблема.


Титла: Проблем с rrdtool
Публикувано от: sandman_7920 в Feb 20, 2008, 14:08
Реших си проблема, ама търсех някой по-елегантен начин, но и този не е много зле.

cat eth

#!/bin/bash

upt=$(cat /proc/uptime |awk -F "." '{print $1}')

if [ $upt -gt 480  ]; then
   cat /proc/net/dev|grep -i $1|cut -d":" -f2|awk -F " " '{print $1"\n"$9}'
fi

echo -e "U\nU"

С промяната в скрипта вече правя проверка за uptime да е повече от 8 мин. за да може rrd да запише поне един Unknown отчет, за да почне калкулацията от начало.

./eth eth0
U
U