Использование rrdtool для мониторинга сети::Журнал СА 5.2004
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6230
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6936
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4224
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3013
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3809
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3826
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6322
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3173
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3465
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7282
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10647
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12369
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 14002
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9130
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7081
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5391
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4619
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3429
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3160
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3405
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3029
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Использование rrdtool для мониторинга сети

Архив номеров / 2004 / Выпуск №5 (18) / Использование rrdtool для мониторинга сети

Рубрика: Администрирование /  Продукты и решения

ВСЕВОЛОД СТАХОВ

Использование rrdtool для мониторинга сети

Мониторинг сети и оборудования входит в одну из основных обязанностей администратора. Например, постоянное слежение способно выявить узкие места сети, показать рост ее загрузки, увидеть расход аппаратных ресурсов на серверах, вовремя обнаружит атаку и многое другое. Мониторинг можно делать самыми разнообразными способами, но, наверное, самым удобным является графическое представление данных, полученных от различных счетчиков. В данной статье речь пойдет об одной из наиболее грамотно организованных программ для выполнения таких действий, а именно о rrdtool (http://www.rrdtool.com).

Rrdtool была разработана в качестве альтернативы mrtg (написанной, кстати, тем же автором). Основной целью автора было ускорение работы и добавление расширенных возможностей по построению графиков, а также устойчивость к сбоям. Rrdtool является очень «чистой» в плане понимания логики работы, но за это пришлось поплатиться отсутствием внешнего файла конфигурации. Этот недостаток пытались исправить во многих fron-end к rrdtool (http://www.rrdtool.com/rrdworld/index.html), но, на мой взгляд, иногда проще написать грамотный скрипт, чем ковыряться со множеством настроек в запутанном конфигурационном файле. Тем более что для сбора данных с различных счетчиков выполняются практически аналогичные действия.

Итак, рассмотрим общую логику работы rrdtool. Вначале мы создаем так называемую round-robin database (кольцевая или закольцованная база), в которую можно записывать показания счетчиков. Почему round-robin – т.к. в базе хранится только определенное количество ячеек данных, иначе постоянно увеличивающееся количество поступающих данных просто-напросто переполнит файл данных лишней, устаревшей информацией.

Возникает закономерный вопрос – как сделать график, например, за год работы? Было выбрано очень грамотное решение – записывать в одну ячейку данных несколько показателей, производя над ними некую статистическую функцию. В каждую round-robin базу данных можно записывать несколько рядов ячеек, принимающих показатели из одного источника, но по-иному комбинируя поступающие данные. Ну а график строится банальным извлечением данных из базы за определенный период. Как все это выглядит на практике?

В первую очередь нужно решить, за какими данными мы будем следить. Естественно, на первый план выходит контроль трафика маршрутизаторов, коммутаторов, нагрузка аппаратной части серверов (загрузка ЦП, использование жестких дисков, контроль работы сетевых интерфейсов, объем свободной памяти и прочее), нагрузка на сетевые сервисы, такие как http-, ftp-, proxy-сервера.

И первый вопрос, который встает перед нами, – как собирать статистическую информацию. Наиболее общим решением является использование протокола snmp, но это не всегда является приемлемым для некоторых целей, например, статистики http-сервера. Тогда на помощь приходят различные утилиты анализа log-файлов, счетчики программных firewall.

Если используется snmp, то для снятия статистики достаточно иметь программы, вроде snmpget и документацию по OID соответствующего оборудования (например, по оборудованию Cisco всегда можно найти список поддерживаемых OID для конкретного устройства). В противном случае приходится вручную задавать команду для анализа необходимых параметров. Главные критерии в выборе метода – скорость, доступность и надежность. Конечно, необходимо учесть, что ценность статистической информации в ее постоянном контроле, то есть если взглянуть на состояние системы в данный момент, то вряд ли можно понять, справляется ли она с нагрузкой, увидеть рост нагрузки и выявить момент, когда что-либо будет нуждаться в замене или усовершенствовании. Определившись с источником информации, можно приступить к написанию скрипта для rrdtool.

Для начала некоторые сведения о структуре скриптов. Прежде всего создаются два или три скрипта, один из которых выполняется однократно, создавая round-robin базы данных при помощи rrdtool create. Далее необходимо периодически запускать скрипт обновления round-robin databases (далее rrdb), который снимает показания с различных сенсоров и передает их в rrdb при помощи rrdtool-update, кроме того, в этот скрипт можно включить генерацию графиков (rrdtool graph). В некоторых случаях можно вынести генерацию графиков в cgi-скрипт, тогда каждый раз при вызове cgi-скрипта будут генерироваться графики.

Второй вариант подходит при использовании mod_expire (модуль apache, позволяющий указать периоды устаревания статических данных, таких как рисунки) и является весьма практичным, т.к. графики обновляются тогда, когда запрашиваются данные, и только в том случае, если старые данные устарели (очень большое преимущество по сравнению c mrtg). При создании скрипта обновления rrdb необходимо учесть, что вызываться он будет весьма часто и при большом количестве собираемых данных может сильно «тормозить» систему. Для таких языков, как perl и python, написаны соответствующие библиотеки для доступа к rrdb, поэтому часто целесообразно использовать именно их. Однако в данной статье я буду ориентироваться все же на shell-скрипты, т.к. наиболее ресурсоемким является вызов внешних программ сбора данных, таких как snmpget.

Установка rrdtool проблем вызывать не должна – изучаем http://www.rrdtool.com/download.html и выбираем нужную версию в требуемом формате (для FreeBSD, например, лучше всего использовать систему портов). Rrdtool содержит также несколько сторонних библиотек, таких как libgd (для генерации графики), libpng (для генерации png-изображений), а также zlib (для компрессии изображений). Обязательно нужно указать в аргументах к configure --enable-shared=yes для создания разделяемых библиотек rrdtool для дальнейшего их использования другими программами.

Итак, для начала опишу применение утилит из пакета rrdtool. Для создания rrdb используется команда rrdtool create, имеющая следующий синтаксис:

rrdtool create filename.rrd --step длительность_шага DS:имя_источника_данных:тип_источника: интервал_определенности:min:max

RRA:функция_консолидации:достоверность: отсчетов_на_ячейку:число_ячеек

Думаю, необходимы некоторые пояснения.

Параметр filename.rrd указывает имя файла rrdb (может быть абсолютным или относительным, что, конечно же, решается на этапе подстановки самой shell), --step длительность_шага – задает число секунд между предполагаемыми обновлениями rrdb, далее следуют определения источников данных (DS). Строки DS описывают источники данных, которые будут поступать в rrdb, параметры DS-line означают следующее:

  • имя_источника_данных – символическое имя DS, по которому к нему будет идти обращение;
  • тип_источника – символическая константа, определяющая выбор функции для помещения нового значения в rrdb, допустимые значения:
  • COUNTER: для получения текущего значения отсчета предыдущее значение счетчика вычитается из текущего и делится на интервал между отсчетами (например, счетчик переданных байт для измерения скорости). Переполнение счетчика обрабатывается только для типа COUNTER. Счетчики могут хранить только целые 32- или 64-битные числа;
  • GAUGE: получаемое значение просто кладется в rrdb (например, для счетчика загрузки CPU или температуры, когда нужна не разность, а само значение);
  • DERIVE: COUNTER, который может уменьшаться (защиты от переполнения нет);
  • ABSOLUTE: получаемое значение делится на интервал времени между отсчетами, полезно для обнуляющихся при чтении источников данных.
  • интервал_определенности(heartbeat) – значение (в секундах), определяющее, сколько времени может пройти, пока при непоступлении новых данных от счетчика в rrdb будут записываться значения Unknown (обычное значение – 2*длительность_шага);
  • min,max: минимальные и максимальные значения, которые могут поступить с сенсора, в качестве значения может быть указан символ U, означающий отсутствие нижнего или верхнего пределов.

После опеределения DS для данной rrdb необходимо опеределить один или несколько round-robin архивов, для чего служит параметр RRA. Вообще понятие архива в данном случае означает ряд значений, получаемых для DS и имеющего такие параметры, как число точек отсчета на ячейку ряда и число ячеек в ряду. Все данные, осуществляемые с rrdb происходят не через реальные значения счетчиков, а через RRA, что позволяет вести статистику различных временных периодов и сильно сокращает размер rrdb. Синтаксис RRA-line таков:

  • функция_консолидации – функция для объединения данных, получаемых от датчика в ячейку RRA, может принимать следующие значения:
  • AVERAGE – высчитывается среднее арифметическое всех отсчетов;
  • MAX,MIN – максимальное и минимальное значение отсчетов соответственно;
  • TOTAl – сумма всех отсчетов;
  • LAST – последний полученный отсчет.
  • достоверность – минимальное число отсчетов со значением Unknown(U), чтобы данная ячейка тоже приняла значение U, указывается в виде правильной десятичной дроби (обычно подходит значение 0.5);
  • отсчетов_на_ячейку и число_ячеек – не нуждаются в комментариях.

Приведу пример создания rrdb:

rrdtool create /usr/local/var/rrdtool/myrouter.rrd --step 300 DS:input:COUNTER:600:U:U DS:output:COUNTER:600:U:U

RRA:AVERAGE:0.5:1:600 RRA:AVERAGE:0.5:6:700 RRA:AVERAGE:0.5:24:775 RRA:AVERAGE:0.5:288:797

  RRA:MAX:0.5:1:600 RRA:MAX:0.5:6:700 RRA:MAX:0.5:24:775 RRA:MAX:0.5:288:797

Эта команда создает rrdb myrouter.rrd для снятия статистики с сетевого интерфейса маршрутизатора, предполагая, что данные в нее будут поступать раз в 5 минут, задаются два источника данных: счетчик принятых и отправленных байт, при этом счетчик не имеет ограничений ни сверху, ни снизу. Создаются также 8 рядов, четыре из которых используют для консолидации данных функцию AVERAGE, а остальные – MAX. При этом создаются следующие промежутки: 600 ячеек по 5 минут, 700 ячеек по 30 минут (5*6), 775 ячеек по два часа (5*24), а также 797 ячеек, хранящих статистику отсчетов за день. В данном случае имитируется поведение mrtg, обрабатывающей такие же временные промежутки.

Для внесения данных со счетчиков в rrdb используется команда rrdtool update, имеющая достаточно простой формат:

rrdtool update имя_rrdb.rrd время:значение_DS1[:значение_DS2[:...]]

Параметр «время» может быть заменен символом «N», что означает текущее время, также допускается задавать время в UNIX-формате (вывод команды: date -u +%s) или в формате at(1). Хотя можно не заморачиваться этими проблемами и просто использовать значение «N». Значения DS указываются в том порядке, в котором они были определены в rrdtool create (допускается альтернативный порядок, но тогда имена DS должны быть перечислены указанием опции: -t ds-name:ds-name:...). В качестве значения можно использовать символ «U», обозначающий неопределенное значение. За один вызов rrdtool update в rrdb может быть передано несколько отсчетов, для чего можно указать несколько строк: time:value[:value], разделенных пробелом. Скрипт, вызывающий rrdtool update, лучше всего запускать через интервал step, указанный при создании rrdb. Приведу пример скрипта, осуществляющего обновление счетчиков принятых и отправленных байт через маршрутизатор, на базе freebsd; также производится мониторинг загрузки процессора:

--

#!/bin/sh

cpuload=`sysctl vm.loadavg | awk "{printf("2k 100 %s * p", $4)}" | dc | awk -F"." "{print $1}"`

inbytes=`ipfw show 1 | awk "{print $3}"`

outbytes=`ipfw show 2 | awk "{print $3}"`

/usr/local/bin/rrdtool update /usr/local/var/rrdtool/cpu.rrd N:${cpuload}

/usr/local/bin/rrdtool update /usr/local/var/rrdtool/myrouter.rrd N:$inbytes:$outbytes

Соответственно правила ipfw, обеспечивающие учет трафика, выглядят следующим образом:

# ipfw list

00001 count ip from me to any

00002 count ip from any to me

Счетчик загрузки процессора создается следующим образом:

rrdtool create /usr/local/var/rrdtool/cpu.rrd -s 60 DS:cpuusage:GAUGE:600:0:U RRA:AVERAGE:0.5:1:483840 RRA:MIN:0.5:1440:1

RRA:MAX:0.5:1440:1

Отмечу, что для данного счетчика используется тип GAUGE.

Далее перейдем к процедуре создания графиков. Для этого используется команда rrdtool graph, на мой взгляд, наиболее сложная по синтаксису и самая тяжелая для понимания. Здесь я привожу достаточно краткое ее описание, за более подробной информацией советую обратиться к странице Сергея Богомолова [1] или к странице man rrdgraph (1).

Вызов rrdtool graph в общем имеет следующий формат:

rrdtool graph filename [опции] [определения переменных] [задание графических элементов]

Из опций можно выделить следующие наиболее употребительные:

  • --start – точка начала отсчета графика;
  • --end – конечная временная точка графика;
  • --lazy – обновлять график только при устаревании целевого файла (смотрится mtime);
  • --imgformat – тип изображения (GIF, PNG или GD);
  • --title – заголовок для графика (кириллицу не понимает);
  • --lower-limit – нижний лимит значений;
  • --upper-limit – верхний лимит значений;
  • --rigid – не растягивать график, если встречаются значения, выходящие за верхний или нижний лимиты;
  • --width, --height – ширина и высота графика соответственно указывается в пикселях, по умолчанию rrdtool рассчитывает ширину графика, исходя из параметра --step, задающего шаг, и числа отсчетов;
  • --color – задание цвета различных элементов графика, используется в виде:

TAG:#rgbcolor

где: TAG – один из элементов графика:

  • BACK – фон;
  • CANVAS – окаймление;
  • SHADEA – границы справа и сверху;
  • SHADEB – границы слева и снизу;
  • GRID – сетка;
  • MGRID – основная сетка;
  • FONT – шрифт;
  • FRAME – границы непосредственно графика;
  • ARROW – стрелки.

Опцию --color можно использовать несколько раз для указания цвета различных элементов.

Это, разумеется, неполный список опций, но для большинства задач его вполне хватает. В rrdtool graph есть, собственно говоря, два способа задания переменных. Один – непосредственно из rrdb, а другой – на базе оценки некоторого выражения, составленного в обратной польской нотации. Рассмотрим оба этих способа. Для извлечения данных из rrdb используется следующая конструкция:

DEF:имя_переменной=rrdb:ds-name:функция_консолидации

где:

  • имя_переменной – символьное имя переменной;
  • rrdb – путь к rrdb-файлу;
  • ds-name – имя ряда, указанного в rrdtool create параметром DS:name:...;
  • функция консолидации – любая из рассмотренных ранее, используется в том случае, если отсчеты происходили чаще, чем разрешение графика (идеальный вариант – один отсчет на один пиксель), если разрешение выше частоты отсчетов, то график масштабируется.

Следующий способ задания переменных графика заключается в оценке выражения, записанного в обратной польской нотации (те, кто знаком, например, с калькулятором dc или некоторыми настольными калькуляторами HP, знают, что это такое). Идея записи такова: числа помещаются в стек, операторы извлекают нужное количество чисел из стека, проводят над ними необходимые операции и помещают результат в стек. Например, выражение:

2 3 +

будет обработано следующим образом:

поместить в стек число 2

2 -> .

поместить в стек число 3

2 -> 3 -> .

взять из стека два числа и сложить их, результат поместить

обратно в стек

5 -> .

Выражения в обратной польской нотации очень легко обрабатывать программно (для обычной записи необходимо строить бинарное дерево операндов). Теперь вернемся к rrdtool. Запись переменной таким способом выглядит следующим образом:

CDEF:имя_переменной=выражение

Операнды в выраженнии разделяются запятыми. Список операторов довольно широк:

  • стандартные арифметические (+, -, *, /, %);
  • тригонометрические (SIN, COS);
  • алгебраические (LOG, EXP, FLOOR, CEIL);
  • сравнения (GT, GE (>=), LT, LE (<=), EQ, работают так – берутся два числа из стека, сравниваются, в стек помещается 0 или 1, например: 1,2,LT поместит в стек 0 (аналогично 1>2));
  • условный оператор IF (из стека берутся три значения, если последнее истинно (не ноль) – в стек помещается второе выражение, если ложно – то первое, например 1,2,LT,1,0,IF будет расцениваться так, если 1>2, то поместить в стек 1, иначе поместить 0);
  • статистические (MIN, MAX, берут из двух значений из стека минимальное и максимальное соответственно);
  • ограничения (LIMIT, берет три значения из стека: var,low,high – если var не лежит между low и high, то в стек помещается UNKNOWN, иначе – var).

Есть еще ряд операций для работы непосредственно со стеком, но применяются они довольно редко, потому рассматриваться здесь не будут. Теперь перейдем к этапу задания отрисовки графика. Для этого существует ряд параметров. Общий вид директив, задающих линии и области, на графике таков:

Тип:имя_переменной[#rgbcolor[:легенда]]

где:

  • #rgbcolor – цвет, заданный в RGB-стандарте,
  • легенда – подпись под графиком, описывающая линию или область.

Поле «тип» может принимать следующие значения:

  • HRULE – горизонтальная линия на графике (идет параллельно шкале времени);
  • VRULE – вертикальная линия на графике (переменная должна быть временного типа, для чего в CDEF существуют функция TIME);
  • LINE{1,2,3} – линия заданной толщины (1 – невидимая, 3 – самая толстая);
  • AREA – закрашенная область;
  • STACK – рисует линию над предыдущей линией (заданной LINE, AREA или другим STACK) на расстоянии, равном значению переменной.

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

GPRINT:имя_переменной:функция_консолидации:формат

Параметр «формат» определяет метод вывода чисел с плавающей точкой (%lf - фиксированная запятая, %lg – автовыбор, %le – экспоненциальный) и выравнивание:

  • \l – влево;
  • \r – вправо;
  • \c – в центр;
  • \j – по ширине.

Например:

%lfc

Также можно добавлять %s, что вставит дополнительный пробел по вертикали между текстом и легендой, например %lg%s . Приведу пример скрипта, который создает графики загрузки CPU и сетевого интерфейса:

#/bin/sh

WWWPREFIX=/usr/local/www/htdocs/rrdtool

RRDPREFIX=/usr/local/var/rrdtool

/usr/local/bin/rrdtool graph $WWWPREFIX/cpuusage.png --width 400 --start -1d --end now

    --title "CPU usage" DEF:cpuusage=$RRDPREFIX/cpu.rrd:cpuusage:AVERAGE "CDEF:percent=cpuusage"

    CDEF:huge=percent,50,GT,percent,0,IF CDEF:good=percent,50,GT,0,percent,IF HRULE:100#0000FF:"Maximum allowed"

    AREA:good#00FF00:"Good load" AREA:huge#FF0000:"Overload!!" 

/usr/local/bin/rrdtool graph $WWWPREFIX/myrouter.png --width 400 --start -1d --end now

    --title "Network usage" DEF:inoctets=$RRDPREFIX/myrouter.rrd:input:AVERAGE

    DEF:outoctets=$RRDPREFIX/myrouter.rrd:output:AVERAGE "CDEF:inbits=inoctets,8,*" "CDEF:outbits=outoctets,8,*"

    AREA:inbits#00FF00:"In traffic" LINE1:outbits#0000FF:"Out traffic"

Графики, сгенерированные данным скриптом, будут выглядеть следующим образом:

Рисунок 1

Рисунок 2

В графике загрузки CPU задаются две зоны – нормальная нагрузка и перегрузка. Перегрузка наступает при загруженности процессора на более чем 50 %. В графике загрузки сети происходит перерасчет байт, возвращаемых счетчиками ipfw в биты, в которых принято мерить нагрузку сети. В данном примере генерируются однодневные графики. Изменив переменную $PAST, можно добиться генерации графиков за нужный период времени.

Для запуска скрипта обновления и генерации картинок каждую минуту пишем в /etc/crontab следующую строчку:

<begin cut>

*  *  *  *  *  root /usr/local/libexec/rrdtools-update.sh > /dev/null

<end cut>

Для более же удобной генерации картинок можно использовать специальный cgi-интерпертатор rrdcgi, позволяющий вставлять теги вида: .

Генерация графика с его помощью будет выглядеть следующим образом:

#!/usr/local/bin/rrdcgi

<HTML>

<HEAD><TITLE>RRDCGI Demo</TITLE></HEAD>

<BODY>

<H1>Demo of CPU usage graph</H1>

<P>

<RRD::GRAPH ../htdocs/images/cpu.png --lazy --width 400 --start -1d --end now

    --title "CPU usage" --imginfo "<IMG SRC=/images/%s WIDTH=%lu HEIGHT=%lu >"

    DEF:cpuusage=/usr/local/var/rrdtool/cpu.rrd:cpuusage:AVERAGE "CDEF:percent=cpuusage" CDEF:huge=percent,50,GT,percent,0,IF

    CDEF:good=percent,50,GT,0,percent,IF HRULE:100#0000FF:"Maximum allowed" AREA:good#00FF00:"Good load"

    AREA:huge#FF0000:"Overload!!">

</P>

</BODY>

</HTML>

Учтите, что директория, куда производится запись картинок, должна быть доступна для записи пользователю, под которым работает apache (по умолчанию nobody:nobody). Параметр --lazy указан, чтобы не «дергать» rrdgraph при чрезмерно частом обновлении страницы.

В данной статье я не буду приводить много примеров графиков. В дебрях Интернета я нашел набор скриптов, который позволит решить большинство проблем и выполнить мониторинг основных параметров FreeBSD-маршрутизатора. Хотя чаще всего бывает полезнее использовать snmp для сбора разнообразной информации из гетерогенной сети.

Учтите, что главное в мониторинге – его постоянность, поэтому компьютер, на котором накапливаются статистические данные, должен быть хорошо защищен и стабилен. Только так можно проследить динамику развития инфраструктуры сети и предложить замену узких мест (подойти к начальству и продемонстрировать графики производительности намного эффективнее, нежели пытаться объяснить все на пальцах: «Ну эта, тормозит!»).

Rrdtool дает гораздо больше возможностей, нежели mrtg, поэтому совершенствовать графики и скрипты можно постоянно, заставляя их показывать ту информацию, которая нужна. Конечно же, обычно наиболее полезным является сбор статистики каждого устройства за определенный промежуток времени (день, месяц, год). Как вы могли убедиться, реализовать такое поведение не должно составить труда.

Список ссылок:

  1. http://www.rrdtool.com – основной сайт rrdtool, ссылки на front-end, различные скриншоты, документация и море всего полезного.
  2. http://bog.pp.ru/work/rrdtool.html – неплохой перевод документации к rrdtool.
  3. http://www.ag0ny.com/graphs – набор скриптов для генерации графиков работы FreeBSD маршрутизатора (очень просты и удобны).
  4. http://www.rrdtool.com/rrdworld/index.html – список разнообразных front-end к rrdtool, полезны, когда нет времени и желания писать скрипт.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru