Журнал LinuxFormat - перейти на главную

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 – ка­ру­сель], по­едаю­щие чер­вя­ков, ко­то­рых я из­вле­каю, вска­пы­вая вес­ной ого­род, очень ок­руг­ли­лись из-за сво­его об­жор­ст­ва, но здесь речь не о них. Так на­зы­ва­ли пе­ти­цию с под­пи­ся­ми по кру­гу, как бы по спи­цам ко­ле­са, что­бы нель­зя бы­ло оп­ре­де­лить гла­ва­ря. С тех пор это ста­ло при­ла­гать­ся к лю­бой идее воз­вра­ще­ния на кру­ги своя.

Персональные инструменты
купить
подписаться
Яндекс.Метрика