Я заметил, что могу отображать только непрерывный период с CACTI. Мне интересно, можно ли создать собственный график, отображающий только рабочие часы в течение периода (неделя, месяц и т. Д.).
Например, я хотел бы иметь возможность отображать график со средним входящим трафиком с 8:00 до 18:00 для 5 рабочих дней в неделю (с понедельника по пятницу) за последний месяц.
Я пытался настроить сценарий для RRDtool, но не знаю правильного синтаксиса. После нескольких тестов я увидел, что можно совмещать разные графики. Я думал рассчитать среднее значение всех графиков, но не знаю, как это сделать.
Я бы хотел настроить примерно следующее:
--startday 20120604+8h
--endday 20120604+18h
monday: --start startday --end endday
tuesday: --start startday+24h --end endday+24h
wednesday: --start startday+48h --end endday+48h
thursday: --start startday+72h --end endday+72h
friday: --start startday+96h --end endday+96h
DEF:monday=router.rrd:gi0/1:traffic_mon:AVERAGE
DEF:tuesday=router.rrd:gi0/1:traffic_tue:AVERAGE
DEF:wednesday=router.rrd:gi0/1:traffic_wed:AVERAGE
DEF:thursday=router.rrd:gi0/1:traffic_thu:AVERAGE
DEF:friday=router.rrd:gi0/1:traffic_fri:AVERAGE
DEF:traffic_mon:traffic_tue:traffic_wed:traffic_thu:traffic_fri:AVERAGE
Буду признателен за любую помощь.
Спасибо.
Скорее всего, сам Cacti не сможет сгенерировать для вас такой график. Вам нужно будет создать свой график RRD вручную, используя rrdgraph
. Полное решение довольно сложно, но основная суть в том, что вы создаете CDEF
с уравнением RPN, которое обнуляет данные в нерабочее время.
Очень простой пример, который удаляет часы с 2012-01-31 18:00:00 UTC на 08:00:00 UTC 01.02.2012:
DEF:ds0=/path/to/data.rrd:ds0:AVERAGE
CDEF:officehours=TIME,1328032800,GT,0,1,IF,TIME,1328083200,LT,0,1,IF,MAX,1,UNKN,IF
CDEF:dslimit=ds0,officehours,*
AREA:dslimit#00cc00:"Value "
В CDEF
для officehours
в основном проверяет, находится ли время выборки между 18:00 и 8:00. Если да, то значение UNKN
. Если это не так, значение равно 1. Умножьте это на значение, и вы получите фактические значения в рабочее время и неизвестные значения в нерабочее время. График будет показывать дыру в нерабочее время, а средние, максимальные и минимальные значения выводятся через GPRINT
или PRINT
не будет учитываться в значениях нерабочего времени.
Вам нужно будет настроить CDEF
для каждого нерабочего периода, который вы хотите отфильтровать. Время указывается в секундах, начиная с эпохи, поэтому, если вы строили график, скажем, с 1 января по 1 февраля, у вас было бы порядка 20 различных периодов, которые нужно отфильтровать. RRD имеет очень хорошие языковые хуки, так что вы можете написать простой Perl или Python скрипт, который генерирует эти графики на лету для вас.
Прочтите rrdgraph
, rrdgraph_rpn
, и rrdgraph_examples
страницы руководства для более подробной информации и примеров.
У опросчика CACTI заканчивается cron.
*/5 * * * * cactiuser php /var/www/html/cacti/poller.php > /dev/null 2>&1
Если вы хотите проводить опрос только в рабочие часы, это можно настроить в cron, но rrdtool отобразит пропуски на графике, где опрос не проводился.
Нет, rrdtool так не работает.