URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 76191
[ Назад ]

Исходное сообщение
"MRTG+ifErrors"

Отправлено melmaxnvk , 12-Сен-07 06:08 
Доброго времени суток.

Имеется:
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  i386

mrtg
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]: Errors

YTics[*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: 1200

user@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".

Подскажите пожалуйста как достичь желаемого.


Содержание

Сообщения в этом обсуждении
"MRTG+ifErrors"
Отправлено sn , 12-Сен-07 09:11 
>[оверквотинг удален]
>это максимумы.
>
>А мне надо следующее:
> если в 12:00 у меня было 1198 ошибок
> а в 12:01 стало 1200 ошибок то на графике в точке
>12:01 нарисовалось "2"
> далее если в 12:02 ошибок не изменилось (1200), то на графике
>в точке 12:02 нарисовалось "0".
>
>Подскажите пожалуйста как достичь желаемого.

Не знаю как сейчас, но лет пять назад пришлось мртг править добавляя специальную опцию
чтобы значения не делились но вычитались. с тех пор ту старую версию и пользую. можешь сделать проще - внешний скрипт написать. сейчас я бы так сделал.


"MRTG+ifErrors"
Отправлено melmaxnvk , 12-Сен-07 10:45 
>Не знаю как сейчас, но лет пять назад пришлось мртг править добавляя
>специальную опцию
>чтобы значения не делились но вычитались. с тех пор ту старую версию
>и пользую.

смотрел сам mrtg (/usr/local/bin/mrtg)
но ничего внятного не нашел, может подскажешь где именно править

>можешь сделать проще - внешний скрипт написать. сейчас я
>бы так сделал.

а скрипт кто будет запускать?! сам мртг? и что изменится - данные то мртг правильные считывает. Если , как вариант, написать скрипт который будет log-file формировать, а mrtg уж по этому логу будет графики строить. Но в этом случае проще все полностью написать. Реализация там не сложная, я это все продумывал, просто времени нету на написание оного.

Мне все таки лучше первый твой вариант. Или может в новой версии появилась такая опция (на оф сайте не нашел)?!


"MRTG+ifErrors"
Отправлено melmaxnvk , 12-Сен-07 10:57 
Да, ещё добавить хочу.
Как я понял если не писать 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


"MRTG+ifErrors"
Отправлено sn , 12-Сен-07 11:32 
>[оверквотинг удален]
>Как я понял если не писать 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*

Это ерунда, он сначала делит, округляет, а потом уже умножает.


"MRTG+ifErrors"
Отправлено melmaxnvk , 12-Сен-07 11:41 
>Вот именно по типу них и писал свою опцию и назвал ее
>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 (по поиску текста по файлу много чего нашел, но конкретно где не понял)


"MRTG+ifErrors"
Отправлено melmaxnvk , 12-Сен-07 11:45 
ещё кстати увидел в исходнике есть опция *derive*
   $up_abs='d' if defined $$rcfg{'options'}{'derive'}{$router};
может это то, что мне надо?


"MRTG+ifErrors"
Отправлено melmaxnvk , 12-Сен-07 11:50 
>ещё кстати увидел в исходнике есть опция *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

Так что не оно :-(


"MRTG+ifErrors"
Отправлено sn , 12-Сен-07 13:25 
>[оверквотинг удален]
>    $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 исходник править надо и пересобирать.
Я же говорю легче внешний скрипт написать.