2014-09-10 5 views
0

Итак, у меня есть маршрутизатор Adtran, и я хочу отслеживать использование процессора и памяти в одном графике. К сожалению, Adtran не предлагает процентное соотношение для использования памяти так же, как и для использования ЦП. Он предлагает два OID: один, который дает вам свободную память в байтах, а другую, которая дает вам полную память в байтах.CPU и память MRTG вместе

Я хотел бы создать цель cpu_memory в моей конфигурации MRTG, которая выполняет необходимую математику, но я не вижу способа сделать это. В идеале это сработает примерно так:

# CPU Utilization OID: .1.3.6.1.4.1.664.5.53.1.4.1.0 
# Total Memory OID: .1.3.6.1.4.1.664.5.53.1.4.7.0 (adGenAOSHeapSize) 
# Free Memory OID: .1.3.6.1.4.1.664.5.53.1.4.8.0 (adGenAOSHeapFree) 

Target[rtr-cpu_mem]: .1.3.6.1.4.1.664.5.53.1.4.1.0&(100 - (.1.3.6.1.4.1.664.5.53.1.4.8.0/.1.3.6.1.4.1.664.5.53.1.4.7.0)):[email protected] 
# ... rest of config 

Возможно ли это? Или у меня должен быть отдельный график для памяти?

+1

Что вы используете для сбора/хранения данных и построения графиков MRTG? Я бы создал rrd, который хранил 3 значения отдельно, а затем вычислял процент в CDEF при генерации графика. – Matt

ответ

1

Это действительно не возможно сделать в одном родном целевом объекте, так как вычисления применяются к обоим значениям. Хотя вы можете использовать pseudoZero и pseudoOne, чтобы обойти это частично, вы не можете управлять им таким образом.

Я бы посоветовал, что у вас есть одна цель для CPU и отдельный целевой расчет памяти, что делает его намного проще. Затем вы можете использовать опцию «dorelpercent» в Target Memory и получить выбранные и итоговые значения в отдельные значения.

Однако, если вы действительно, действительно, должны быть в той же цели, есть неудобный способ уклонения от него - пользовательские функции преобразования данных.

Вы можете определить пользовательскую функцию PERL для умножения второго элемента 100, если он меньше, чем 1, и хранить это в flie «conversion.pl»

sub topercent { 
    my $value = shift; 
    return ($1 * 100) if($value =~ /([01]\.\d*)/ and ($1<=1)); 
    return $value; 
} 

Затем определите объект как это (замените cpuoid, totalmemoid и freememoid соответственно):

ConversionCode: /path/to/conversion.pl 
Target[cpumem]: (cpuoid&totalmemoid:[email protected] - pseudoZero&freememoid:comm&rtr)/(pseudoOne&totalmemoid:[email protected]) |topercent 

Это приводит к In = cpupercent, Out = memusedpercent

я бы не советовал делать это таким образом, хотя; лучше всего придерживаться отдельных целей для памяти и процессора. Вы всегда можете объединить эти две цели в один граф для отображения, если вы используете MRTG/RRD с маршрутизаторами2 в любом случае.

Другой альтернативой является, чтобы написать сценарий пользовательской коллекции, которая делает поиск и обработку, и определить его так:

Target[cpumem]: `myscript.sh community router` 

и делают myscript.sh выходных четыре линии; Проценты процессора, процент памяти и две пустые строки.

+0

Я не знал, что вы можете назвать скрипт для цели! Это меняет все: D Большое спасибо за вашу помощь. – Rowshi

 Смежные вопросы

  • Нет связанных вопросов^_^