• No results found

Plugin Implementation for Open Source Project Hyperic HQ

N/A
N/A
Protected

Academic year: 2021

Share "Plugin Implementation for Open Source Project Hyperic HQ"

Copied!
39
0
0

Loading.... (view fulltext now)

Full text

(1)

Fakulta elektrotechniky a informatiky

Katedra informatiky

Implementace plugin ˚

u pro

monitorovac´ı projekt Hyperic HQ

Plugin Implementation for Open

Source Project Hyperic HQ

(2)
(3)
(4)
(5)

Tato bakal´aˇrsk´a pr´ace se zab ´yv´a problematikou implementace plugin ˚u pro open source monitorovac´ı syst´em Hyperic HQ. Prvn´ı ˇc´ast pr´ace je vˇenovan´a teoretick´emu ´uvodu do samotn´eho syst´emu Hyperic HQ. V druh´a ˇc´asti jsou informace o vnitˇrn´ıch struk-tur´ach monitorovac´ıho syst´emu a zp ˚usobu komunikace jednotliv ´ych ˇc´ast´ı. Podrobnˇe je tak´e naznaˇcen postup vytv´aˇren´ı pluginu. N´asleduj´ıc´ı ˇc´ast se vˇenuje jiˇz konkr´etn´ı imple-mentaci plugin ˚u. Je rozdˇelena na dvˇe ˇc´asti. Jako prvn´ı je uveden n´avrh a implementace pluginu pro monitorov´an´ı dat v SQL datab´azi. N´asleduje n´avrh a implementace druh´eho pluginu, kter ´y slouˇz´ı pro sledov´an´ı stavu URL dle vr´acen´eho obsahu.

Kl´ıˇcov ´a slova: Monitorov´an´ı syst´em ˚u, Hyperic HQ, Plugin, Python

Abstract

This bachelor’s thesis describes problem of implementation plugins for open source mon-itoring system Hyperic HQ. First chapter describes theory about Hyperic HQ system. Second chapter describes information about inside structure of system, communication between parts of system. There is also described how to create plugin. Next chapter is dedicated to implementation of plugins and have two parts. First part describes design and implementation of plugin for monitoring SQL data in database. Second part de-scribes design and implementation of plugin, which serves to monitor return content from URL.

(6)

XML – Extensible Markup Language

(7)

Obsah

1 Uvod´ 2

2 Popis architektury monitorovac´ıho syst´emu Hyperic HQ 3

2.1 Z´akladn´ı informace . . . 3

2.2 Rozdˇelen´ı invent´arn´ı struktury . . . 5

2.3 Architektura Hyperic HQ . . . 6

3 Popis vnitˇrn´ı struktury a zp ˚usoby rozˇs´ıˇren´ı jednotliv ´ych ˇc´ast´ı syst´emu Hyperic HQ 8 3.1 Z´akladn´ı ´udaje . . . 8

3.2 Platformy, Servery a Sluˇzby . . . 9

3.3 Pluginy . . . 11

3.4 XML Deskriptor . . . 13

4 Implementace plugin ˚u pro monitorov´an´ı 16 4.1 Plugin pro monitorov´an´ı dat v SQL datab´azi . . . 16

4.2 Pluginu pro sledov´an´ı stavu URL dle vr´acen´eho obsahu . . . 21

5 Z´avˇer 30

(8)

ˇziku. Staˇc´ı si vybrat poˇzadovan ´y plugin a Hyperic se uˇz o vlastn´ı distribuci postar´a. Jako z´aklad pro n´avrh a implementaci pluginu slouˇz´ı dokumentace na str´ank´ach pro-jektu a hlavnˇe dokumentace ke komerˇcn´ımu propro-jektu vFabric Hyperic 4.6. V tˇechto ma-teri´alech je celkem n´azornˇe pops´ana samotn´a tvorba pluginu at uˇz s pomoc´ı podp ˚urn ´ych tˇr´ıd nebo skriptovac´ıho jazyka, popˇr´ıpadˇe JMX. Dalˇs´ı d ˚uleˇzitou ˇc´ast´ı je vytvoˇren´ı XML deskriptoru, kter ´y se star´a o samotn´e nastaven´ı a reprezentaci metriky.

(9)

2

Popis architektury monitorovac´ıho syst ´emu Hyperic HQ

2.1 Z ´akladn´ı informace

Spoleˇcnost Hyperic se historicky soustˇredila na v ´yvoj open source n´astroje pro spr´avu IT prostˇred´ı. D´ıky nˇemuˇz lze efektivnˇe spravovat servery s jak ´ymkoli bˇeˇzn ´ym operaˇcn´ım syst´emem, a to v roli aplikaˇcn´ıch, webov ´ych ˇci datab´azov ´ych server ˚u. Nyn´ı patˇr´ı Hyperic do portfolia spoleˇcnosti VMware a nab´ız´ı open source n´astroj Hyperic HQ a komerˇcn´ı Hyperic HQ Enterprise [5].

Syst´em Hyperic HQ slouˇz´ı pro monitorov´an´ı a ˇr´ızen´ı v ´ykonu pro virtu´aln´ı, fyzickou a cloudovou infrastrukturu. Automaticky dok´aˇze rozpoznat zdroje v´ıce neˇz 75 technologi´ı zahrnuj´ıc´ı vSphere. Sb´ır´a informace o dostupnosti, v ´ykonu a vytv´aˇr´ı jejich metriky [2].

Hyperic dovoluje IT manaˇzer ˚um rozˇs´ıˇrit klasick´e monitorovac´ı ˇcinnosti k ˇr´ızen´ı dos-tupnosti a k zlepˇsen´ı celkov´eho

”zdrav´ı“ jejich IT infrastruktury. Ta je ´uˇcelovˇe urˇcen´a pro webovou infrastrukturu a navrˇzen´a tak, ˇze jsou br´any v potaz vˇsechny vrstvy in-frastruktury vˇcetnˇe hardware, middleware, virtualizace a aplikac´ı. HQ poskytuje syst´em sledov´an´ı, trend ˚u a anal ´yzy s jedn´ım kliknut´ım. Hyperic HQ je prvn´ı a jedin´e podnikov´e open source softwarov´e ˇreˇsen´ı pro spr´avu syst´em ˚u.T´ımto umoˇz ˇnuje spr´avci IT tech-nologi´ı spravovat tyto technologie jak nynˇejˇs´ı, kterou jsou moment´alnˇe dostupn´e na trhu, tak budouc´ı [4].

2.1.1 Moˇznosti pouˇzit´ı

Syst´em Hyperic HQ m´a nepˇrebern´e mnoˇzstv´ı pouˇzit´ı. Zde je uvedeno jen nˇekolik z´a-kladn´ıch moˇznost´ı:

• automatick´e prohled´an´ı vˇsech komponent virtualizovan ´ych aplikac´ı vSphere • automatick´e prohled´an´ı, monitorov´an´ı a ˇr´ızen´ı softwaru a s´ıt’ov ´ych zdroj ˚u

• monitorov´an´ı aplikac´ı na jak´ekoliv platformˇe vˇcetnˇe Unixu, Linuxu, Windows, So-laris, AIX, HPUX, VMware a Amazon Web Services

• podpora 75 bˇeˇzn ´ych komponent (vˇcetnˇe datab´az´ı, aplikaˇcn´ıch server ˚u, middle-waru, webov ´ych server ˚u, s´ıt’ov ´ych zaˇr´ızen´ı a dalˇs´ıch)

• optimalizace pro virtu´aln´ı prostˇred´ı s integrac´ı pro vCenter a vSphere 2.1.2 Z ´akladn´ı funkcionalita Hyperic HQ

Hyperic HQ monitoruje a ˇr´ıd´ı webov´e aplikace pˇres ˇsirokou ˇsk´alu platforem a technologi´ı vˇcetnˇe cloudov´e. HQ poskytuje tuto z´akladn´ı ˇr´ıd´ıc´ı funkcionalitu pro uˇzivatel ˚uv soft-ware a s´ıt’ov´e zdroje:

Prohled´av´an´ı– HQ agent automaticky prozkoum´av´a softwarov´e zdroje a napl ˇnuje datab´azi kl´ıˇcov ´ymi informacemi o dostupn´em softwaru. Agentem jsou sb´ır´ana z´a-kladn´ı fakta o kaˇzd´em softwarov´em zdroji, napˇr. jeho typ, v ´yrobce, verze a um´ıstˇen´ı.

(10)

Obr´azek 1: HQ informaˇcn´ı panel

Vzhledem k typu zdroje jsou agentem sb´ır´any informace jako je architektura plat-formy, velikost RAM, rychlost CPU, IP adresa a dom´enov´e jm´eno. Agent pouˇz´ıv´a zabudovan ´y plugin zdroj ˚u k automatick´emu prohled´an´ı bˇeˇznˇe pouˇz´ıvan ´ych ope-raˇcn´ıch syst´em ˚u, aplikaˇcn´ıch server ˚u, HTTP server ˚u, datab´az´ı, dalˇs´ıho softwaru a s´ıt’ov ´ych zdroj ˚u. Je moˇzno naprogramovat vlastn´ı plugin zdroj ˚u k ˇr´ızen´ı softwaru, kter ´y HQ nepodporuje a vyuˇz´ıt tak´e moˇznosti pouˇzit´ı plugin ˚u zdroj ˚u od Hyperic komunity.

Organizov´an´ı– Zdroje, kter´e agenti HQ objevili jsou uloˇzeny v HQ datab´azi vzh-ledem k hierarchick´emu invent´arn´ımu modelu. Invent´arn´ı model m´a smysl pro uspoˇr´ad´an´ı velk´eho poˇcet softwarov ´ych zdroj ˚u a vztahy mezi nimi.

Monitorov´an´ı– HQ agenti shromaˇzd’uj´ı metriky, kter´e odr´aˇzej´ı dostupnost, v ´ykon, vyuˇzit´ı a propustnost. Agenti sb´ıraj´ı standardn´ı soubor metrik pro kaˇzd ´y podpo-rovan ´y typ zdroje. Lze pˇresnˇe nastavit, jak´e metriky je moˇzno shromaˇzd’ovat ve webov´em uˇzivatelsk´em rozhran´ı a vybrat si, kter´e metriky zobrazit na informaˇcn´ım panelu (obr´azek ˇc. 1) nebo dom´ac´ı str´ance v uˇzivatelsk´em rozhran´ı. Kromˇe metrik agenti sleduj´ı logy, ud´alosti a zmˇeny konfigurace.

Ovl´ad´an´ı– HQ lze pouˇz´ıt pro vzd´alen´e ovl´ad´an´ı a administraci syst´emov ´ych zdro-j ˚u. Dostupn´e ovl´adac´ı akce z´avis´ı na typu zdrozdro-je. Na aplikaˇcn´ım serveru zdro-je moˇzn´e prov´adˇet ´ukoly jako spouˇstˇen´ı, zastavov´an´ı a uvolnˇen´ı zdroj ˚u. Pro datab´azov ´y ser-ver lze vykonat anal ´yzu nebo ´udrˇzbu.

(11)

V ´ystrahy, upozornˇen´ı, stup ˇnov´an´ı– Lze nastavit v ´ystrahy na metriky a n´asledn´e konfiguraˇcn´ı akce kter´e HQ provede jakmile se objev´ı v ´ystraha. V pˇr´ıpadˇe objeven´ı v ´ystrahy, m ˚uˇze HQ reagovat nˇekolika zp ˚usoby:

zasl´an´ım emailov´eho upozornˇen´ı, nastaven´ım SNMP pasti,

komunikac´ı s jin ´ymi ˇr´ıd´ıc´ımi syst´emy.

Lze rovnˇeˇz definovat soubor reakc´ı na v ´ystrahu – eskalaˇcn´ı sch´ema – kdy probl´emy nejsou propuˇstˇeny bez povˇsimnut´ı.

Prezentace, vizualizace, anal ´yza – Webov´e uˇzivatelsk´e rozhran´ı je vysoce kon-figurovateln ´y n´astroj pro v ´ykon a dostupnost. Informaˇcn´ı panel (obr´azek ˇc. 1) je poskl´ad´an z portlet ˚u. Portlety lze pˇrid´avat, odeb´ırat, pˇremist’ovat a nastavit jak´e informace budou zobrazovat [3].

2.2 Rozd ˇelen´ı invent ´arn´ı struktury

Aplikace – kolekce platforem, server ˚u a sluˇzeb organizovan´a ke splnˇen´ı jednoho ´uˇcelu. Aplikace vˇetˇsinou maj´ı mnoho server ˚u a sluˇzeb. Mohou tak´e bˇeˇzet na v´ıce naˇz jedn´e platformˇe. Typicky J2EE aplikaˇcn´ı model v HQ m ˚uˇze sest´avat z virtu´aln´ı-ho virtu´aln´ı-hosta Apache, Tomcat Webapps, JBoss sd´ılen ´ych prostˇredk ˚u pˇripojen´ı a instance Oracle.

Platforma– kombinace stroje a operaˇcn´ıho syt´emu nebo jak´ekoliv s´ıt’ov´e ˇci ´uloˇzn´e zaˇr´ızen´ı. Platformy jsou na nejniˇzˇs´ı ´urovni spr´avy. Zahrnuj´ı komponenty jako CPU, s´ıt’ov´a rozhran´ı a souborov´e syst´emy.

Server– urˇcit ´y software, kter ´y se instaluje na platformu pod spr´avou. Datab´aze,

middleware, virtualizace,

aplikaˇcn´ı a webov´e servery

jsou vˇsechno pˇr´ıklady server ˚u. Servery jsou spouˇstˇeny na platform´ach. Platformy hostuj´ı nˇekolik server ˚u. Pˇr´ıklad server ˚u zahrnuje jakoukoliv instalaci JBoss, Tomcat nebo MySQL na dan´e platformˇe.

Sluˇzba– komponenta serveru vyhrazen´a ke specifick´emu ´uˇcelu. Sluˇzby jsou typ-icky reprezentov´any jednotkami pr´ace dan´eho serveru. R ˚uzn´e typy server ˚u definuj´ı seznam jednoho nebo v´ıce typ ˚u sluˇzeb, kter´e poskytuj´ı. Jako napˇr´ıklad:

v ´yvoj Webapps v Tomcat,

(12)

Obr´azek 2: HQ architektura

Sluˇzby mohou b ´yt tak´e spojeny pˇr´ımo s platformou v pˇr´ıpadˇe CPU, s´ıtov´eho roz-hran´ı a syst´emu soubor ˚u.

Typ zdroje– kategorick ´y popis typu zdroje, kter ´y m ˚uˇze b ´yt spravov´an. Po instalaci Hyperic HQ popisuje tis´ıce typ ˚u zdroj ˚u, kter´e jsou specifikov´any pomoc´ı jm´ena, verze, dostupn´e metriky a dostupn ´ych ovl´adac´ıch akc´ı. Typy zdroj ˚u pokr ´yvaj´ı plat-formy, servery a sluˇzby.

Spravovan ´y zdroj– pˇr´ıklad typu zdroje v r´amci spravovan´eho prostˇred´ı [4].

2.3 Architektura Hyperic HQ 2.3.1 HQ agent

HQ agent je spuˇstˇen na kaˇzd´em stroji, kde je vyˇzadov´ana spr´ava od Hyperic HQ. Pˇri prvn´ım spuˇstˇen´ı agent automaticky prozkoum´a software bˇeˇz´ıc´ı na dan´em stroji, a pot´e periodicky zkoum´a zmˇeny. HQ agent sb´ır´a informace o dostupnosti, vyuˇzit´ı, v ´ykonu a propustnosti, prov´ad´ı logov´an´ı a zaznamen´av´an´ı ud´alost´ı, dovoluje prov´adˇet ovl´ad´an´ı nad softwarem, napˇr´ıklad spuˇstˇen´ı a ukonˇcen´ı webov ´ych aplikaˇcn´ıch server ˚u. Agent odes´ıl´a invent´arn´ı data a metriky, kter´e nasb´ır´a do centr´aln´ıho HQ serveru.

2.3.2 HQ server a HQ datab ´aze

HQ server pˇrij´ım´a invent´arn´ı a metrick´a data od HQ agenta a ukl´ad´a je do HQ datab´aze. Server poskytuje zaˇr´ızen´ı na spr´avu inventarizace softwaru - implementov´ano pomoc´ı HQ invent´arn´ıho a pˇr´ıstupov´eho modelu, seskupen´ı softwarov ´ych aktiv uˇziteˇcn ´ym zp ˚u-sobem k usnadnˇen´ı monitorov´an´ı a ˇr´ızen´ı. HQ server prov´ad´ı detekci v ´ystrah a vykon´a

(13)

upozor ˇnuj´ıc´ı a eskalaˇcn´ı proces, kter ´y je definov´an. Tak´e prov´ad´ı akce, kter´e jsou ini-ciov´any pˇres uˇzivatelsk´e rozhran´ı nebo API webov´e sluˇzby Hyperic HQ. Server posky-tuje autentizaci sluˇzeb pomoc´ı vnitˇrn´ı funkc´ı nebo extern´ı autentifikaˇcn´ı sluˇzby.

2.3.3 Uˇzivatelsk ´e rozhran´ı

Hyperic HQ m´a bohat´e webov´e uˇzivatelsk´e rozhran´ı. Jeho dom´ac´ı str´anka je HQ in-formaˇcn´ı panel, jednostr´ankov ´y pˇrehled zmˇen v softwarov´em invent´aˇri, probl´emov ´ych zdroj ˚u, posledn´ıch v ´ystrah´ach a metrick ´ych grafech pro d ˚uleˇzit´e zdroje. Nad informaˇcn´ım panelem jsou z´aloˇzky pro zobrazen´ı invent´aˇre, prohl´ıˇzen´ı a vizualizaci metrik a logiku v ´ystrah.

2.3.4 HQ API

HQ API je webov´a sluˇzba, kter´a poskytuje programov ´y pˇr´ıstup ke vˇsem dat ˚um a funkci-onalitˇe na HQ serveru. Toto je uˇziteˇcn´e pro zefektivnˇen´ı bˇeˇzn ´ych implementac´ı a konfig-urac´ı, kter´e Hyperic prov´ad´ı. Napˇr´ıklad je moˇzn´e za pomoci pˇr´ıkazov´e ˇr´adky prov´adˇet hromadn´e aktualizace a konfigurace. HQ API tak´e dovoluje implementovat rozhran´ı mezi Hyperic a jin ´ymi ˇr´ıd´ıc´ımi syst´emy. Je moˇzn´e napsat n´astroj, kter ´y pomoc´ı vol´an´ı API extrahuje invent´arn´ı data a pˇriprav´ı je pro import do syst´em ˚u sledov´an´ı majetku. 2.3.5 Pluginy

Je moˇzn´e rozˇs´ıˇrit schopnosti Hyeric HQ dvˇema typy plugin ˚u:

• HQ agent pouˇz´ıv´a zdrojov´e pluginy pro prozkoum´an´ı, monitorov´an´ı a ovl´ad´an´ı softwarov ´ych zdroj ˚u. HQ m´a mnoho zabudovan ´ych zdrojov ´ych plugin ˚u. Je moˇznost naprogramovat si vlastn´ı plugin zdroje, kter ´y HQ nepodporuje.

• Je moˇzn´e naprogramovat rozˇsiˇruj´ıc´ı plugin pro pˇrid´an´ı moˇznost´ı HQ uˇzivatelsk´eho rozhran´ı, skripty pro automatizaci bˇeˇznˇe prov´adˇen ´ych postup ˚u a rozhran´ı pro we-bov´e sluˇzby dalˇs´ıch ˇr´ıd´ıc´ıch syst´em ˚u [3].

(14)

Uˇzivatelsk´e rozhran´ı Hyperic Port´al se d´a lehce nakonfigurovat, rozˇs´ıˇrit pro monitorov´an´ı a anal ´yzu v ´ykonnosti a dostupnosti. Hlavn´ı funkce uˇzivatelsk´eho rozhran´ı zahrnuj´ı:

Informaˇcn´ı panel. Informaˇcn´ı panel je prvn´ı str´anka kter´a je zobrazena po spuˇstˇen´ı uˇzivatelsk´eho rozhran´ı. Informaˇcn´ı panel obsahuje nˇekolik portlet ˚u – Posledn´ı v ´y-strahy, Dostupnost, Probl´emov´e zdroje a dalˇs´ı. Na kaˇzd´em portletu je zobrazen souhrn ud´alost´ı a zdroj ˚u z´ajm ˚u. Je moˇzn´e nastavit informaˇcn´ı panel pro kaˇzd´eho uˇzivatele zvl´aˇstˇe. Lze odebrat a pˇreorganizovat portlety na informaˇcn´ım panelu a nastavit jak´a data bude portlet zobrazovat.

Rozcestn´ık zdroj ˚u. Je moˇzn´e pˇrej´ıt na z´aloˇzku zdroj ˚u ˇcasto naz ´yvanou tak´e roz-cestn´ıkem zdroj ˚u k vyhled´an´ı poˇzadovan´eho zdroje, zobrazen´ı moˇznost´ı zdroj ˚u, zobrazen´ı metrick ´ych dat a graf ˚u a tak´e zah´ajit ˇr´ızen´ı zdroj ˚u. Administr´atoˇri Hy-peric pouˇz´ıvaj´ı rozcestn´ık zdroj ˚u pro nastaven´ı monitorov´an´ı a definice v ´ystrah na zdroj´ıch.

Glob´aln´ı monitorovac´ı zobrazen´ı. Uˇzivatelsk´e rozhran´ı Hyperic obsahuje n´asle-duj´ıc´ı str´anky, kter´e prezentuj´ı v ´ysledky monitorov´an´ı zdroj ˚u:

– Centrum Operac´ı. Celkov ´y pohled zahrnuj´ıc´ı v ´ystrahy, ud´alosti a souˇcasn´e odpojen´e zdroje.

– Centrum V ´ystrah. Pohled na v ´ystrahy a jejich definici.

– Centrum Ud´alost´ı. Pohled na logov´an´ı ud´alost´ı, konfiguraˇcn´ı ud´alosti a v ´y-strahy.

– Nagios data. K dispozici v nasazen´ı, kter´e maj´ı integrovan ´y Hyperic s Nagios. – Moment´alnˇe odpojen. Seznam moment´alnˇe nedostupn ´ych zdroj ˚u.

Pohled na typy zdroj ˚u. Nˇekter´e str´anky v uˇzivatelsk´em rozhran´ı Hyperic jsou specifick´e pro konkr´etn´ı typ zdroje, napˇr´ıklad vSphare pohled pro vCenter a vCen-ter spravovan´e zdroje a GemFire pro monitorov´an´ı ˇc´ast´ı vFabric GemFire distribuo-van´e mezipamˇeti prostˇred´ı.

(15)

3.1.2 Z ´akladn´ı fakta pro nov ´e uˇzivatele

Zdroje, kter´e se uˇzivateli zobrazuj´ı a ´urove ˇn opr´avnˇen´ı se ˇr´ıd´ı danou rol´ı.

Nˇekter´e zdroje je nutn´e nakonfigurovat pro monitorov´an´ı. Aˇckoliv Hyperic zaˇcne monitorovat vˇetˇsinu zdroj ˚u jakmile jsou pˇrid´any do invent´aˇre, urˇcit´e typy zdroj ˚u je po-tˇreba nakonfigurovat, aby agent mohl sb´ırat metriky. Napˇr´ıklad JMX URL adresa a pˇr´ı-stupov´e ´udaje mus´ı b ´yt zad´any v Hypericu pro to, aby byl agent schopn ´y monitorovat skrz JMX. Metriky shrom´aˇzdˇen´e pro zdroj se ˇr´ıd´ı v ´ychoz´ım nastaven´ım pro metrick´e kolekce typu prostˇredku.

3.2 Platformy, Servery a Sluˇzby

Kaˇzd´a zdrojov´a instance v Hypericu m´a jeden z n´asleduj´ıc´ıch invent´arn´ıch typ ˚u: plat-forma, server nebo sluˇzba.

3.2.1 Hierarchie Platforma-Server-Sluˇzba

Platforma, server a sluˇzba jsou vy Hypericu hierarchicky propojeny.

Platformaje pˇrev´aˇznˇe stroj s operaˇcn´ım syst´emem, na kter´em je spuˇstˇen HQ agent. Jsou tak´e platformn´ı typy pro virtu´aln´ı a s´ıtov´e hosty.

Serverje softwarov ´y produkt, kter ´y je spuˇstˇen na platformˇe.

Sluˇzba je zdroj, kter ´y je ned´ılnou souˇc´ast´ı nebo bˇeˇz´ı na platformˇe ˇci serveru. Je jedno jestli je sluˇzba sv´az´ana s platformou nebo serverem, pro Hyperic je to sluˇzba. Aˇckoliv sluˇzby asociovan´e s platformou jsou vˇetˇsinou povaˇzov´any za platformn´ı sluˇzbu.

Hyperic automaticky prozkoum´a vˇetˇsinu platforem, server ˚u a sluˇzeb a napln´ı Hy-peric datab´azi kl´ıˇcov ´ymi informacemi o kaˇzd´e objeven´e poloˇzce a jej´ım vztahu s os-tatn´ımi zdroji.

Na obr´azku 3 je zobrazena konkr´etn´ı hierarchie platforma-server-sluˇzba. (Jenom nˇe-kter´e servery a sluˇzby jsou zobrazeny z celkov´e hierarchie.) N´apis na kaˇzd´em zdroji naznaˇcuje jeho typ. Hierarchie obsahuje n´asleduj´ıc´ı:

• platformu jej´ıˇz typ je

”MaxOSX“ • dvˇe platformn´ı sluˇzby, jejichˇz typy jsou

”Souborov ´y syst´em“ a ”CPU“ • dva servery, jejichˇz typy jsou

”JBoss 4.2“ a ”Tomcat 6.0“

ˇctyˇri sluˇzby, kter´e jsou spuˇstˇeny na serverech, jejichˇz typy jsou

”JMS Topic“, ”JMS Destination“,

(16)

Obr´azek 3: Hierarchie Platforma-Server-Sluˇzba 3.2.2 Platformy

V Hypericu jsou dva hlavn´ı druhy platforem:

Platformy operaˇcn´ıch syst´em ˚u. Platforma operaˇcn´ıho syst´emu je poˇc´ıtaˇc a operaˇcn´ı syst´em, kter ´y je na nˇem spuˇstˇen. Hyperic automaticky prozkoum´a platformu ope-raˇcn´ıho syst´emu pomoc´ı syst´emov´eho pluginu Hyperic. Nen´ı moˇzn´e pˇridat manu-´alnˇe operaˇcn´ı syst´em do invent´aˇre. Hyperic podporuje n´asleduj´ıc´ı typy platforem operaˇcn´ıch syst´em ˚u:

AIX FreeBSD HPUX Linux MacOSX Solaris Unix Win32

Virtu´aln´ı a s´ıt’ov´e platformy. Hyperic podporuje r ˚uzn´e typy platforem kter´e ne-souvis´ı s konkr´etn´ım fyzick ´ym strojem a tradiˇcn´ım operaˇcn´ım syst´emem. Tyto jsou: Zdroje, kter´e Hyperic agent monitoruje vzd´alenˇe pˇres s´ıt, jako je s´ıtov ´y host a

zaˇr´ızen´ı,

virtu´aln´ı zdroje, jako je VMware vSphere host a VM

(17)

Hyperic agent nepodporuje automatick´e prozkoum´an´ı a monitorov´an´ı virtu´aln´ıch a s´ıtov ´ych platforem. Typicky se tyto platformy vytv´aˇrej´ı manu´alnˇe (pouˇzit´ım pˇr´ı-kazu Nov´a platforma), nebo pˇrinejmenˇs´ım poskytnou nastaven´ı dat pro zdroje, kter´e dovol´ı agentovi, aby je spravoval. Toto jsou virtu´aln´ı a s´ıtov´e platformy, kter´e Hyperic podporuje:

Cisco IOS Cisco Pixos

GemFire Distributed System NetApp Filer

Network Device Network Host

VMware vSphere Host VMware vSphere VM Xen Host

3.2.3 Servery

V Hypericu je server softwarov ´y produkt, kter ´y je spuˇstˇen na platformˇe. Servery posky-tuj´ı komunikaˇcn´ı rozhran´ı a prov´adˇej´ı specifick´e ´ukoly na z´akladˇe poˇzadavk ˚u. Pˇr´ıklady server ˚u jsou TomCat, JBoss a Exchange. Vˇetˇsina typ ˚u sever ˚u jsou automaticky objeveny pomoc´ı serverov ´ych Hyperic plugin ˚u. Jestliˇze plugin, kter ´y spravuje server nepodporuje automatick´e prozkoum´an´ı, nebo kdyˇz automatick´e prozkoum´an´ı selˇze, je moˇzn´e

manu-´alnˇe vytvoˇrit server.

3.2.4 Sluˇzby a platformn´ı sluˇzby

Sluˇzba je softwarov´a komponenta v Hypericu, kter´a se vˇenuje konkr´etn´ımu ´ukolu, kter ´y je prov´adˇen na serveru nebo platformˇe. Sluˇzba, kter´a je spuˇstˇena na serveru je oznaˇcovan´a jako sluˇzba. Zat´ımco sluˇzba, kter´a je spuˇstˇena na platformˇe je oznaˇcov´ana jako platformn´ı sluˇzba. Zdrojov ´y plugin, kter ´y m´a na starosti prozkoum´an´ı platformy nebo serveru tak´e prozkoum´a kl´ıˇcov´e sluˇzby – jako je CPU, s´ıt’ov´a rozhran´ı, souborov ´y syst´em a dalˇs´ı – bˇeˇz´ıc´ı na platformˇe.

Kromˇe toho m ˚uˇze autorizovan ´y uˇzivatel jasnˇe nakonfigurovat platformn´ı sluˇzby na platformˇe, kter´e slouˇz´ı jako proxy pro zdroje, kter´e Hyperic agent m ˚uˇze monitorovat pˇres s´ıt’, napˇr´ıklad DNS nebo POP3 sluˇzbu [6].

3.3 Pluginy

Pluginy jsou rozhran´ı mezi Hyperic HQ a produkty na s´ıt’i, kter´e je moˇzn´e spravovat. Hyperic dok´aˇze detekovat tis´ıce produkt ˚u d´ıky jeho standardn´ım plugin ˚um, ale je tak´e

(18)

Je potˇreba plugin nasadit, jak na server, tak souˇcasnˇe na agenta. Server a agent zastupuj´ı kaˇzd ´y r ˚uzn´e role v souvislosti s pluginy:

Agent shromaˇzd’uje vˇsechna data ze zdroj ˚u a vˇseobecnˇe komunikuje se zdroji. Po-moc´ı pluginu agent m ˚uˇze:

• Automaticky objevit zdroje. • Shromaˇzd’ovat metriky ze zdroje. • Prov´adˇet podporovan´e ovl´adac´ı akce.

Server se zab ´yv´a meta-daty, coˇz znamen´a, ˇze v´ı o:

• Platformˇe, serveru a typech sluˇzeb zdroj ˚u, a jak plugin mapuje c´ılen´e zdroje do invent´arn´ıho modelu.

• Konfiguraˇcn´ım sch´ematu pro kaˇzd ´y zdroj.

• Zobrazov´an´ı dat od zdroj ˚u a metrick ´ych dat v uˇzivatelsk´em rozhran´ı Hypericu. • Definici kontroln´ıch akc´ı.

3.3.2 Implementace plugin ˚u

Pluginy mohou b ´yt vytvoˇreny pro r ˚uzn´e druhy zdroj ˚u. V z´avislosti na druhu zdroje, jak komunikuje a poskytuje data mohou b ´yt naps´any r ˚uzn´e typy implementace plugin ˚u. Tyto typy jsou n´asleduj´ıc´ı:

• Script • JMX • SQL • SNMP

(19)

3.3.3 Pouˇzit´ı podp ˚urn ´ych tˇr´ıd ke zjednodu ˇsen´ı plugin ˚u

Hyperic HQ poskytuje mnoho podp ˚urn ´ych tˇr´ıd (jsou to pluginy), na kter´e je moˇzn´e se odvolat v r´amci vlastn´ıch plugin ˚u a zjednoduˇsit si implementaci. Hyperic HQ poskytuje n´asleduj´ıc´ı podp ˚urn´e tˇr´ıdy (tabulka ˇc 1):

Kategorie Podp ˚urn´e tˇr´ıdy Kdy je moˇzno tuto tˇr´ıdu pouˇz´ıt Skriptov´an´ı qmail, Sendmail,

Sybase

SNMP Squid, Cisco IOS

JMX JBoss, WLS,

WAS, ActiveMQ, Jetty

JDBC MySQL,

Post-greSQL, Oracle

K shromaˇzd’ov´an´ı metrik z datab´azov ´ych tabulek

Win-Perf Counters IIS, Exchange, DS, .NET

K shromaˇzd’ov´an´ı metrik aplikac´ı pouˇz´ıvaj´ıc´ı perf counter

SIGAR System, Process,

Netstat

Pro komunikaci s operaˇcn´ım syst´emem. SIGAR je propriet´arn´ı API nez´avisl´e na OS

S´ıt’ov´e protokoly HTTP, FTP, SMTP, a dalˇs´ı

Pro komunikaci s platformn´ımi sluˇzbami, kter´e m´a HQ zabudovan´e, ale je potˇreba shromaˇzd’ovat dalˇs´ı metriky od nich

Vendor Citrix, DB2,

VMware

Tabulka 1: Podp ˚urn´e tˇr´ıdy v Hyperic HQ a jejich vyuˇzit´ı

Rozhran´ı HQ plugin ˚u je jednoduch´e. Napˇr´ıklad mˇeˇr´ıc´ı HQ plugin m´a jenom jednu metodu (getValue). Autoinvent´arn´ı plugin m´a jenom jednu metodu pro kaˇzdou ´urove ˇn v invent´aˇri. Nejtˇeˇzˇs´ı ˇc´ast pˇri psan´ı pluginu je rozmyslet si:

• Jak je moˇzn´e dostat data ze spravovan´eho zdroje?

• Kde maj´ı b ´yt tyto data um´ıstˇena v hierarchii invent´arn´ıho modelu? Na jak´e in-vent´arn´ı ´urovni (platforma, server, sluˇzba)?

3.4 XML Deskriptor

Deskriptor pluginu je XML soubor, kter ´y je definovan ´y jako co m ˚uˇze plugin dˇelat a jak to m´a dˇelat - typy zdroj ˚u, kter´e spravuje a pro kaˇzd ´y typ jakou funkci vykon´av´a, data zdroj ˚u, kter´e poˇzaduje a prozkoum´av´a a metriky, kter´e vrac´ı. Kaˇzd ´y plugin m´a

(20)

Zobraz´ı se str´anka se vˇsemi nainstalovan ´ymi pluginy a dalˇs´ımi informacemi o nich. Po-moc´ı tlaˇc´ıtkaAdd/UpdatePlugin(s)v prav´e spodn´ı ˇc´asti str´anky se prov´ad´ı samotn´e nahr´an´ı pluginu. V dialogov´em oknˇe je potˇreba vybrat soubor, kter ´y obsahuje plugin a ten pomoc´ı tlaˇc´ıtkaUploadnahr´at do syst´emu.

3.4.2 Hierarchie spravovan ´ych typ ˚u zdroj ˚u

Deskriptor pluginu definuje kaˇzd ´y zdrojov ´y typ, kter ´y bude spravovat, v nˇekter ´ych pˇr´ı-padech jeden typ, ale ˇcastˇeji hierarchii typ ˚u. Napˇr´ıklad server (Tomcat 6.0) a jeho sluˇzby (Vhosts). Plugin m ˚uˇze spravovat nˇekolik typ ˚u zdrojov ´ych hierarchi´ı, napˇr´ıklad Tomcat plugin v Hypericu spravuje Tomcat 5.5 a tak´e Tomcat 6. Deskriptor pro takov ´yto plugin definuje hierarchii pro kaˇzdou z verz´ı.

Aˇckoliv plugin m ˚uˇze spravovat platformu a jednu nebo v´ıce ´urovn´ı z´avisl ´ych zdroj ˚u, v praxi prakticky vˇsechny zdroje na platformn´ı ´urovni jsou spravov´any jedn´ım Hyperic pluginem - syst´emov ´ym pluginem (system-plugin.jar). Syst´emov ´y plugin prozkoum´av´a a spravuje vˇsechny podporovan´e platformy operaˇcn´ıch syst´em ˚u (Unix, Linux, Win32, Solaris, MacOSX, AIX, HPUX, a FreeBSD) a platformn´ı sluˇzby (jako je s´ıtov´e rozhran´ı, CPU, souborov ´y syst´em).

Jedin´e dalˇs´ı pluginy Hypericu, jenˇz spravuj´ı zdroje, kter´e Hyperic povaˇzuje za plat-formy jsou ty, jenˇz spravuj´ı virtu´aln´ı nebo s´ıtov´e hosty.

3.4.3 Shromaˇzd’ovan ´e metriky pro kaˇzd ´y typ zdroje

Deskriptor specifikuje kaˇzdou metriku, kterou plugin z´ısk´av´a pro kaˇzd ´y typ zdroje, kter ´y spravuje. Napˇr´ıklad plugin Tomcat z´ısk´av´a

”Dostupnost“, ”Moment´aln´ı poˇcet vl´aken“ a

”Moment´aln´ı zanepr´azdnˇen´a vl´akna“ pro sluˇzbu ”Vl´akna“. Pravidla pro z´ısk´av´an´ı metrik jsou definovan´a ve strukturovan´em v ´yrazu definovan´em jako ˇsablona metriky. ˇSalona metriky identifikuje c´ılovou metriku podle jm´ena n´avratov´e souvisej´ıc´ı mˇern´e tˇr´ıdy a poskytuje data, kter´a tˇr´ıda poˇzaduje k z´ısk´an´ı metriky (napˇr. zdrojov ´y JMX Obect-Name).

(21)

3.4.4 Kostra deskriptoru

Struktura deskriptoru pluginu je stejn´a jako hierarchie zdrojov ´ych typ ˚u, kter´e plugin spravuje, vyj´adˇren´a podm´ınkami invent´arn´ıho modelu Hyperic. Deskriptor pluginu ob-sahuje element typu zdroje -<platform>,<server>nebo<service>- pro kaˇzd ´y typ zdroje, kter ´y je spravov´an. Hierarchie zdrojov ´ych element ˚u v deskriptoru mus´ı odr´aˇzet vztahy mezi spravovan ´ymi typy zdroj ˚u. Napˇr´ıklad element<server>pro Tomcat ob-sahuje (je rodiˇcem) element<service>pro typ Vhost.

Typick ´y pˇr´ıklad hierarchie deskriptoru:

<plugin> (root) <server>

<service> <server> <service>

3.4.5 Fakta o ˇsablon ˇe metrik

Kaˇzdou metriku, kterou plugin shromaˇzd’uje m´a ˇsablonu metriky, kter´a vyjadˇruje po-ˇzadavek na specifickou metriku pro specifick ´y zdroj ve form´atu kter´emu Hyperic agent rozum´ı. ˇSablona metriky m´a formu:Domain:Properties:Metric:Connection

ˇSablona metriky poskytuje informace pro mˇernou tˇr´ıdu, kter´e potˇrebuje k z´ısk´an´ı metriky. Tyto informace zahrnuj´ı parametry zdroje (data spojen´ı, typ zdroje a jm´ena a tak d´ale) a parametry metriky (kategorie, jednotky mˇeˇren´ı, jestli je to indik´ator, a tak d´ale). Tyto zdrojov´e a metrick´e parametry jsou definov´any v elementech <option>,

<property>a <metric>pro typ zdroje. ˇSablona zdroje sjednocuje tato data pro kon-kr´etn´ı metriku jako strukturovan ´y

”poˇzadavek metriky“, kter ´y Hyperic agent dok´aˇze splnit.

Plugin Hypericu spravuj´ıc´ı hierarchii serverov ´ych sluˇzeb ˇcasto sb´ır´a pˇres tis´ıc je-dineˇcn ´ych metrik. K usnadnˇen´ı procesu definice ˇsablon metrik, v ´yvoj´aˇri plugin ˚u typ-icky definuj´ı ˇsablonu z hlediska promˇenn´e, kter´a vrac´ı hodnoty relevantn´ı s<option>,

(22)

Prvn´ı druh je vˇzdy vyˇzadovan ´y u Hyperic plugin ˚u a mus´ı b ´yt bezpodm´ıneˇcnˇe pˇr´ıtomen, jedn´a se o dostupnost sluˇzby. Tato dostupnost se m ˚uˇze zjiˇst’ovat r ˚uzn ´ym zp ˚usobem. Je d ˚uleˇzit´e, ale aby vˇzdy dok´azala vr´atit 0 nebo 1. Podle toho se vlastnˇe vyhodnocuje, jestli je sluˇzba dostupn´a nebo nedostupn´a. Pot´e se tato metrika zobrazuje v uˇzivatelsk´em rozhran´ı Hyperic jako procentu´aln´ı hodnota (napˇr. 85% dostupnost). D´a se podle toho velice dobˇre urˇcit v jak´em je sluˇzba stavu, a jak ˇcasto u n´ı doch´az´ı k v ´ypadku.

Druh´a metrika spoˇc´ıv´a v SQL dotazu do datab´aze, kter ´y zjiˇstuje celkov ´y poˇcet z´azna-m ˚u v tabulce. T´ız´azna-mto se d´a celkez´azna-m snadno zjistit, jestli data do tabulky pˇrib ´yvaj´ı nebo se nemˇen´ı. Hodnota je celoˇc´ıseln´a a zobrazuje se pot´e v uˇzivatelsk´em rozhran´ı Hyperic a generuj´ı se pomoc´ı n´ı grafy, kde je vidˇet pˇr´ır ˚ustek dat.

Posledn´ı metrika je navrˇzena tak, aby dok´azala z tabulky podle jm´ena sloupce odeˇc´ıst posledn´ı hodnotu typudatetimea tuto hodnotu vr´atit. Toto je velice d ˚uleˇzit´e pro tab-ulky, kter´e si zaznamen´avaj´ı datum a ˇcas uloˇzen´ı z´aznam ˚u do sloupc ˚u. Je potom moˇzn´e si tyto data z datab´aze vyvolat a nechat si je pohodlnˇe zobrazit a zjistit, jestli data pˇrib ´yvaj´ı. Plugin je moˇzn´e pouˇz´ıt pro sledov´an´ı pˇrib ´yv´an´ı dat do tabulky a s pomoc´ı nastaven´ı r ˚uzn ´ych v ´ystrah se nechat informovat o poˇzadovan´em stavu. Takto je moˇzn´e doc´ılit napˇr´ıklad toho, ˇze pˇri neplnˇen´ı tabulky daty se po urˇcit´e dobˇe odeˇsle email s informacemi o neplnˇen´ı na poˇzadovanou emailovou adresu.

4.1.1 N ´avrh ˇre ˇsen´ı

Nejdˇr´ıve bylo potˇreba stanovit, jak ´ym zp ˚usobem zjiˇstovat, jestli data v tabulk´ach pˇri-b ´yvaj´ı. Toto je moˇzn´e zjistit pomoc´ı dotazu, kter ´y vr´at´ı celkov ´y poˇcet z´aznam ˚u z tapˇri-b- tab-ulky (napˇr.SELECT * FROM tabulka;). T´ım zajist´ıme, ˇze se n´am do metriky dostane celkov ´y poˇcet z´aznam ˚u z tabulky. Toto je z´akladn´ı pˇr´ıstup k probl´emu. Jestliˇze jsou v tabulce sloupce, kter´e maj´ı typdatetimea do nich se zaznamen´av´a datum a ˇcas, kdy se do tabulky z´aznam uloˇzili, je moˇzn´e tyto sloupce monitorovat a zjistit si posledn´ı zadan ´y datum a ˇcas a tento ´udaj vr´atit jako metriku. Toto je moˇzn´e prov´adˇet SQL pˇr´ıkazem, kter ´y dok´aˇze vyfiltrovat dan ´y sloupec a na nˇem prov´est ˇrad´ıc´ı funkci a vybrat posledn´ı z´aznam.

(23)

Bylo potˇreba tak´e vyˇreˇsit spr´avu pˇripojen´ı do datab´aze. Hyperic m´a vˇsak pro tento pˇr´ıpad pˇrichystan´e podp ˚urn´e tˇr´ıdy, kter´e je moˇzn´e vyuˇzit pro r ˚uzn´e implementace plu-gin ˚u. Tyto tˇr´ıdy se hod´ı pro r ˚uzn´e pouˇzit´ı a je dobr´e je vyuˇz´ıt, protoˇze dok´aˇz´ı usnadnit nˇekter´e ´ukoly, kter´e by trvali pˇr´ıliˇs dlouho. V m´em pˇr´ıpadˇe byla pouˇzita jenom jedna. Tˇr´ıdaorg.hyperic.hq.plugin.sqlquery.SQLQueryMeasurementPluginse sta-r´a o spojen´ı s datab´az´ı a prov´adˇen´ım SQL dotaz ˚u. Pro jej´ı pouˇzit´ı je nutn´e specifiko-vat jak ´y se pouˇzije JDBC driver. Tyto drivery jsou implementov´any t´emˇeˇr pro kaˇzdou datab´azi. V pluginech jsou pouˇzity tyto tˇri drivery:

MySQL:com.mysql.jdbc.Driver

MSSQL:com.microsoft.sqlserver.jdbc.SQLServerDriver

PostgreSQL:org.postgresql.Driver

D´ale je potˇrebu uv´est pˇripojovac´ı url adresu datab´aze pouˇz´ıvaj´ıc´ı vlastn´ı JDBC form´at. MySQL pouˇz´ıv´a n´asleduj´ıc´ı form´at: jdbc:mysql://localhost/jmenoDatabaze. Nutn´e jsou tak´e pˇrihlaˇsovac´ı ´udaje do datab´aze, jako je jm´eno a heslo.

Pˇri n´avrhu pluginu byla br´ana v poraz rozd´ılnost jednotliv ´ych datab´azov ´ych pro-dukt ˚u a jejich datab´az´ı, proto jsem implementoval plugin pro n´asleduj´ıc´ı datab´aze: My-SQL, MSSQL a PostgreSQL. Pro kaˇzd ´y typ datab´aze je implementov´an samostatn ´y plu-gin, kter ´y se star ´y o sbˇer dan´e metriky. Bylo potˇreba takto pluginy rozdˇelit, protoˇze kaˇzd ´y pracuje jinak s typem datetime, kter ´y je nutn´e jeˇstˇe pro mˇeˇren´ı metrik pˇrev´est na typ

timestamp. Tento se pot´e zobrazuje v uˇzivatelsk´em rozhran´ı Hyperc. Kde je moˇzn´e sle-dovat jeho r ˚ust.

Pro tento typ pluginu je poˇzit pouze jeden XML soubor, kter ´y obsahuje jak samotn ´y deskriptor, tak vlastn´ı implementaci. T´ımto bylo doc´ıleno v ´yrazn´eho zjednoduˇsen´ı plug-inu. Nebylo by to vˇsak moˇzn´e, bez pouˇzit´ı podp ˚urn´e tˇr´ıdy pro pr´aci s SQL, kterou Hy-peric poskytuje.

4.1.2 Vlastn´ı implementace

Implementace prob´ıhala pro kaˇzd ´y typ datab´aze samostatnˇe. Zde bude uk´az´ana imple-mentace pro datab´azi MySQL. Impleimple-mentace pro ostatn´ı datab´aze je obdobn´a.

Plugin growth of table mysql obsahuje dvˇe platformn´ı sluˇzby, kter´e se zobrazuj´ı v uˇzivatelsk´em rozhran´ı jakoNumOfRec MySQLcoˇz je zkr´acen ´y n´azev pro poˇcet z´aznam ˚u a LastRecInCol MySQL coˇz je zkr´acen ´y n´azev pro posledn´ı z´aznam ve sloupci. Kaˇzd´a sluˇzba m´a svoj´ı jedineˇcnou metriku a svoje nastaven´ı.

SluˇzbaNumOfRec MySQL je implementov´ana pomoc´ı podp ˚urn´e tˇr´ıdy, kter´e nab´ız´ı zjednoduˇsenou pr´aci s SQL dotazy pomoc´ı z´apisu do atribututemplate. Syntaxe pˇr´ıka-zu je n´asleduj´ıc´ı:sql:Query:MetricName. Konkr´etn´ı pˇr´ıklad pro zjiˇstˇen´ı dostupnosti sluˇzby je:sql:SELECT COUNT(*) FROM table WHERE 1=1:Availability. Tento pˇr´ıkaz je nutn´e zadat do ohraniˇcen´eho elementu metric v XML deskriptoru pluginu. Konkr´etn´ı pˇr´ıklad pluginu je na v ´ypisu ˇc. 1.

(24)

description=”JDBC User”/>

<option name=”jdbcPassword” type=”secret” optional=”true”

description=”JDBC Password”/> <option name=”tableName”

description=”Name of desired table”/> </config>

<metric name=”Availability”

template=”sql:SELECT COUNT(∗) FROM %tableName% WHERE 1=1:${name}” indicator =”true”/>

<metric name=”Number of records”

template=”sql:SELECT COUNT(∗) FROM %tableName%:${name}” indicator =”true”

collectionType=”dynamic” interval =”6000”/> </service>

</plugin>

V ´ypis 1: XML plugin pro sbˇer dat z datab´azov ´ych tabulek

Jednotliv´e metriky jsou v XML deskriptoru pops´any na n´asleduj´ıc´ıch str´ank´ach.

<metric name="Availability"

template="sql:SELECT COUNT(*) FROM %tableName% WHERE 1=1:${name}" indicator="true"/>

V pˇr´ıkladu je uveden n´azev metrikyname="Availability"vlastn´ı ˇsablonatemplate

a indik´ator, zda se bude zobrazovat v uˇzivatelsk´em rozhran´ıindicator="true". Metrika pro vlastn´ı mˇeˇren´ı, jestli do tabulky pˇrib ´yvaj´ı data pomoc´ı zjiˇstˇen´ı celkov´eho poˇctu z´aznam ˚u v tabulce je n´asleduj´ıc´ı:

<metric name="Number of records"

(25)

indicator="true"

collectionType="dynamic" interval="6000"/>

V ´yznamy jednotliv ´ych atribut ˚u jsou stejn´e jako v pˇredchoz´ım pˇr´ıpadˇe, ale jsou zde nˇe-kter´e nav´ıc. AtributcollectionType="dynamic"znaˇc´ı, ˇze se metrika m ˚uˇze libovolnˇe mˇenit, stoupat i klesat. Toto m ˚uˇze b ´yt trochu zav´adˇej´ıc´ı, ale v tomto konkr´etn´ım pˇr´ıpadu je nutn´ı m´ıt nastaven takov ´yto typ, aby se v grafech v uˇzivatelsk´em rozhran´ı objevili poˇzadovan´e poˇcty z´aznam ˚u. Atributinterval="6000"znaˇc´ı, jak ˇcasto se bude metrika zaznamen´avat, coˇz je v tomto pˇr´ıpadˇe 6000 ms.

Kaˇzd ´y plugin obsahuje konfiguraˇcn´ı element<config>do kter´eho se zapisuje nas-taven´ı pluginu, kter´e se potom objevuje v uˇzivatelsk´em rozhran´ı na str´ance vytv´aˇren´ı monitorovac´ı sluˇzby. Z´apis elementu<config>pro nastaven´ı sluˇzby je n´asleduj´ıc´ı:

<config>

<option name="jdbcDriver" type="hidden" description="JDBC Driver Class Name" default="com.mysql.jdbc.Driver"/>

<option name="jdbcUrl"

description="JDBC Connection URL"

default="jdbc:mysql://localhost/databaseName"/>

<option name="jdbcUser" description="JDBC User"/>

<option name="jdbcPassword" type="secret" optional="true"

description="JDBC Password"/>

<option name="tableName"

description="Name of desired table"/> </config>

Element<option>obsahuje napˇr´ıklad atributyname="jdbcDriver", kde je ulo-ˇzeno jm´eno,type="hidden", kter ´y ˇr´ık´a, ˇze tato moˇznost se nem´a zobrazovat v uˇzivate-lsk´em rozhran´ı Hyperic,description="JDBC Driver Class Name", kde je uveden popis poloˇzky adefault="com.mysql.jdbc.Driver"kter ´y ˇr´ık´a, jak se m´a nastavit v ´ychoz´ı hodnota. Jak vypad´a konfiguraˇcn´ı element zobrazen ´y v uˇzivatelsk´em prostˇred´ı Hyperic je vidˇet na obr´azku 4.

Toto vˇsechno je uloˇzeno v XML deskriptoru a obaleno elementem<service>, kter ´y ˇr´ık´a, ˇze se jedn´a o plugin pro sluˇzbu.

SluˇzbaLastRecInCol MySQLje implementov´ana podobnˇe jako pˇredchoz´ı sluˇzba s t´ım rozd´ılem, ˇze byl pouˇzit jin ´y atributtemplatepro z´ısk´an´ı informace o posledn´ı hodnotˇe zadan´eho sloupce, kter ´y m´a n´asleduj´ıc´ı podobu:

(26)

template="sql:SELECT UNIX_TIMESTAMP(%columnName%) FROM %tableName%

order by %columnName% desc limit 1:${name}"

Tento pˇr´ıkaz provede v ´ybˇer dan´eho sloupce seˇrazen´eho podle data a z´ısk´an´ı posledn´ı ˇcasov´e hodnoty, kter´a je n´aslednˇe pˇrevedena na typtimestamp. Pro tuto sluˇzbu je jeˇstˇe potˇreba nastavit, jak ´y sloupce z tabulky chceme sledovat.

4.1.3 Otestov ´an´ı pluginu

Otestov´an´ı plugin ˚u prob´ıhalo na vlastn´ı instalaci Hyperic HQ s agentem nainstalovan ´ym na tom sam´em stroji. Byla vytvoˇrena datab´aze testdb a v n´ı byla vytvoˇrena tabulka

test_table, do kter´e byla vytvoˇrena inicializaˇcn´ı data. Tabulkatest_tablese skl´ad´a ze tˇr´ı sloupc ˚u. Prvn´ı sloupec se jmenujeid, je typuinta je v nˇem uloˇzeno id z´aznamu, kter´e se automaticky dopl ˇnuje po pˇrid´an´ı z´aznamu do tabulky. Dalˇs´ı sloupec se jmenuje

name, je typuvarchara je zde uloˇzeno jm´eno z´aznamu. Posledn´ı sloupec se jmenuje

date, je typudatetimea je v nˇem uloˇzena informace o ˇcase a datu pˇrid´an´ı z´aznamu do tabulky.

Na zaˇc´atku byly do datab´aze uloˇzeny ˇctyˇri z´aznamy s jedineˇcn ´ym id a vlastn´ım ˇcasem uloˇzen´ı ve sloupci date. Pot´e bylo provedeno nastaven´e plugin ˚u na sluˇzby Nu-mOfRec MySQL a LastRecInCol MySQLs nastaven´ım t´eto konkr´etn´ı datab´aze a jej´ı tab-ulky. V pˇr´ıpadˇe sluˇzby LastRecInCol MySQLbyl jeˇstˇe nastaven sloupecdatepro moni-torov´an´ı ˇcasu a data.

Postupnˇe se tabulka plnila daty a kontroloval se jej´ı stav pomoc´ı plugin ˚u. Jak se mˇenili grafy v pr ˚ubˇehu testov´an´ı je moˇzn´e si prohl´ednout na obr´azku ˇc. 5. Z obr´azku je pa-trn´e jak sluˇzba pro sbˇer celkov´eho poˇctu z´aznam ˚u vykazuje r ˚ust, kdyˇz jsou z´aznamy do datab´aze pˇrid´av´any. U sluˇzby kter´a zobrazuje ˇcas posledn´ıho z´aznamu je patrn ´y ne-line´arn´ı a skokov ´y r ˚ust. To je zp ˚usobeno t´ım, ˇze z´aznamy byli do datab´aze vkl´ad´any s r ˚uzn ´ym datem, ne vˇzdy bezprostˇrednˇe za sebou n´asleduj´ıc´ım.

(27)

Obr´azek 5: Uk´azka graf ˚u monitorovac´ı sluˇzby s pˇrib ´yvaj´ıc´ı dobou a dalˇs´ımi z´aznamy

4.2 Pluginu pro sledov ´an´ı stavu URL dle vr ´acen ´eho obsahu

Tento plugin obsahuje celkem sedm metrik pro rozliˇcn´e pouˇzit´ı. Jako z´akladn´ı je zde metrika dostupnosti, kter´e je vyˇzadovan´a u kaˇzd´eho pluginu. Tato metrika urˇcuje, jestli je sluˇzba v provozu nebo nen´ı. Jedn´a se o metriky, kter´e se zjiˇst’uj´ı pomoc´ı http dotazu. Je tedy potˇreba zjiˇst’ovat n´avratov ´y k ´od tohoto dotazu, proto je to jedna z metrik. Plugin tak´e obsahuje metriku pro zjiˇstˇen´ı velkosti obsahu, kter´a ud´av´a velikost odpovˇedi v Byte. Pro spr´avnou funkcionalitu n´asleduj´ıc´ıch metrik je tˇreba prov´est dodateˇcn´a nastaven´ı v uˇzivatelsk´em rozhran´ı pro upˇresnˇen´ı metriky. Dodateˇcn´e metriky jsou:

• Typ obsahu (Content-Type)

• Kl´ıˇcov´e slovo v HTML tagu<meta name="keywords"/>(Keyword status) • Poˇcet nalezen ´ych element ˚u pomoc´ı XPath (Number of elements by XPath) • Vyhled´an´ı ˇretˇezce ve viditeln´em HTML (String found)

Typ obsahuje metrika, pro kterou je potˇreba zadat, jak ´y typ m´a vyhled´avat v HTTP odpovˇedi. Jako pˇr´ıklad je moˇzn´e uv´est Content-Type:text/html. Toto je z´akladn´ı typ, kter ´y se zobraz´ı po naˇcten´e bˇeˇzn´e HTML str´anky. Typ ˚u je velk´e mnoˇzstv´ı a tato metrika poˇc´ıt´a s t´ım, ˇze je bude uˇzivatel nastavovat. Je moˇzn´e sledovat, jestli se zobrazuj´ı poˇzado-van´e obr´azky pomoc´ı Content-Type:image/png. V pˇr´ıpadˇe, ˇze je typ obsahu v odpovˇedi nalezen do metriky se uvede ˇc´ıslo 1, v opaˇcn´em pˇr´ıpadˇe se uvede ˇc´ıslo 0.

(28)

led´av´an´ı kl´ıˇcov ´ych slov v HTML str´ance. Tento HTML tag slouˇz´ı pro vyhled´avaˇce a uv´adˇej´ı se zde kl´ıˇcov´a slova pro zobrazenou str´anku z d ˚uvodu kategorizace z´aznam ˚u. Hled´a se vˇzdy jenom jedno kl´ıˇcov´e slovo. V pˇr´ıpadˇe, ˇze je poˇzadovan´e slovo nalezeno do metriky se uvede ˇc´ıslo 1, v opaˇcn´em pˇr´ıpadˇe se uvede ˇc´ıslo 0.

Poˇcet nalezen ´ych element ˚u pomoc´ı XPathslouˇz´ı pro vyhled´av´an´ı v HTML pomoc´ı XPath a vr´acen´ı poˇctu nalezen ´ych element ˚u. Je moˇzn´e zad´avat jednoduch´e z´apisy po-moc´ı XPath, ale nen´ı probl´em vytvoˇrit i sloˇzitˇejˇs´ı konstrukce, pro nalezen´ı poˇzadovan ´ych element ˚u, kter´e maj´ı v´ıce atribut ˚u a dalˇs´ı parametry. Jako pˇr´ıklad lze uv´est n´asleduj´ıc´ı XPath://div[starts-with(@id, "photo_") and @class="new"], kter ´y prohle-d´av´a cel ´y dokument a hled´a elementdiv, jenˇz m´a v sobˇe atributid, jehoˇz hodnota zaˇc´ın´a naphoto_a z´aroven obsahuje atributclass, kter ´y m´a hodnotunew.

Vyhled´an´ı ˇretˇezce ve viditeln´em HTMLje metrika, kterou je moˇzno pouˇz´ıt na hled´an´ı textu v HTML, kter´e se zobraz´ı v prohl´ıˇzeˇci. To znamen´a, ˇze z hled´an´ı jsou vypuˇstˇeny vˇsechny HTML tagy, ponech´an je pouze textov ´y obsah. Jestliˇze je hledan´e slovo nalezeno do metriky se uvede ˇc´ıslo 1, jinak se uvede ˇc´ıslo 0.

4.2.1 Vlastn´ı implementace

Plugin je implementov´an ve skriptovac´ım jazyce Python, kter ´y byl pouˇzit pro jeho velk´e rozˇs´ıˇren´ı, ˇcitelnost k ´odu a mnoho podp ˚urn ´ych knihoven. V jazyce Python je naps´an skript, kter ´y se vol´a pomoc´ı samotn´eho pluginu. Plugin obsahuje deskriptor, kde je po-ps´ano, kter´a metrika pouˇz´ıv´a jak ´y pˇr´ıkaz. Samotn´a skript se skl´ad´a z jedn´e metody, kter´a se pˇripojuje na zadanou url a pomoc´ı podp ˚urn ´ych metod sb´ır´a a filtruje poˇzadovan´a data. Skript je implementov´an n´asledovnˇe:

importsys importurllib2 importlxml.html defgetMetric() : code = 0 contentTypeStatus = 0

(29)

keywordStatus = 0 responseCode = 0 contentLength = 0 xpathElements = 0 stringToFindStatus = 0

# Prirazeni vstupnich parametru

url = sys.argv [1][3:] contentType = sys.argv [2][3:] keyword = sys.argv [3][3:] xpath = sys.argv [4][3:] stringToFind = sys.argv [5][3:]

request = urllib2 .urlopen(url )

# Response code

responseCode = request.getcode()

info = request. info ()

# Content−Length

contentLength = info.get( ”Content−Length”)

# Content−Type if contentType != ’ ’ : if contentType == info.gettype() : contentTypeStatus = 1 # Nacteni html html = lxml .html.fromstring(request.read())

# Hledani klicoveho slova v tagu meta name=”keywords”

result = html.xpath(’ // meta[@name=”keywords”]’) keywords = result [0]. get( ’ content’ ) . split ( ’ , ’ )

if keyword != ’ ’ :

for keyin keywords:

if key. strip () == keyword: keywordStatus = 1 break #endif #endfor #endif #xpath Elements if xpath != ’ ’ : result = html.xpath(xpath) xpathElements = len(result) #endif # String to find if stringToFind != ’ ’ :

position = html. text content () . find (stringToFind)

if position >= 0:

(30)

V ´ypis 2: Skript http-content.py v jazyce Python

Na zaˇc´atku jsou definov´any promˇenn´e metrik a jsou nastaveny na poˇc´ateˇcn´ı hodnoty. Pot´e dojde k pˇreˇcten´e vstupn´ıch parametr ˚u. Tyto parametry jsou oznaˇceny vˇzdy dvˇema alfanumerick ´ymi znaky n´asledovan ´ymi znakem rovno

”=“ a hodnotou. Toto rozdˇelen´e je d ˚uleˇzit´e pro spr´avn´e pˇriˇrazen´ı hodnot metrik´am. Ze vstupn´ıch parametr ˚u jsou odstra-nˇeny poˇc´ateˇcn´ı tˇri znaky a pˇriˇrazeny k odpov´ıdaj´ıc´ım promˇenn ´ym.

Otevˇre se HTTP spojen´ı na zadanou url adresu pomoc´ı knihovny urllib2 a jej´ı metody urlopen(). V ´ysledek spojen´ı je uloˇzen do promˇenn´e request, se kterou se pot´e d´ale pracuje.

Nejdˇr´ıve je nutn´e z´ıskat n´avratov ´y k ´od spojen´e. Toto je provedeno pomoc´ı metody

getcode(), kter´a vrac´ı HTTP k ´od odpovˇedi. Z hlaviˇcky odpovˇedi je moˇzn´e tak´e z´ıskat informace o velikosti obsahu pomoc´ı metodyinfo()a pot´eget("Content-Length"). Tak´e je zde z´ısk´ana informace o typu obsahu. Toto se provede pomoc´ı metodygettype(). Provede se porovn´an´ı, jestli zadan ´y typ odpov´ıd´a typu z odpovˇedi. Jestliˇze ano, poznaˇc´ı se informace o shodˇe do promˇenn´econtentTypeStatus.

N´asleduje naˇcten´ı samotn´eho obsahu coˇz m ˚uˇze b ´yt HTML kod, vlastn´ı data obr´azku a dalˇs´ı. Obsah je parsov´an pomoc´ı knihovnylxml.htmla jej´ı metodyfromstring()

kde je nahr´an obsah cel´e odpovˇedi. Hled´an´ı kl´ıˇcov ´ych slov prob´ıh´a tak, ˇze se vyhled´a pˇr´ısluˇsn ´y HTML element, v tomto pˇr´ıpadˇe<meta name="keywords"/>a jeho atribut

content se rozdˇel´ı pomoc´ı metody split(’,’) do seznamu, kde jsou uloˇzena jed-notliv´a kl´ıˇcov´a slova. Tato kl´ıˇcov´a slova se pak porovn´avaj´ı s hledan ´ym kl´ıˇcov ´ym slovem, a jestli dojde ke shodˇe, je toto uloˇzeno do promˇenn´ekeywordStatus.

Hled´an´ı element ˚u pomoc´ı XPath je realizov´ano podobnˇe jako hled´an´ı kl´ıˇcov ´ych slov. Podle zadan´e cesty XPath se prohled´av´a obsah a a pˇri shodˇe je element uloˇzen do sez-namu. Zjiˇstˇen´ı velkosti seznamu se prov´ad´ı pomoc´ı metodylen(), kter´a vrac´ı celkov ´y poˇcet poloˇzek. Toto ˇc´ıslo ud´av´a celkov ´y poˇcet nalezen ´ych element ˚u se zadanou XPath.

Pˇri hled´an´ı textov´eho ˇretˇezce v obsahuje je pouˇzita metoda text_content, kter´a zajist´ı, aby se pracovalo pouze s viditeln ´ym textem. Vˇsechny HTML tagy a jejich atributy jsou z obsahu odstranˇeny. Pro samotn´e prohled´av´an´ı je zavol´ana metody find(), jenˇz vrac´ı pˇri ´uspˇechu ˇc´ıselnou pozici zaˇc´atku hledan´eho textu, pˇri ne ´uspˇechu vrac´ı -1.

(31)

Nakonec je provedeno vytiˇstˇen´ı dvojicn´azevMetriky=hodnotana standardn´ı v ´y-stup odkud je potom pluginem metrika naˇctena do agenta a d´ale zpracov´ana.

<plugin>

<property name=”version” value=”1.0”/>

<property name=”PLUGIN VERSION” value=”4.6.6”/> <property name=”PLUGIN NAME” value=”http−content”/> <service name=”HTTP Content”>

<config>

<option name=”script” type=”hidden” description=”http script ” default=”pdk/scripts / http−content.py”/> <option name=”url” description=”URL address” default=”http :// ”/> <option name=”contentType” description=”Content type” optional=”true” default=” text /html”/> <option name=”keyword”

description=”Keyword to search in META” optional=”true” default=””/> <option name=”xpath” description=”Xpath to search” optional=”true” default=””/> <option name=”findString”

description=”Find visible text string in HTML” optional=”true”

default=””/> </config>

<filter name=”template”

value=”exec: file =%script%,args=ur=%url% ct=%contentType% kw=%keyword% xp=% xpath% sf=%findString%”/>

<metric name=”Availability” template=”${template}: Availability ”

indicator =”true”/>

<metric name=”Response code” category=”UTILIZATION”

indicator =”true”

template=”${template}:code”/> <metric name=”Length”

(32)

category=”THROUGHPUT” indicator =”true”

template=”${template}:xpath−elements”/> <metric name=”String found”

category=”THROUGHPUT” indicator =”true”

template=”${template}:string−to−find−status”/> </service>

</plugin>

V ´ypis 3: XML soubor pluginu s deskriptorem

Samotn ´y XML deskriptor je rozdˇelen na dvˇe ˇc´asti. V prvn´ı ˇc´asti je uvedena konfigu-race pluginu, kter´a se bude zobrazovat v uˇzivatelsk´em rozhran´ı Hyperic. Do t´eto konfig-urace je zahrnuta i cesta k samotn´emu skriptu, kter ´y sb´ır´a metriku. V tomto pˇr´ıpadˇe je cesta nastavena napdk/scripts/http-content.pya m´a pˇr´ıznak skryt´a, takˇze nen´ı pˇr´ımo v uˇzivatelsk´em rozhran´ı vidˇet a ani j´ı nejde pˇrenastavit.

URL adresa je jedin ´y povinn ´y ´udaj a mus´ı b ´yt zad´ana, jinak nebude sbˇer metriky fun-govat. Tvar adresy s protokolem ve form´atu:http://dom´ena/jm´enoStr´anky.html.

Je moˇzn´e zadat Content-Type, kter ´y se m´a objevit v odpovˇedi. Tato moˇznost je vo-liteln´a d´ıky atributuoptional="true"a v ´ychoz´ı pˇredvyplnˇen´a hodnota ve formul´aˇri je nastavena natext/html, coˇz je bˇeˇzn´a hodnota pro webovou str´anku.

Moˇznost kl´ıˇcov´eho slova znamen´a, ˇze zadan´e slovo se bude hledat v HTML ele-mentu <meta name="keywords"/>. Toto je tak´e voliteln´a poloˇzka a nem´a ˇz´adnou pˇrednastavenou hodnotu.

Stejn´e je to u poloˇzkyxpathafindString. Prvn´ı slouˇz´ı k vyhled´an´ı a n´avratu poˇctu element ˚u podle zadan´eho XPath. Druhou metodu je moˇzn´e pouˇz´ıt, kdyˇz na str´ance je text, kter ´y je potˇreba sledovat, jestli se pokaˇzd´e zobraz´ı.

Zaj´ımav´e je pouˇzit´ı filtru, jehoˇz konstrukce je trochu sloˇzitˇejˇs´ı. Je rozdˇelena na nˇekolik ˇc´ast´ı. Jm´eno filtru jetemplate, n´azev slouˇz´ı pro dalˇs´ı pouˇzit´ı v r´amci samotn ´ych metrik. Atributvalueobsahuje definici spouˇstˇen´ı skriptu. Prvn´ı poloˇzkaexec:n´am ˇr´ık´a, ˇze se jedn´a o skript, kter ´y se budou spouˇstˇet. atribut fileslouˇz´ı pro naˇcten´ı skriptu, ud´av´a

(33)

Obr´azek 6: Uk´azka graf ˚u pro plugin http-content

se zde cesta ke spustiteln´emu souboru. V tomto pˇr´ıpadˇe je cesta zad´ana jako promˇenn´a, kter´a dokazuje na konfiguraˇcn´ı elementscript. Nejd ˚uleˇzitˇejˇs´ı v tomto pˇr´ıpadˇe jsou vs-tupn´ı argumenty pro skript, zde zadan´e v atributuargs. Jedn´a se o argumenty, kter´e jsou pˇred´any z uˇzivatelsk´eho rozhran´ı skriptu i s jejich tˇr´ıznakov ´ym prefixem, kter ´y slouˇz´ı pro identifikaci.

Samotn´e metriky jsou uvedeny v elementechmetric. Maj´ı hodnˇe spoleˇcn ´ych rys ˚u, ale nˇekter ´y se liˇs´ı. Vˇsechny pouˇz´ıvaj´ı stejn´atemplate, kter ´y je sloˇzen z ˇc´asti z filtru a je k nˇemu pˇrid´an n´azev metriky, kterou vrac´ı skript. U metriky se jm´enemLengthje uveden atributunitss jednotkouB, coˇz znamen´a, ˇze zadan´e metriky se budou v uˇzivatelsk´em rozhran´ı zobrazovat vByte.

4.2.2 Otestov ´an´ı pluginu

Plugin byl testov´an s HTML str´ankou na kter´e byly vˇsechny hledan´e parametry dos-tupn´e. Parametry nastaven´e v uˇzivatelsk´em rozhran´ı Hyperic pro spuˇstˇen´ı testov´an´ı jsou

(34)

<head>

<title>test page</title>

<meta http−equiv=”content−type” content=”application/xhtml+xml; charset=UTF−8” /> <meta name=”author” content=”Martin Pape” />

<meta name=”description” content=”Testovac strnky ” /> <meta name=”keywords” content=”test, zkouska, testing,” /> <meta name=”robots” content=”index, follow, noarchive” /> <meta name=”googlebot” content=”noarchive” />

<link rel =”stylesheet” type=”text /css” media=”screen” href=”style.css” /> </head>

<body>

<div id=”main”class=”maindiv”> <h2>test page</h2> <p>

<strong>Testovani softwaru</strong>.

</p> </div> </body> </html>

V ´ypis 4: Obsah testovac´ı HTML str´anky

Na obr´azku ˇc. 6 jsou zobrazeny grafy pro jednotliv´e metriky pluginu http-content. Z graf ˚u je patrn´e, ˇze v poˇc´ateˇcn´ım stavu jsou nalezeny vˇsechny poˇzadovan´e prvky na str´ance i v HTTP hlaviˇcce. N´avratov ´y kod odpovˇedi je 200. Typ obsahu (Contetn-Type) odpov´ıd´a hledan´emu v ´yrazutext/htmlcoˇz je naznaˇceno hodnotou 1 v grafu. Velikost obsahuje je 2,3kB. Kl´ıˇcov´e slovotestje nalezeno v:

<meta name="keywords" content="test, zkouska, testing," />

A proto se v grafu zobrazuje 1. Poˇcet nalezen ´ych element ˚u je celkem 6, jak je patrn´e z grafu pro XPath. Hledan´ı textu softwaruve viditeln´ı ˇc´asti str´anky je zobrazeno na grafu String found, kter ´y vykazuje hodnotu 1.

Po tomto poˇc´ateˇcn´ım testu byla provedena editace na souboru test_page.html, a odstranˇeny dva posledn´ı META tagy, zmˇenˇeno kl´ıˇcov´e slovo z test natestovaci

(35)

a byla provedena zmˇena vyhled´avan´eho slova softwarunasoftwwwaru. T´ımto bylo zapˇr´ıˇcinˇeno, ˇze hledan ´y viditeln ´y text nebyl nalezen, coˇz je naznaˇceno na grafu hodnotou 0, prohled´av´an´ı element ˚u pomoc´ı XPath objevilo jen 4 elementy a kl´ıˇcov´e slovo test

nebylo nalezeno, protoˇze je v grafu zobrazena 0.

Jeˇstˇe bylo provedeno nˇekolik samostatn ´ych test ˚u, aby se prok´azalo ˇze funguje spr´avnˇe vyhled´an´ı typu obsahu. Testy prob´ıhali na r ˚uzn ´ych typech obr´azk ˚u, text ˚u a audiovizu´al-n´ım obsahu.

(36)

kter ´y je pot´e zobrazov´an bez probl´em ˚u. Tento plugin by se v budoucnu mohl d´at jeˇstˇe rozˇs´ıˇrit, ale povaˇzuji jeho funkcionaluti pro dostaˇcuj´ıc´ı pro zadan ´y ´ukol.

Plugin pro sledov´an´ı stavu URL dle vr´acen´eho obsahu byl implementov´an pomoc´ı skriptovac´ıho jazyka Python, kter ´y dovoluje prov´adˇet sloˇzit´e akce ve srozumiteln´e formˇe z´apisu. M´a velk´e mnoˇzstv´ı rozˇsiˇruj´ıc´ıch knihoven a je dostupn ´y pro vˇsechny platformy. Hyperic HQ dovoluje pˇri implementaci plugin ˚u vyuˇz´ıt vlastn´ı skripty, ale je potˇreba striktnˇe dodrˇzet form´at pˇred´av´an´ı metrik. Tento form´at je vytiˇstˇen na standardn´ı v ´ystup, odkud je pˇred´an HQ agentovi. V zad´an´ı pro tento plugin bylo uvedeno, ˇze m´a velikost obsahu, mime-type a obsaˇzen´a kl´ıˇcov´a slova. K tˇemto funkc´ım byly pˇrid´any jeˇstˇe dalˇs´ı pro monitorov´an´ı n´avratov´eho kodu odpovˇedi, zjiˇstˇen´ı poˇctu element ˚u pomoc´ı zadan´e XPath a vyhled´an´ı viditeln´eho textu na str´ance. Pro spr´avnou funkci skriptu je potˇreba m´ıt nainstalovanou knihovnu lxml jej´ıˇz instalace se provede snadno pomoc´ı pˇr´ıkazu:

pip install lxml. Tato knihovna je pouˇzita pro parsov´an´ı HTML obsahu a hled´an´ı pomoc´ı XPath. Jako nejvˇetˇs´ı probl´em pˇri implementaci se uk´azalo spr´avnˇe napojen´ı XML deskriptoru na vlastn´ı skript, kter´e je realizovan´e pomoc´ı pˇred´av´an´ı nˇekolika vstupn´ıch parametr ˚u a mus´ı b ´yt uvedeno ve spr´avn´e formˇe v atribututemplatev XML deskrip-toru. Tento plugin je jeˇstˇe moˇzn´e urˇcitˇe d´ale rozˇsiˇrovat pˇrid´an´ım poˇzadovan ´ych funkc´ı. Z´aleˇz´ı uˇz potom na konkr´etn´ıch poˇzadavc´ıch.

(37)

6

Reference

[1] Erich Gamma Richard Helm, Ralph Johnson, John Vlissides (Gang of Four) N´avrh program ˚u pomoc´ı vzorc ˚u. Grada. Praha 2003. ISBN 8024703025

[2] Hyperic Application System Monitoring [online]. [cit. 2012-10-05]. Dostupn´e z:

<http://sourceforge.net/projects/hyperic-hq>

[3] Hyperic HQ Tour [online]. 25.2.2009 [cit. 2013-01-05]. Dostupn´e z: <http://support.hyperic.com/download/attachments/59375779/ HypericHQTour.pdf>

[4] Hyperic HQ 3.0 Open Source Test Ride Guide [online]. Bˇrezen 2007 [cit. 2013-03-09]. Dostupn´e z: < http://docs.huihoo.com/hyperic-hq/hyperic-hq-3.0-test-ride-guide.pdf>

[5] Dva nejlepˇs´ı bezplatn´e n´astroje pro spr´avu IT [online]. Duben 2013 [cit. 2013-04-15]. Dostupn´e z: < http://www.businessit.cz/cz/dva-nejlepsi-bezplatne-nastroje-pro-spravu-it.php>

[6] vFabric Hyperic Overview [online]. 2012 [cit. 2013-04-18]. Dostupn´e z:

< http://pubs.vmware.com/vfabric52/topic/com.vmware.ICbase/PDF/vfabric-hyperic-overview-4.6.6.pdf>

[7] vFabric Hyperic Product Plug-in Development[online]. 2012 [cit. 2013-04-18]. Dostupn´e z:< http://pubs.vmware.com/vfabric52/topic/com.vmware.ICbase/PDF/vfabric-hyperic-plugindev-4.6.6.pdf>

(38)
(39)

Seznam obr ´azk ˚

u

1 HQ informaˇcn´ı panel . . . 4

2 HQ architektura . . . 6

3 Hierarchie Platforma-Server-Sluˇzba . . . 10

4 Konfiguraˇcn´ı formul´aˇr sluˇzby NumOfRec MySQL . . . 20

5 Uk´azka graf ˚u monitorovac´ı sluˇzby s pˇrib ´yvaj´ıc´ı dobou a dalˇs´ımi z´aznamy 21 6 Uk´azka graf ˚u pro plugin http-content . . . 27

References

Related documents