|
|
—> 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 файл, с запретом просмотра файлов в директории.
Готово. Приступаем к основному.
Построение графиков использования сетевого подключения на основе накопленных значений в базе данных 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
| Сохраните созданный скрипт и запустите его.
Кроме информации о размерах получившегося изображения после выполнения скрипта ничего появиться не должно. В один 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
|
|
|
|
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 шт.]