Переход к предыдущей публикации Полуночная “романтика” при свечах Lenovo Ideapad G530-4A | Мощная лошадка за разумные деньги Переход к следущей публикации

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

Среда, 8 апреля, 2009 01:59:13 EEST

Исправления от 26 июня, 2009 01:12:12

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

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

Нет! Мы их будем не “строить”, а именно рисовать. Ведь благодаря человеку по имени Тоби Отикер (Tobi Oetiker) мы имеем для этого потрясающий инструмент, под названием rrdtool или RRD.

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

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

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

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

Подготовка

От лирики перейдем к делу. Прежде всего, для более полного понимания данного материала я попрошу Вас прочитать документацию по RRD на русском языке, которую очень давно перевел с английского Сергей Богомолов. В процессе прихода к пониманию принципов работы с RRD я руководствовался большей частью именно ей, потому что изложил Сергей Евгеньевич все достаточно доходчиво и понятно. Кроме этого, в процессе написания этого материала я использовал в качестве источника английскую документацию по rrdtool на сайте автора.

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

Здесь я не стану переводить на русский язык мануал по RRDTOOL и по сопутствующим ему командам, а всего лишь приведу готовые и рабочие примеры использования RRD для сбора и визуализации статистики различных параметров FreeBSD сервера, естественно, с пояснениями к ним.

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

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

В статье пойдет речь о том, как получить в виде .PNG (или .GIF) графиков статистику использования сетевого интерфейса, с отображением текущей загрузки канала по определенным портам и протоколам, статистику использования ресурсов центрального процессора, статистику использования памяти сервера, а также количества запущенных процессов в системе. Кроме этого покажу как можно оперативно отслеживать температуру различных аппаратных узлов сервера. На самом деле, это далеко не полный перечень возможностей. Главное понять основной принцип, а дальше фантазии не будет предела.

* * *

Установка rrdtool под FreeBSD не должна вызвать трудностей, поэтому детально этот момент я не описываю. Установить пакет можно из коллекции портов. Обратите внимание, в портах несколько версий RRD:

# cd /usr/ports/
# make search name="rrdtool"
  ...
Port:   rrdtool-1.3.3
Path:   /usr/ports/databases/rrdtool
Info:   Round Robin Database Tools
Maint:  bg1tpt@gmail.com
B-deps: bitstream-vera-1.10_4 cairo-1.6.4_3,1 encodings-1.0.2,1 expat-2.0.1 font-bh-ttf-1.0.0 font-misc-ethiopic-1.0.0 font-misc-meltho-1.0.0_1 font-util-1.0.1 fontconfig-2.5.0,1 freetype2-2.3.7 gamin-0.1.9_2 gettext-0.17_1 gio-fam-backend-2.16.5 glib-2.16.5 gmake-3.81_3 kbproto-1.0.3 libX11-1.1.3_1,1 libXau-1.0.3_2 libXdmcp-1.0.2_1 libXft-2.1.13 libXrender-0.9.4_1 libfontenc-1.0.4 libiconv-1.11_1 libpthread-stubs-0.1 libtool-1.5.26 libxcb-1.1.90.1 libxml2-2.6.32_1 mkfontdir-1.0.3_1 mkfontscale-1.0.3 pango-1.20.5 pcre-7.8 perl-5.8.8_1 pixman-0.10.0_2 pkg-config-0.23_1 png-1.2.32 python25-2.5.2_3 renderproto-0.9.3 xcb-proto-1.2 xcb-util-0.2.1 xorg-fonts-truetype-7.3 xproto-7.0.10_1
R-deps: bitstream-vera-1.10_4 cairo-1.6.4_3,1 encodings-1.0.2,1 expat-2.0.1 font-bh-ttf-1.0.0 font-misc-ethiopic-1.0.0 font-misc-meltho-1.0.0_1 font-util-1.0.1 fontconfig-2.5.0,1 freetype2-2.3.7 gamin-0.1.9_2 gettext-0.17_1 gio-fam-backend-2.16.5 glib-2.16.5 kbproto-1.0.3 libX11-1.1.3_1,1 libXau-1.0.3_2 libXdmcp-1.0.2_1 libXft-2.1.13 libXrender-0.9.4_1 libfontenc-1.0.4 libiconv-1.11_1 libpthread-stubs-0.1 libxcb-1.1.90.1 libxml2-2.6.32_1 mkfontdir-1.0.3_1 mkfontscale-1.0.3 pango-1.20.5 pcre-7.8 perl-5.8.8_1 pixman-0.10.0_2 pkg-config-0.23_1 png-1.2.32 python25-2.5.2_3 renderproto-0.9.3 xcb-proto-1.2 xcb-util-0.2.1 xorg-fonts-truetype-7.3 xproto-7.0.10_1
WWW:    http://www.rrdtool.org/

Port:   rrdtool-1.0.50_1
Path:   /usr/ports/databases/rrdtool10
Info:   Round Robin Database Tools
Maint:  lth@FreeBSD.org
B-deps: libtool-1.5.26 perl-5.8.8_1
R-deps: perl-5.8.8_1
WWW:    http://www.rrdtool.org/

Port:   rrdtool-1.2.28
Path:   /usr/ports/databases/rrdtool12
Info:   Round Robin Database Tools v1.2
Maint:  koitsu@FreeBSD.org
B-deps: freetype2-2.3.7 gettext-0.17_1 gmake-3.81_3 libart_lgpl-2.3.20,1 libiconv-1.11_1 libtool-1.5.26 perl-5.8.8_1 pkg-config-0.23_1 png-1.2.32
R-deps: freetype2-2.3.7 libart_lgpl-2.3.20,1 perl-5.8.8_1 pkg-config-0.23_1 png-1.2.32
WWW:    http://www.rrdtool.org/

  ...

Ставим порт: /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 /trafshow_public/ "/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

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

Следующая страница Следующая страница
ПРИ ЧАСТИЧНОМ, ЛИБО ПОЛНОМ КОПИРОВАНИИ МАТЕРИАЛОВ ЭТОГО САЙТА, ПОЖАЛУЙСТА, НЕ ЗАБЫВАЙТЕ УКАЗЫВАТЬ ССЫЛКУ http://live.daemony.org/ КАК НА ИСТОЧНИК!

Похожие публикации

Страницы: 1 2 3 4 5 6 7

Комментариев 162

1 ... 15 16 17

inhum 9 апреля, 2010 14:50:56 EEST .:. ID #27261 .:.

и ссылка не работает:
http://live.daemony.org/statistics

inhum 9 апреля, 2010 14:46:32 EEST .:. ID #27259 .:.

1 ... 15 16 17

Возник вопрос по этой теме, или есть что добавить? Говорите!

  1. Зарегистрированным пользователям вводить защитный код (captcha) не приходится.
  2. Загрузить свою аватарку Вы сможете, зарегистрировавшись на сервисе www.gravatar.com
Публикуя комментарий Вы подтверждаете, что ознакомились c Правилами и принимаете их!
HOMOSAPIENS ONLY! :)