Мониторинг FreeBSD сервера: статистика по трафику, загрузка процессора, использование памяти, количество процессов, температура процессора, материнской платы и жестких дисков. Визуализация полученых данных в виде графиков на основе Round Robin Database (RRD).
Человек с самого начала своего появления на Земле имел жажду к рисованию. Первобытные люди рисовали мамонтов на стенах пещер, в которых они жили. Древние египтяне украшали свои гробницы росписями, на которых изображали свой быт и свою религию. Леонардо Да Винчи изобразил своей кистью Мону Лизу, да так изобразил, что над загадкой этой великой картины ученые до сих пор ломают головы. Великий Айвазовский рисовал море - страсть всей его жизни.
Чем же хуже системные администраторы? Ведь, как известно, сисадмины - тоже люди, а потому и они рисуют. Вернее было бы сказать, рисует за сисадминов софт, который они написали и сконфигурировали под свои нужды. И сегодня мы будем рисовать графики для отображения различной статистики
Нет! Мы их будем не “строить”, а именно рисовать. Ведь благодаря человеку по имени Тоби Отикер (Tobi Oetiker) мы имеем для этого потрясающий инструмент, под названием rrdtool или RRD.
RRD - это аббревиатура от Round Robin Database - (кольцевая база данных). Почему “кольцевая”? Потому что по прошествии определенного времени (в зависимости от размера базы) старые данные затираются, а на их место ложатся новые. Размер файлы базы всегда постоянный. База представляет собой бинарный файл, который можно прочитать с помощью инструментов из пакета rrdtools.
RRD был написан господином Отикером в качестве замены всем известному , который он сам и написал. Но RRD планировалось реализовать несколько иначе. В двух словах: основное отличие RRD от MRTG в том, что для хранения одного и того же объема данных RRD отнимет гораздо меньше дискового пространства, чем MRTG. Многие значения во времени повторяются. Это дает возможность использовать различные функции консолидации (объединения), что в свою очередь позволяет охватывать большие интервалы времени без чрезмерного увеличения объема базы, ну и конечно за счет снижения разрешающей способности.
RRD - это целый набор утилит, которые позволяют создавать RRD БД, наполнять ячейки баз числовыми значениями, изменять, при необходимости размеры и параметры баз, а также вынимать из них накопленные значения с целью наглядного представления этих значений в виде графиков.
Именно здесь “сухие цифры” превращаются в искусство - в живопись системного администратора. Возможно, кто-то, будучи человеком далеким от этой темы, не увидит в этом красоты… Что ж, ну возможно этому человеку станет понятен “Черный квадрат” Малевича. Но сисадмин и подобные ему увидят и рассмотрят красоту в этих причудливых переплетениях электрических импульсов, в которых отображена история. История того, как через сетевой интерфейс родного и близкого сердцу маршрутизатора когда-то пролетели миллионы и миллиарды бит или же что-то еще, что сисадмин пожелал нарисовать для себя напамять, сохранив и превратив это в историю.
Оглавление
- Введение
- Подготовка
- Мониторинг сетевых служб сервера и отображение статистики по трафику с разделением по портам и протоколам
- Мониторинг и отображение статистики загрузки центрального процессора, использования памяти и количества запущенных процессов
- Мониторинг и отображение температуры центрального процессора, чипов и материнской платы
- Мониторинг и отображение температуры жестких дисков сервера
- Заключение
Подготовка
От лирики перейдем к делу. Прежде всего, для более полного понимания данного материала я попрошу Вас прочитать документацию по RRD на русском языке, которую очень давно перевел с английского . В процессе прихода к пониманию принципов работы с RRD я руководствовался большей частью именно ей, потому что изложил Сергей Евгеньевич все достаточно доходчиво и понятно. Кроме этого, в процессе написания этого материала я использовал в качестве источника английскую документацию по rrdtool на .
Многие из Вас наверняка уже сталкивались с такими системами мониторинга как или . Они также используют 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/ КАК НА ИСТОЧНИК!
Похожие публикации
Теги: charts, count, cpu, FreeBSD, hdd, ipfw, proxy, ram, rrd, rrdtool, визуализация, мониторинг, построение графиков, пример скрипта, прокси, статистика, статистика по трафику, температура, трафик


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