По мотивам «расследований» из прошлой статьи написал шаблончик для графика загрузки процессора в 4-ехъядерной системе для cacti. Зачем это надо, спросите вы? Давайте посмотрим на «родной» график.

Меня не устраивают следующие вещи:

  1. коэффициент 1,33, т.е. данные умножаются не на 100, а на 133 (частота статистики ядра)
  2. суммирование данных по всем ядрам
  3. бессмысленный показатель nice.

Первые 2 пункта исправляем введением CDEF  с умножением на коэффициент 3/16. Nice я заменил на Interrupt. Скачать шаблон можно по ссылке. В админке cacti импортируем шаблон, получаем результат:

Cacti has imported the following items:

CDEF
[success] Total All Data Sources, Divide by 1.33 4 core [new]
[success] Divide 1.33 4 core [new]

GPRINT Preset
[success] Normal [update]

Data Input Method
[success] Get SNMP Data [update]

Data Template
[success] ucd/net - CPU Usage - System [update]
[success] ucd/net - CPU Usage - User [update]
[success] ucd/net - CPU Usage - Interrupt [update]

Graph Template
[success] ucd/net - CPU Usage 4 Core [new]

Команда создания графика должна выглядеть так:

RRDTool Command:
/usr/local/bin/rrdtool graph - \
--imgformat=PNG \
--start=-86400 \
--end=-300 \
--title='WWW - CPU Usage' \
--base=1000 \
--height=120 \
--width=500 \
--alt-autoscale-max \
--lower-limit=0 \
--vertical-label='percent' \
--slope-mode \
--font :10: \
--font AXIS:7: \
--font LEGEND:8: \
--font UNIT:7: \
DEF:a="/usr/local/www/apache22/data/admin/cacti/rra/www_cpu_system_417.rrd":cpu_system:AVERAGE \
DEF:b="/usr/local/www/apache22/data/admin/cacti/rra/www_cpu_user_418.rrd":cpu_user:AVERAGE \
DEF:c="/usr/local/www/apache22/data/admin/cacti/rra/www_cpu_interrupt_1563.rrd":cpu_interrupt:AVERAGE \
CDEF:cdefa=3,16,/,a,* \
CDEF:cdefe=3,16,/,b,* \
CDEF:cdefi=3,16,/,c,* \
CDEF:cdefbc=3,16,/,TIME,1314907291,GT,a,a,UN,0,a,,,TIME,1314907291,GT,b,b,UN,0,b,,,TIME,1314907291,GT,c,c,UN,0,c,,,+,+,* \
AREA:cdefa#FF0000FF:"System" \
GPRINT:cdefa:LAST:"System\: %8.2lf %s" \
GPRINT:cdefa:AVERAGE:"Average\: %8.2lf %s" \
GPRINT:cdefa:MAX:"Max\: %8.2lf %s\n" \
AREA:cdefe#0000FFFF:"User":STACK \
GPRINT:cdefe:LAST:" Current\: %8.2lf %s" \
GPRINT:cdefe:AVERAGE:"Average\: %8.2lf %s" \
GPRINT:cdefe:MAX:"Max\: %8.2lf %s\n" \
AREA:cdefi#00FF00FF:"Inter":STACK \
GPRINT:cdefi:LAST:" Current\: %8.2lf %s" \
GPRINT:cdefi:AVERAGE:"Average\: %8.2lf %s" \
GPRINT:cdefi:MAX:"Max\: %8.2lf %s\n" \
LINE1:cdefbc#000000FF:"Total" \
GPRINT:cdefbc:LAST:" Current\: %8.2lf %s" \
GPRINT:cdefbc:AVERAGE:"Average\: %8.2lf %s" \
GPRINT:cdefbc:MAX:"Max\: %8.2lf %s\n"

Добавляем для требуемого сервера Data Source типа CPU Usage — Interrupt. Далее изменяем в графике загрузки Graph Template на ucd/net — CPU Usage 4 Core, сохраняем. Далее  в списке Graph Item Fields изменяем CPU Usage — Nice (cpu_nice) на CPU Usage — Interrupt (cpu_interrupt).

В результате получаем следующую картинку:

Совсем другое дело, не правда ли?  Теперь  проценты адекватно раскрывают нагрузку и видно распределение System-User-Interrupt.

Только здесь имеется очень выгодная по необыкновенно низким ценам исполнения. .