2013. május 2., csütörtök

Host és VM performancia értékek, statisztikák gyűjtése - Direkt SQL lekérdezések (2.rész)

Miután az adatainkat már egy ideje gyűjtögetjük, jó lenne abból olyan riportokat generálni, ami mindenki számára elérhetővé tehető. Ennek nagyon sok módja van, attól függően hogy milyen alkalmazás áll rendelkezésünkre.

Röviden azt szeretném veletek megosztani, hogy Microsoft SQL 2005 Reporting Service használatával én ezt hogy oldottam meg.
Emlékeztetőül, van három táblám, amiben különböző idő intervallumokból származó értékek vannak, van egy tábla ami tartalmazza, hogy milyen statisztikákat gyűjtök, illetve a hostokról és clusterekről vannak információim.

Mivel a táblák csak kódokat tartalmaznak, készítettem három view-t (nézetet), amiben már úgy szerepelnek az adatok, hogy a riportokban könnyen meg tudjam jeleníteni azokat.

Pl. a 30 perces adatok esetében így néz ki:


CREATE VIEW [dbo].[VIEW_STAT_30MIN]
AS
SELECT dbo.CLUSTER.NAME AS Cluster, dbo.HOST.NAME AS Host, dbo.STAT_30MIN.SAMPLE_TIME,
dbo.STAT_30MIN.STAT_VALUE, dbo.STAT_DEF.STAT_NAME,

dbo.STAT_DEF.STAT_UNIT

FROM dbo.CLUSTER ,dbo.HOST, dbo.STAT_30MIN,dbo.STAT_DEF
WHERE dbo.STAT_30MIN.HOST_ID=dbo.HOST.ID and
dbo.HOST.CLUSTER_ID=dbo.CLUSTER.ID and
dbo.STAT_30MIN.STAT_ID=dbo.STAT_DEF.STAT_ID

Ezután már át lehet térni a riport gyártásra. Ehhez az SQL Server Bussines Intelligence Development Studio-t használtam. Indulásként létrehoztam egy új Report Server projektet.

Első lépésként egy Shared Data Source objektumot hoztam létre, ami tartalmazza az adatbázis szerver elérhetőségét, az adatbázisom nevét, és egy olyan accountot, amivel olvasási jogom van az adatbázishoz.


Amikor egy új riport tervezésébe kezdek, meg kell határozni, hogy milyen lekérdezések fogják majd szolgáltatni az adatokat akár a riportban megjelenő adatok számára, akár a riport paramétereinek meghatározásához. Ezeket a lekérdezéseket hívja a riport szerver dataseteknek.
Példként az 5 perces adatok lekérdezését megvalósító riportról írok.

A riport adatait a következő dataset határozza meg:

select * from view_stat_5min where host in (@HOST)
and sample_time>=dateadd("hh",CAST(@START_HOUR as integer),@START)
and sample_time<=dateadd("hh",CAST(@END_HOUR as integer),@END) and stat_name=@STAT order by host,sample_time


A riport paramétereihez pedig a következő kettőt használom:

select HOST.name as H_name from HOST,CLUSTER where HOST.cluster_id=CLUSTER.id
order by CLUSTER.name,HOST.name


select stat_name from stat_def


Az első datasetben a @név olyan változókat definiál, amiknek majd már a konkrét futtatáskor a felhasználó értéket tud adni, így azzal tudja testre szabni a riportot. Látható, hogy vannak @HOST,@START_HOUR,@START,@END_HOUR,@END,@STAT változóim, azaz futtatáskor meg tudjuk majd adni, hogy melyik hostokra, mikortól, meddig és milyen statisztikát szeretnénk megjeleníteni.

Ezeknek a változóknak tudunk kezdeti értéket adni, illetve megadhatjuk azt is, hogy melyik dataset legyen a forrása. Ebben a példában a @HOST változónak az első, míg a @STAT változónak a második dataset szolgáltatja az értékeket.
A kezdeti érték megadásával elérhetjük, hogy a riport indításakor a vélhetően leggyakrabban használatos értékek legyenek előre beállítva. A lenti képen látható, hogy ebben a konkrét esetben az előző nap 8 és 18 óra közti időszak, valamint a cpu.usage statisztika van beállítva.


A fél órás riportok esetén az előző teljes nap (0-24 óra), míg a két órás riportok esetében az előző teljes hét a default intervallum.
A vonal diagram az a típus, ami ebben az esetben a leginkább használható. A lenti képen látható egy konkrét riport, ami három host processzor kihasználtságát mutatja a fenti default idő intervallumban.


A következő képen azt lehet látni, hogy az egyik clusterben lévő hostok memória használatát éppen kiegyenlítette a DRS. Azt hiszem, ilyen ábrát nem is lehet kinyerni a vSphere kliensen keresztül. De javítsatok ki, ha tévednék.



Nagyon jól össze lehet fogni szinte az összes riportot úgy, hogy készítünk egy hagyományos táblázatos lekérdezést a clusterekről és a benne lévő hostokról úgy, hogy tartalmazzon processzor, memória, diszk és hálózati információkat, majd azokat link-ként használva direktben tudunk az egyes riportokra ugrálni.

Mint az elején említettem, eredetileg csak a hostokról készült ilyen módon adat gyűjtés, de azóta már a datastore-ok néhány paraméterét is letárolom, és alkalmas riportokon keresztül lehetőséget biztosítok, hogy akit érint információkat kapjon a VMware környezet ilyen tulajdonságairól is. A lenti példán jól látható, hogy volt storage bővítés, illetve hogyan viszonyul a provisioned kapacitás a ténylegesen használt kapacitáshoz képest egy adott Datacenterben.


Természetesen még mindenféle jópofa diagramot el lehet készíteni, ha van rá igény. Főleg úgy, hogy a kezdeti nagyobb energia és idő ráfordítás után a bővítés már sokkal egyszerűbb.

Végére még egy érdekesség. Természetesen Excelből is el lehet éni az adatokat, ott pedig a Pivot Chart funkciót használva nagyon tetszetős ábrákat lehet gyártani, mint ahogy a lenti ábra is bizonyítja.



Remélem van olyan köztetek, akinek hasznos volt ez a két bejegyzés. Ha mégsem, akkor legalább magamnak lejegyeztem, hogy hogyan is működik ez az egész:)


Nincsenek megjegyzések:

Megjegyzés küldése