- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF135:DrBrown2
Материал из Linuxformat.
RRDTool
- Утилита работы с циклической базой данных Полноценное решение для хранения, обработки и отображения данных временных рядов.
Е сли вы когда-либо пользовались программой построения графика изменения некой величины во времени, возможно, это была RRDTool. Она содержит два компонента: специализированную базу данных для хранения временных рядов и механизм генерации симпатичных масштабируемых графиков по этим данным. RRDTool – разработка Тоби Этикера [Tobi Oetiker] (http://oss.oetiker.ch/rrdtool); это база данных, поддержанная огромным количеством программ, которые строят графики производительности, загрузки системы, потребления ресурсов, сетевого трафика, производительности сети, температуры, скорости ветра... список можно продолжить.
RRDTool – не база данных в обычном смысле слова, с таблицами и связями между ними. Она приспособлена для хранения и обработки измерений, генерируемых через равные интервалы времени. Например, можно создать базу данных, которая раз в минуту считывает показание температуры в моем парнике. Для хранения данных определим несколько циклических архивов [Round-Robin Archive, RRA]. Каждое значение, поступающее в архив, рассчитывается по заданному числу измерений путем применения к ним какой-либо функции уплотнения – например, среднего, минимума или максимума. Такие значения называются консолидированными точками (КТ). Количество КТ, хранимых в одном архиве, постоянно и определено при его создании. По заполнении архива, запись просто начинается снова, причем старые данные стираются. Такое поведение и дает базе название циклической. Итак, каждый архив хранит данные за определенный период времени (возможно, день, неделю или год), заданный заранее.
Например, для базы данных о температуре воздуха в моем парнике можно задать архив с вычислением среднего по каждым 10 измерениям (т. е. КТ будет возникать раз в 10 минут) и хранить 1008 значений; поэтому в любой момент времени у меня есть довольно подробный график температуры за последнюю неделю (в неделе 1008 периодов по 10 минут). Я мог бы сопроводить его архивом минимальных значений из 60 точек данных (одна КТ в час) и хранить 8760 значений, что даст мне менее подробный график, но зато за целый год. Также можно создать и третий архив, для максимальной температуры. Как видите, объем базы данных фиксирован и определяется в момент ее создания. В моем примере это 1008 + 8760 + 8760 = 18528 консолидированных точек данных.
Как я уже говорил, заполнение базы данных ожидается через равные интервалы времени. Если результат измерения не пришел (например, компьютер, отвечающий за измерения, выключен), значение в базе данных помечается как Неизвестное (Unknown).
Черед прийти и уйти
Мы узнали, как данные попадают в базу данных RRDTool; но как их оттуда забрать? Конечно, можно экспортировать ее содержимое в текстовый файл (например, для переноса на другой компьютер), но красивый график гораздо интереснее. Графики строятся в форматах PNG, SVG, EPS или PDF, и их можно поместить на сайт, чтобы посетители просматривали их в браузере, или вставить в отчет об исследовании, который вы пишете в OOo. Возможности построения графиков в RRDTool обладают огромной гибкостью – взгляните на экранные снимки в галерее http://oss.oetiker.ch/rrdtool/gallery, чтобы оценить все их разнообразие.
Имеются команды для создания базы данных RRDTool (rrdcreate), добавления в нее измерений (rrdupdate), построения графика (rrdgraph) и решения других административных задач. Так что можно управлять базой данных вручную из командной строки (для тестирования или ознакомления) или написать для этого сценарий оболочки. Поддерживаются и другие языки – Perl, Python, Ruby, Lua и PHP.
Архив с исходными кодами можно загрузить с сайта http://oss.oetiker.ch/rrdtool/pub, там же можно найти скомпилированные пакеты для AIX, HP-UX, Solaris, Debian, RHEL, Fedora, Windows и даже NetWare. Найти эти пакеты можно в репозитории вашего дистрибутива, а установить через менеджер пакетов. Счастливого графопостроения!
Что такое round robin?
Краснопузые птички [robin – англ. малиновка; round – круглый; round robin – карусель], поедающие червяков, которых я извлекаю, вскапывая весной огород, очень округлились из-за своего обжорства, но здесь речь не о них. Так называли петицию с подписями по кругу, как бы по спицам колеса, чтобы нельзя было определить главаря. С тех пор это стало прилагаться к любой идее возвращения на круги своя.