Мы — долго запрягаем, быстро ездим, и сильно тормозим.



—> www.lissyara.su —> RRD monitoring

Мониторинг FreeBSD сервера: статистика по трафику, загрузка процессора, использование памяти, количество процессов, температура процессора, материнской платы и жестких дисков. Визуализация полученых данных в виде графиков на основе Round Robin Database (RRD).

Автор: vitalvas.


Человек с самого начала своего появления на Земле имел жажду к рисованию. Первобытные люди рисовали мамонтов на стенах пещер, в которых они жили. Древние египтяне украшали свои гробницы росписями, на которых изображали свой быт и свою религию. Леонардо Да Винчи изобразил своей кистью Мону Лизу, да так изобразил, что над загадкой этой великой картины ученые до сих пор ломают головы. Великий Айвазовский рисовал море - страсть всей его жизни.

Чем же хуже системные администраторы? Ведь, как известно, сисадмины - тоже люди, а потому и они рисуют. Вернее было бы сказать, рисует за сисадминов софт, который они написали и сконфигурировали под свои нужды. И сегодня мы будем рисовать графики для отображения различной статистики
RRD - это аббревиатура от Round Robin Database - (кольцевая база данных). Почему
кольцевая? Потому что по прошествии определенного времени (в зависимости от размера базы) старые данные затираются, а на их место ложатся новые. Размер файлы базы всегда постоянный. База представляет собой бинарный файл, который можно прочитать с помощью инструментов из пакета rrdtools.

RRD был написан господином Отикером в качестве замены всем известному mrtg, который он сам и написал. Но RRD планировалось реализовать несколько иначе. В двух словах: основное отличие RRD от MRTG в том, что для хранения одного и того же объема данных RRD отнимет гораздо меньше дискового пространства, чем MRTG. Многие значения во времени повторяются. Это дает возможность использовать различные функции консолидации (объединения), что в свою очередь позволяет охватывать большие интервалы времени без чрезмерного увеличения объема базы, ну и конечно за счет снижения разрешающей способности.

RRD - это целый набор утилит, которые позволяют создавать RRD БД, наполнять ячейки баз числовыми значениями, изменять, при необходимости размеры и параметры баз, а также вынимать из них накопленные значения с целью наглядного представления этих значений в виде графиков.

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

От лирики перейдем к делу.
Многие из Вас наверняка уже сталкивались с такими системами мониторинга как Cacti или Zabbix. Они также используют RRDTOOL и предоставляют готовые шаблоны для мониторинга самых разнообразных параметров системы. Но, без понимания того, как эти системы работают и без понимания самого RRD, пользоваться ими нет смысла. Пожалуйста, не пишите в комментариях высказывания вида
Зачем было это писать, когда есть cacti. Такие комментарии будут удаляться. Я пишу это для тех, кто так же как и я желает разобраться в работе с RRD.

Важно запомнить, что база данных rrdtool - это всего лишь совокупность ячеек, в которые записываются числа в порядке хронологии. Следовательно, для того, чтобы собирать какую-либо статистику, нам в первую очередь нужно получить цифры. Эти цифры могут быть получены самыми разными способами и, как подтверждение этому, в статье я буду использовать различные источники получения данных, начиная с файерволла ipfw и заканчивая программами из портов.

Установка rrdtool под FreeBSD не должна вызвать трудностей, поэтому детально этот момент я не описываю. Установить пакет можно из коллекции портов.
Ставим порт: /usr/ports/databases/rrdtool

# cd /usr/ports/databases/rrdtool
# make install clean

Обратите внимание, будет также установлено достаточно много зависимостей. В частности это различные шрифты и библиотеки X. Когда установка будет завершена, у Вас в каталоге /usr/local/bin появятся такие файлы:

# ls -la /usr/local/bin/rrd*
-r-xr-xr-x  1 root  wheel  22812 24 мар 14:00 /usr/local/bin/rrdcgi
-r-xr-xr-x  1 root  wheel  22732 24 мар 14:00 /usr/local/bin/rrdtool
-r-xr-xr-x  1 root  wheel  61352 24 мар 14:00 /usr/local/bin/rrdupdate

Будем считать что rrdtool Вы установили.

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

# mkdir /usr/NET
# chmod 710 /usr/NET 
# chown root:www /usr/NET
# mkdir /usr/NET/rrd 
# chmod 700 /usr/NET/rrd
# mkdir /usr/NET/scripts 
# chmod 700 /usr/NET/scripts
# mkdir /usr/NET/www_pub 
# chmod 750 /usr/NET/www_pub 
# chown root:www /usr/NET/www_pub

В конфигурацию вашего веб-сервера можно теперь добавить что-то вроде такого:
Alias /moni/ "/usr/NET/www_pub/"

       <Directory "/usr/NET/www_pub">
           Options None
           AllowOverride Limit
           Order deny,allow
           Allow from all
       </Directory>

Можно в папку /usr/NET/www_pub положить еще .htaccess файл, с запретом просмотра файлов в директории.
Options -Indexes

Готово. Приступаем к основному.



Построение графиков использования сетевого подключения на основе накопленных значений в базе данных RRD


Графики можно строить, получая изображения в формате .PNG, либо в .GIF. Мне больше по душе первое. Построение графика сводится к извлечению значений DS из заданной БД, выполнения каких-либо математических операций над этими значениями и собственно самой отрисовки.

Как Вы помните, в нашей базе RRD мы накапливаем значения из восьми источников данных. В виду громоздкости скриптов (дабы не захламлять публикацию), я здесь приведу только один пример - скрипт построения графика использования канала по протоколу HTTP (источники данных - inHTTP и outHTTP) за последние шесть часов. Если Вы поймете принцип их построения, то без труда составите скрипты для остальных DS и для любого промежутка времени.

Вот пример скрипта:
#!/bin/sh

export LANG=KOI8-R
export LC_ALL=ru_RU.KOI8-R
RRDPREFIX=/usr/NET/rrd
WWWPREFIX=/usr/NET/www_pub
RRDCMD=”/usr/local/bin/rrdtool”

$RRDCMD graph $WWWPREFIX/HTTP_6h.png \
–width 760 \
–height 200 \
–imgformat PNG \
–start -6h \
–end now \
–slope-mode \
–font-render-mode light \
–font DEFAULT:8:Tahoma \
–font TITLE:7:Arial \
–font AXIS:6:Arial \
–font UNIT:7:”Courier New” \
–font LEGEND:6:”Courier New” \
–font WATERMARK:6:Arial \
–color BACK#2F2F2F \
–color CANVAS#003333 \
–color SHADEA#CCCCCC \
–color SHADEB#CCCCCC \
–color FONT#FFFFFF \
–color AXIS#FFFFFF \
–color ARROW#FF0000 \
–color GRID#CCCCCC \
–color MGRID#CCCCCC \
–vertical-label “Скорость бит/секунду” \
–title “Трафик HTTP сервера за последние 6 часов” \
DEF:inoctetsHTTP=$RRDPREFIX/TOTAL-HTTP-DNS-PROXY.rrd:inHTTP:AVERAGE \
DEF:outoctetsHTTP=$RRDPREFIX/TOTAL-HTTP-DNS-PROXY.rrd:outHTTP:AVERAGE \
“CDEF:inbitsHTTP=inoctetsHTTP,8,*” \
“CDEF:outbitsHTTP=outoctetsHTTP,8,*” \
COMMENT:” “\n \
AREA:outbitsHTTP#FF0000:”HTTP OUT ” \
GPRINT:outbitsHTTP:LAST:”Последнее %6.2lf %sbps ” \
GPRINT:outbitsHTTP:MAX:”Максимальное %6.2lf %sbps ” \
GPRINT:outbitsHTTP:AVERAGE:”Среднее %6.2lf %sbps ” \
GPRINT:outbitsHTTP:MIN:”Минимальное %6.2lf %sbps “\c \
COMMENT:\n \
AREA:inbitsHTTP#FFFF00:”HTTP IN ” \
GPRINT:inbitsHTTP:LAST:”Последнее %6.2lf %sbps ” \
GPRINT:inbitsHTTP:MAX:”Максимальное %6.2lf %sbps ” \
GPRINT:inbitsHTTP:AVERAGE:”Среднее %6.2lf %sbps ” \
GPRINT:inbitsHTTP:MIN:”Минимальное %6.2lf %sbps “\c \
COMMENT:” “\n \
COMMENT:”Charts created by VitalVas .\:. adm.onlytome.com”\r \
COMMENT:\n

Сохраните созданный скрипт и запустите его.
# ./CREATE_GRAPH_TRAF.sh

Кроме информации о размерах получившегося изображения после выполнения скрипта ничего появиться не должно. В один shell скрипт можно вставить несколько последовательных скриптов для генерации графиков. У меня в одном скрипте прописаны rrdtool create для всех нужных мне графиков.
Поместите CREATE_GRAPH_TRAF.sh в /etc/crontab
###################
# COUNTERS
###################
#
# ---- RRDdb Updates ----
*/5   *   *   *   *  root  /usr/NET/scripts/CREATE_GRAPH_TRAF.sh >/dev/null 2>&1



размещено: 2009-06-07,
последнее обновление: 2009-11-13,
автор: vitalvas

оценить статью:


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 13 чел.
За последние 30 мин было: 59 человек
За сегодня было
3625 показов,
1289 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Привітання з Днем народження Тітці

Время генерации страницы 0.0263 секунд
Из них PHP: 35%; SQL: 65%; Число SQL-запросов: 26 шт.
Исходный размер: 49466; Сжатая: 12729