Доброго времени суток.Имеется:
uname -a
FreeBSD *host.domain.ru* 6.2-RELEASE FreeBSD 6.2-RELEASE #2: Mon Apr 23 12:14:39 KRAST 2007 paul@utm.magellan-net.ru:/usr/src/sys/i386/compile/UTM i386mrtg
mrtg-2.15.2 - Multi Router Traffic GrapherНеобходимо осуществить мониторинг ошибок на интерфейсах Cisco 2811.
Привожу конфиг mrtg.cfg
EnableIPv6: no
RunAsDaemon: No
Language: russian
WorkDir: /usr/local/www/apache22/data/mrtg# Refresh: 600
# Interval: 10
# WriteExpires: Yes
# IconDir: /mrtgicons/Target[*Cisco_IP*_2_err]: .1.3.6.1.2.1.2.2.1.14.2&.1.3.6.1.2.1.2.2.1.20.2:community@*Cisco_IP*
MaxBytes[*Cisco_IP*_2_err]: 10000
Title[*Cisco_IP*_2_err]:
Options[*Cisco_IP*_2_err] : growright,nopercent,perminute,integer
PageTop[*Cisco_IP*_2_err]: ErrorsYTics[*Cisco_IP*_2_err]: 5
XSize[*Cisco_IP*_2_err]: 500
YSize[*Cisco_IP*_2_err]: 200
YLegend[*Cisco_IP*_2_err]: ErrorsВ кроне каждую минуту запускаю mrtg. В логах ошибок нету
user@host# snmpget *Cisco_IP* community .1.3.6.1.2.1.2.2.1.14.2
interfaces.ifTable.ifEntry.ifInErrors.2 = Counter32: 1200user@host# snmpget *Cisco_IP* community .1.3.6.1.2.1.2.2.1.20.2
interfaces.ifTable.ifEntry.ifOutErrors.2 = Counter32: 0файлы рисунков есть, но на графиках показывается что ошибок нет
*Cisco_IP*_2_err.log:
1189562461 1200 0
1189562461 0 0 0 0
1189562401 0 0 0 0
1189562400 0 0 0 0
1189562100 0 0 0 0
1189561800 0 0 0 0
1189561500 0 0 0 0
1189561200 0 0 2 0
1189560900 0 0 0 0
1189560600 0 0 0 0
1189560300 0 0 0 0
1189560000 0 0 0 0
1189559700 0 0 0 0
1189559400 0 0 0 0"1189561200 0 0 2 0" это строка когда как раз увеличилось количество ошибок, но мртг, как я понял строит графики по первым трем параметрам (время, in, out), а 4 и 5 параметры - это максимумы.
А мне надо следующее:
если в 12:00 у меня было 1198 ошибок
а в 12:01 стало 1200 ошибок то на графике в точке 12:01 нарисовалось "2"
далее если в 12:02 ошибок не изменилось (1200), то на графике в точке 12:02 нарисовалось "0".Подскажите пожалуйста как достичь желаемого.
>[оверквотинг удален]
>это максимумы.
>
>А мне надо следующее:
> если в 12:00 у меня было 1198 ошибок
> а в 12:01 стало 1200 ошибок то на графике в точке
>12:01 нарисовалось "2"
> далее если в 12:02 ошибок не изменилось (1200), то на графике
>в точке 12:02 нарисовалось "0".
>
>Подскажите пожалуйста как достичь желаемого.Не знаю как сейчас, но лет пять назад пришлось мртг править добавляя специальную опцию
чтобы значения не делились но вычитались. с тех пор ту старую версию и пользую. можешь сделать проще - внешний скрипт написать. сейчас я бы так сделал.
>Не знаю как сейчас, но лет пять назад пришлось мртг править добавляя
>специальную опцию
>чтобы значения не делились но вычитались. с тех пор ту старую версию
>и пользую.смотрел сам mrtg (/usr/local/bin/mrtg)
но ничего внятного не нашел, может подскажешь где именно править>можешь сделать проще - внешний скрипт написать. сейчас я
>бы так сделал.а скрипт кто будет запускать?! сам мртг? и что изменится - данные то мртг правильные считывает. Если , как вариант, написать скрипт который будет log-file формировать, а mrtg уж по этому логу будет графики строить. Но в этом случае проще все полностью написать. Реализация там не сложная, я это все продумывал, просто времени нету на написание оного.
Мне все таки лучше первый твой вариант. Или может в новой версии появилась такая опция (на оф сайте не нашел)?!
Да, ещё добавить хочу.
Как я понял если не писать gauge и absolute, то значение на графике выч по след формуле:
Y=(X[i]-X[i-1])/TimeInterval
TimeInterval по дефолту 300( как я понял :-) )
Т.е моя проблема решается так:
- либо убрать деление на TimeInterval - не подходит, т.к. такой расчет я использую для построения графиков по трафику (хотя можно скопировать скрипт с mrtg и изменять уже его)
- либо добавить свою опцию (под тип gauge и absolute)
Если поскажете хотя бы один из вариантов буду благодарен.PS:
Если добавить *perminute* или *perhour*. то Y тупо умножается на 60 или 3600 соответственно. Пробовал ставить *perhour* - как и должно было стать графики рисуются. Естественно, общая картина ошибок правильная, а цифры увеличенные.
привожу ещё лог при замене *perminute* на *perhour*1189579981 1243 0
1189579981 60 0 60 0
1189579921 59 0 120 0
1189579800 11 0 59 0
1189579500 0 0 0 0
1189579200 0 0 0 0
1189578900 0 0 0 0
1189578600 0 0 0 0
1189578300 0 0 0 0
1189578000 0 0 0 0
1189577700 47 0 244 0
1189577400 0 0 0 0
1189577100 0 0 0 0
1189576800 0 0 0 0
1189576500 11 0 61 0
1189576200 11 0 61 0
1189575900 11 0 60 0
1189575600 11 0 60 0
1189575300 0 0 0 0
1189575000 0 0 0 0
>[оверквотинг удален]
>Как я понял если не писать gauge и absolute, то значение на
>графике выч по след формуле:
>Y=(X[i]-X[i-1])/TimeInterval
>TimeInterval по дефолту 300( как я понял :-) )
>Т.е моя проблема решается так:
> - либо убрать деление на TimeInterval - не подходит,
>т.к. такой расчет я использую для построения графиков
>по трафику (хотя можно скопировать скрипт с mrtg и изменять уже
>его)
> - либо добавить свою опцию (под тип gauge и absolute)Вот именно по типу них и писал свою опцию и назвал ее errors. и именно для нее убираешь деление в мртг.
>
>Если поскажете хотя бы один из вариантов буду благодарен.
>
>PS:
>Если добавить *perminute* или *perhour*. то Y тупо умножается на 60
>или 3600 соответственно. Пробовал ставить *perhour* - как и должно было
>стать графики рисуются. Естественно, общая картина ошибок правильная, а цифры увеличенные.
>
>привожу ещё лог при замене *perminute* на *perhour*Это ерунда, он сначала делит, округляет, а потом уже умножает.
>Вот именно по типу них и писал свою опцию и назвал ее
>errors. и именно для нее убираешь деление в мртг.Вот нашел я блок который отвечает за эти переменные
# select whether the datasource gives relative or absolute return values.
my $up_abs="u";
$up_abs='m' if defined $$rcfg{'options'}{'perminute'}{$router};
$up_abs='h' if defined $$rcfg{'options'}{'perhour'}{$router};
$up_abs='d' if defined $$rcfg{'options'}{'derive'}{$router};
$up_abs='a' if defined $$rcfg{'options'}{'absolute'}{$router};
$up_abs='g' if defined $$rcfg{'options'}{'gauge'}{$router};
Добавляю сюда строчку
$up_abs='x' if defined $$rcfg{'options'}{'my_opt1'}{$router};А где идет обработка переменной $up_abs (по поиску текста по файлу много чего нашел, но конкретно где не понял)
ещё кстати увидел в исходнике есть опция *derive*
$up_abs='d' if defined $$rcfg{'options'}{'derive'}{$router};
может это то, что мне надо?
>ещё кстати увидел в исходнике есть опция *derive*
> $up_abs='d' if defined $$rcfg{'options'}{'derive'}{$router};
>может это то, что мне надо?в логе
2007-09-12 15:50:01 -- WARNING: Option[82.200.9.33_2_err]: "derive" works only with rrdtool logformat
2007-09-12 15:50:01 -- ERROR: Please fix the error(s) in your config fileТак что не оно :-(
>[оверквотинг удален]
> $up_abs='d' if defined $$rcfg{'options'}{'derive'}{$router};
> $up_abs='a' if defined $$rcfg{'options'}{'absolute'}{$router};
> $up_abs='g' if defined $$rcfg{'options'}{'gauge'}{$router};
>
>
>Добавляю сюда строчку
> $up_abs='x' if defined $$rcfg{'options'}{'my_opt1'}{$router};
>
>А где идет обработка переменной $up_abs (по поиску текста по файлу много
>чего нашел, но конкретно где не понял)Обработка идет в rateup.exe исходник править надо и пересобирать.
Я же говорю легче внешний скрипт написать.