4
kapitola
Postupy pi sledování výkonu 4 44
Obsah kapitoly: 4.1 Jaké bítabe protokolovat..................................................................................... 301 4.2 Postupy denního sledování server.................................................................... 302 4.3 Práce s repozitáem SQL Serveru........................................................................ 358 4.4 Plánování kapacity a trendy................................................................................ 371 4.5 Scénáe protokolování bítab ............................................................................. 378 4.6 Fešení potíží se sberem bítab............................................................................ 385 4.7 Obnovení poškozených výkonnostních bítab.................................................... 388
300
Kapitola 4 – Postupy pi sledování výkonu
Pravidelné postupy sledování výkonu, které budete implementovat, musí sloužit více ú²el¾m, mezi nµž pat½í následující: Detekování a diagnostika výkonnostních potíží, ovµ½ení napl¹ování odsouhlasených úrovní služeb, podpora aktivních iniciativ plánování kapacity, které o²ekávají a ½eší hrozící nedostatky prost½edk¾, ještµ než ovlivní úrove¹ služeb. V této kapitole jsou popsány ukázkové procedury sledování výkonu, jež vám pomohou s dosažením tµchto d¾ležitých cíl¾. Ukázkové postupy, které se zamµ½ují na snadno implementovatelný proces denního sbµru výkonnostních údaj¾, jsou zevšeobecnµny a vyhoví tak podnikovým konfiguracím malého i vµtšího rozsahu. Do ur²ité míry si je ale budete muset p½izp¾sobit, aby vyhovovaly vašemu konkrétnímu prost½edí. Ukázkové procedury vám rovnµž pomohou za²ít s diagnostikou bµžných výkonnostních problém¾ server¾. Další doporu²ení se budou týkat výkonnostních výstrah, hlášení pro správu a plánování kapacity. Poslední oddíl této kapitoly dokumentuje postupy, které byste mµli využít, když máte nµjaký problém se shromažÅováním ur²itých výkonnostních statistik pomocí nástroje Sledování výkonu. Kup½íkladu aplikace, které instalují a odistalovávají výkonnostní ²íta²e, ob²as postupují nesprávnµ – v takovém p½ípadµ m¾žete k obnovení infrastruktury výkonnostních ²íta²¾ využít zde popisované postupy. Tím zajistíte, že Sledování výkonu bude správnµ hlásit výkonnostní statistiky. Ukázkové procedury v této kapitole jsou vytvo½eny tak, abyste mohli p½edvídat r¾zné obvyklé výkonnostní potíže. Využívají automatizované nástroje p½íkazového ½ádku Log Manager a Relog popisované v kapitole 2, „Nástroje sledování výkonu“. Log Manager a Relog vám pomohou protokolovat ²íta²e z lokálního po²íta²e na místní disk a zjišÆovat nejd¾ležitµjší výkonnostní ²íta²e, jak je zd¾raznila kapitola 3, „Mµ½ení výkonu serveru“. Ukázkové automatizované procedury vám umožní detekovat a odhalovat ½adu problém¾ s výkonností. Využívají na pozadí bµžící relace shromažÅování dat – data pak m¾žete bez ²asového omezení analyzovat po hlášení nµjaké potíže. Doporu²ované množství dat získávané nestálým denním monitorováním výkonu však nemusí vždy odpovídat pot½ebám ½ešení každého výkonnostního problému. Ob²as budete muset tyto procedury sbµru dat na pozadí rozší½it o zamµ½ené monitorování v reálném ²ase. Sledování v reálném ²ase používejte, pot½ebujete-li získávat detailnµjší údaje o konkrétních situacích. DalöÌ informace »asto nenÌ v˘bec jednoduchÈ pokouöet se o diagnostiku nÏjakÈho komplexnÏjöÌho v˝konnostnÌho problÈmu. JeötÏ obtÌûnÏjöÌ je snaûit se odhalit sloûitou potÌû s v˝konem v re·lnÈm Ëase prost¯ednictvÌm n·stroje Sledov·nÌ systÈmu. NevÌte-li p¯esnÏ, co vlastnÏ hled·te, a nenÌ-li problÈm trvalejöÌho r·zu, m˘ûe b˝t obtÌûnÏ pracovat se Sledov·nÌm systÈmu v re·lnÈm Ëase a urËovat p¯ÌËinu danÈho problÈmu. V relaci monitorov·nÌ v re·lnÈm Ëase m˘ûe b˝t zapot¯ebÌ sledovat a analyzovat tolik ËÌtaˢ a jejich instancÌ, ûe problÈm zmizÌ d¯Ìve, neû jej dok·ûete identifikovat. Diagnostika problÈm˘ je zamϯenÌm kapitoly 5, ÑÿeöenÌ potÌûÌ s v˝konemî.
Jaké dítade protokolovat
301
4.1 Jaké dítade protokolovat Procedura denního monitorování výkonu, která vám má efektivnµ pomáhat p½i detekování, diagnostikování a ½ešení bµžných výkonnostních potíží, musí shromažÅovat velké množství užite²ných výkonnostních dat, která pak m¾žete editovat, sumarizovat a používat v hlášení pro správu a p½i plánování kapacity. První rozhodnutí, které budete muset u²init, souvisí s volbou pravidelnµ zaznamenávaných výkonnostních ²íta²¾ z tµch mnoha nabízených.
Denní monitorování výkonu, v jehož rámci se vytvá½ejí relace protokolování ²íta²¾ na pozadí, jež trvale sbírají výkonnostní data, vám dovoluje zjišÆovat a ½ešit obvyklé potíže s výkonem, jak se za²nou projevovat. Jelikož není možné p½edem vµdµt, jaké klí²ové prost½edky stroje s výkonnostními potížemi jsou nasycené, budete v reálném svµtµ shromažÅovat výkonnostní data všech klí²ových prost½edk¾, jakými jsou procesor, pamµÆ, disk a síÆ. Nar¾stající dodate²né náklady však na bµžném po²íta²i se systémem Microsoft Windows Server 2003 neumož¹ují neustále sbírat všechny dostupné indikátory výkonu všech prost½edk¾ p½i všech pracovních zatíženích. Proto musíte selektivnµ vybrat data, jež budete sbírat, a stanovit si, jak ²asto je budete sbírat. Je d¾ležité dosáhnout rovnováhy mezi množstvím shromažÅovaných a analyzovaných údaj¾ a náklady souvisejícími s tímto procesem. Abyste dokázali odhalit a stanovit bµžné výkonnostní problémy související s p½etíženými prost½edky, musíte shromažÅovat široký rozsah detailních výkonnostních údaj¾ o využití procesoru, pamµti, disku a sítµ a také o pracovních zatíženích, jež tyto prost½edky konzumují. Takové údaje musí zahrnovat všechny ²íta²e výkonu indikující chybové stavy, zejména chyby vyplývající z nedostatku interních prost½edk¾. Tato kapitola popisuje nµkteré z klí²ových indikátor¾ chyb, které byste mµli sledovat.
Hlášení pro správu Hlášení pro správu na úrovni služeb i v dalších formách obvykle vyžaduje mnohem ménµ podrobných údaj¾. Proto je k hlášení pro správu úrove¹ detail¾, zajišÆovaná postupy denního sledování výkonu vhodnými k detekci a ½ešení bµžných výkonnostních potíží, více než dostate²ná. Ìasto platí, že chcete-li sestavit postupy hlášení pro správy efektivnµ škálovatelné ve velké organizaci, je vhodné sumarizovat nejprve denní protokoly výkonnostních ²íta²¾ a pak teprve sestavit kone²nou zprávu. Sumarizace denních protokol¾ ²íta²¾ omezí velikost soubor¾, které je zapot½ebí p½enášet p½es síÆ, a zlepší efektivitu postup¾ hlášení. Hlášení na úrovni služeb se zamµ½ují na spot½ebu prost½edk¾ a mµ½ení zatížení, jako jsou p½ihlašování, relace, rychlost transakcí a p½ijaté zprávy. Hlášení na úrovni služeb ²asto zajímají více profesionálních správc¾ systému, z nichž mnozí nemusejí být detailnµ obeznámeni se zp¾sobem, jakým funguje systém Windows Server 2003 a jeho hlavní serverové aplikace. Je proto d¾ležité vyhnout se ve zprávách pro správu, zamµ½ených na širší cílovou skupinu, p½íliš mnoha technickým detail¾m. Hlášení na úrovni služeb se musí místo toho zamµ½it na nµkolik klí²ových ukazatel¾ využívání prost½edk¾ a zatížení, které jsou dob½e známé a široce chápané.
Postupy pdi sledování výkonu
Sledování výkonu na pozadí
302
Kapitola 4 – Postupy pi sledování výkonu
Plánování kapacity Abyste mohli implementovat aktivní plánování kapacity, v jehož rámci identifikujete trendy r¾stu pracovního zatížení, spolehlivµ p½edvídáte nár¾st pracovního zatížení a odhadujete budoucí požadavky, musíte sledovat a shromažÅovat historické údaje o úrovních využívání a spot½eby základních prost½edk¾ v ²ase. To z½ejmµ bude zapot½ebí jen u malého po²tu klí²ových po²íta²ových komponent, jako je procesor, síÆ a disk, pop½ípadµ i pro nµkolik zásadních aplikací. Data protokol¾ ²íta²¾, sloužící jako základ proces¾ hlášení pro správu, se znovu budou editovat a sumarizovat, aby je bylo možné využít pro plánování kapacity. V tomto okamžiku se d¾raz p½enáší na sestavení historických záznam¾ dat využívání prost½edk¾ po²íta²¾. Budoucnost dokážete s rozumnou p½esností p½edpovµdµt pouze po zaznamenání zna²ného množství historických údaj¾ zachycujících vzory r¾stu pracovního zatížení. Kup½íkladu na každou jednotku ²asu, u které chcete p½edpovµdµt budoucí r¾st pracovního zatížení, budete pot½ebovat historický záznam roven minimálnµ dvojnásobku p½íslušného ²asového období. Plánování kapacity tak vyžaduje, abyste zaznamenávali využívání prost½edk¾ v delším ²asovém horizontu. Vµtšinou platí, že rozumnµ p½esné odhady kapacitních požadavk¾, které budou podkladem pro každoro²ní rozpo²et, lze provést až po nashromáždµní dat odpovídajících dvµma nebo t½em rok¾m provozu systému. P½i plánování budoucích kapacitních požadavk¾ mají ²asto zásadní dopad sezónní vzory ²innosti. K sezónním promµnám dochází v mnoha produk²ních pracovních zatíženích bµžnµ v ro²ních nebo mµsí²ních cyklech. Kup½íkladu na konci mµsíce nebo roku dochází ²asto ke zvýšeným tok¾m zpracování finan²ních transakcí. Budete muset zajistit po²íta²ovou kapacitu dosta²ující ke zvládnutí takových špi²ek na konci mµsíc¾ nebo rok¾. V maloobchodních organizacích z½ejmµ odhalíte vzory nákup¾ odpovídající r¾zným svátk¾m, kdy lze o²ekávat mnohem vyšší objem transakcí. Není ani zapot½ebí zd¾raz¹ovat, že i tyto špi²kové rychlosti transakcí je zapot½ebí nµjakým zp¾sobem zvládnout. Faktory sezónních promµn v požadavcích na pracovní zatížení budete moci zohlednit až poté, co nashromáždíte dostate²ná historická data odrážející více cykl¾ takových sezónních ²inností.
4.2 Postupy denního sledování server Tento oddíl se detailnµ zabývá modelem procedury denního monitorování výkonu, který je sou²ástí komplexního programu aktivní správy výkonu. Tato procedura zahrnuje následující denní ²innosti: Automatický sbµr hloubkového pohledu na výkon systému prost½ednictvím protokol¾ ²íta²¾, monitorování klí²ových indikátor¾ chyb systému a serverových aplikací, nastavení výstrah, jež automaticky spustí sbµr detailních, diagnostických protokol¾ ²íta²¾, vývoj hlášení klí²ových výkonnostních metrik, které si mohou prohlédnout p½íslušní lidé ve vaší organizaci,
Postupy denního sledování server
303
zachovávání sumarizovaných výkonnostních statistik v rámci podpory plánování kapacity, správa protokol¾ ²íta²¾, které se v rámci tµchto postup¾ vytvá½ejí automaticky. Pamatujte, že zde popisované modelové postupy a procedury sledování výkonu bude na základnµ požadavk¾ specifických vašemu sídlu zapot½ebí upravit pro použití ve vašem prost½edí. Každá organizace IT má kup½íkladu jiné požadavky na hlášení pro správu, které mají dopad na typ a množství generovaných zpráv a dat v nich zahrnutých. Zde uvedené postupy a procedury p½edstavují dobrý po²áte²ní bod pro za²átek tvorby funkcí efektivní správy výkonu ve vaší organizaci IT.
Denní protokoly dítad
P½íkaz uvedený ve výpisu 4.1 zavádí proceduru denního protokolování výkonu s využitím souboru nastavení, který definuje sbírané výkonnostní ²íta²e. (Ukázkový soubor nastavení je popsán dále.) P½íkaz se také odkazuje na p½íkazový soubor vykonávaný p½i uzavírání soubor¾ denních protokol¾ ²íta²¾. (Ukázkový skript zajišÆující typické zpracování je rovnµž ilustrován dále.) VÝPIS 4.1: UstavenÌ dennÌho protokolov·nÌ v˝konu logman create counter automaticky_DenniProtokol -cf "c:\perflogs\zakladni-soubor-nastaveni-citacu.txt" -o C:\Perflogs\Dnes\ZakladniDenniProtokol -b 1.1.2004 00:00:00 -cnf 24:00:00 -si 1:00 -f BIN -v mmddhhmm -rc c:\perflogs\nasledne-zpracovani.vbs
Po vykonání uvedeného p½íkazu bude definovaný protokol ²íta²¾ viditelný a bude se podobat zobrazení uvedenému na obrázku 4.1. Použijete-li grafické uživatelské rozhraní tohoto protokolu ²íta²¾, m¾žete si ovµ½it vlastnosti aplikované na zavedení protokolovací relace, jak je tu ukázáno.
OBRÁZEK 4.1: Vlastnosti používané k ustavení protokolovací relace
Jak dokumentuje kapitola 2, „Nástroje sledování výkonu“, utilita Log Manager vám umož¹uje nakonfigurovat relace sbµru protokolových dat ²íta²¾ na pozadí. Tabulka 4.1 probírá parametry p½íkazu Log Manager použité ve výpisu 4.1 a vysvµtluje jejich ú²el. Parametr -v nástroje Log Manager vám umož¹uje generovat jedine²né názvy soubor¾ dennµ vytvá½ených protokol¾ ²íta²¾. Doplnµk snap-in Performance Logs and Alerts (Výstrahy a protokolování výkonu) podporuje další možnost ozna²ování ver-
Postupy pdi sledování výkonu
Prvním krokem monitorování po²íta²¾ se systémem Windows Server 2003 je vytvo½ení automatického protokolování dat pomocí nástroje p½íkazového ½ádku Log Manager (logman).
304
Kapitola 4 – Postupy pi sledování výkonu
zí soubor¾ specifikující datum ve formátu yyyymmdd. Chcete-li nechat soubory protokol¾ ²íta²¾ automaticky pojmenovávat ve formátu yyyymmdd, m¾žete následnµ využít doplnµk Výkon a ru²nµ zmµnit vlastnosti protokolu tak, aby se k základnímu názvu souboru p½idalo ozna²ení roku, mµsíce a dne. TABULKA 4.1: Parametry p¯Ìkazu spr·vce Log Manager Parametr programu Log Manager
Vysvgtlení
-cf "c:\perflogs\zakladnisoubor-nastavenicitacu.txt"
V souboru nastavení jsou specifikovány dítade, jež se mají protokolovat. Píklad souboru zakladni-soubor-nastaveni-citacu najdete v oddílu „Ukázkový soubor nastavení dítad“ této kapitoly.
-b 1.1.2004 00:00:00 cnf 24:00:00
Protokolování iniciuje automaticky protokolovací služba Sledování systému, jakmile je váš podítad restartován. Protokolování bgží trvale po dobu 24 hodin.
-si 1:00
Vzorky dat se shromažeují jednou za minutu.
-f BIN
Protokolování dat probíhá prbgžng do binárního souboru. Binární formát je využit kvli výkonnosti a šetení množství spotebovávaného diskového prostoru.
-v mmddhhmm
K vytváení jedinedných soubor denních protokol dítad se používá automatické oznadování verzí.
-rc c:\perflogs\naslednezpracovani.vbs
Na konci relace protokolování dat se po zavení protokolového souboru spustí urditý skript. Tento skript zajistí správu soubor a další následné zpracování. Takové následné zpracování zahrnuje odstrangní starších kopií soubor protokol dítad, jež byly vytvoeny díve, a sumarizaci aktuálního souboru protokolu pro denní hlášení. Píklad skriptu následného zpracování najdete v oddílu „Automatizované zpracování protokol dítad“ této kapitoly.
Jakmile se p½esvµd²íte o správném specifikování vytvo½ené relace protokolování ²íta²¾, vydejte p½íkaz uvedený ve výpisu 4.2, kterým spustíte vlastní protokolování dat. VÝPIS 4.2: SpuötÏnÌ protokolov·nÌ dat logman start counter automaticky_DenniProtokol
Protokolování místních dítad na lokální disk Zde doporu²ovaná procedura denního monitorování výkonu generuje protokoly ²íta²¾ obsahující lokální ²íta²e zapisované v binárním formátu na místní disk. Náš p½íklad zapisuje soubory protokol¾ ²íta²¾ na lokální disk do adresá½e nazvaného C:\Perflogs\Dnes, vyhoví ale jakákoli jiná rozumná složka na místním disku. Binární formát protokolového souboru se doporu²uje kv¾li své efektivnosti a menším dodate²ným náklad¾m. Protokolování místních ²íta²¾ na místní disk vám dovoluje implementovat jednotnou proceduru sledování výkonu na všech po²íta²ích v síti, takže lze tyto procedury škálovat i na nejvµtších serverových konfiguracích bez ohledu na topologii sítµ.
Postupy denního sledování server
305
P½i protokolování dat ²íta²¾ na lokální disk musíte spravovat pravidelnµ vytvá½ené protokolové soubory, aby nespot½ebovávaly nerozumné množství lokálního diskového prostoru. Bez ur²itého zastarávání soubor¾ a ²ištµní mohou dennµ generované protokoly ²íta²¾ zabírat 30 až 100 MB prostoru místního disku vašich server¾ každý den, kdy bµží. V oddílu „Automatizované zpracování protokol¾ ²íta²¾“ najdete ukázkový skript následného zpracování, který k zajištµní takové denní správy soubor¾ a ²ištµní využívá jazyk Microsoft Visual Basic Scripting Edition (VBScript) a komponentu Windows Script Host (WSH). Prost½ednictvím utility p½íkazového ½ádku Relog m¾žete pozdµji p½evést soubory z binárního formátu na jakoukoli jinou formu. Máte kup½íkladu možnost vytvá½et souhrnné soubory, které lze p½enášet na konsolida²ní server na síti. Také m¾žete vytvá½et textové soubory s hodnotami oddµlovanými st½edníky (nebo ²árkami) a ty dále využívat v programech jako Microsoft Excel, jež dokážou generovat užite²né a atraktivní grafy. Pomocí nástroje Relog lze také sestavit a udržovat databázi SQL Serveru konsolidovaných dat protokolování ²íta²¾ z ½ady server¾, která pak poslouží p½i plánování kapacity.
Protokolování na místo sdílené v síti Namísto generování protokol¾ ²íta²¾ v binárním formátu do složky místního disku up½ednost¹uje mnoho lidí zapisování protokol¾ ²íta²¾ do nµjaké složky sdílené v síti. Jelikož m¾že zjednodušit správu soubor¾, je tento p½ístup ²asto preferován. Zvolíte-li ale tuto metodu, musíte zvážit také dále uvedené vµci, jež mohou ovlivnit škálovatelnost vašich procedur monitorování výkonu na sídlech s vµtším po²tem server¾: Dávejte si pozor na p½etížení sítµ. Spot½ebovává-li váš denní protokol ²íta²¾ 50 MB diskového prostoru každý den, což je rozdµleno na 24hodinová období, p½edstavuje tento objem pouze 600 bajt¾ na server za sekundu dodate²ného zatížení, které musí vaše síÆ zvládnout. P½ibližné zatížení sítµ p½i vzdáleném protokolování dat zjistíte tím zp¾sobem, že znásobíte uvedenou hodnotu po²tem server¾ zaznamenávajících údaje do téže složky sdílené na síti. Zajistµte, aby vaše relace protokolování ²íta²¾ bµžela pod identifikátorem uživatele s oprávnµním pro p½ístup k dané sdílené síÆové složce. Tento identifikátor uživatele musí být zárove¹ ²lenem vestavµné skupiny Performance Log Users (uživatelé protokol¾ výkonu). Chcete-li do relace nástroje Log Manager doplnit údaje o uživateli, zadejte uživatelské jméno a heslo parametrem -u. Budete-li
Postupy pdi sledování výkonu
Zde dokumentované procedury denního sledování výkonu p½edpokládají zapisování protokolovacích dat místních ²íta²¾ do nµjaké složky na lokálním disku, i když jsou možné i jiné konfigurace. Protokoly ²íta²¾ lze kup½íkladu použít ke sbµru dat ze vzdálených po²íta²¾. Vzdálený sbµr dat je vhodný v situaci, kdy nemáte k danému vzdálenému po²íta²i fyzický p½ístup. Pak je jednodušší zajišÆovat shromažÅování výkonnostních údaj¾ na jednom centrálním po²íta²i, jehož úkolem je „vytahovat“ data ²íta²¾ z jednoho nebo více vzdálených stroj¾. Taková procedura ale už z principu není tak robustní jako lokální bµh protokolování ²íta²¾, protože potíže se sbµrem dat na kterémkoli ze vzdálených po²íta²¾ mohou mít dopad na všechny po²íta²e, k jejichž monitorování je centrální proces vytvo½en. Je zapot½ebí také chápat dopad vzdáleného sledování po²íta²¾ na síÆ. Toto téma je detailnµ probíráno v oddílu „Scéná½e protokolování ²íta²¾“.
306
Kapitola 4 – Postupy pi sledování výkonu
využívat Výstrahy a protokolování výkonu v konzole Performance Monitor (Sledování výkonu), musíte nastavit parametr Run As (Spustit jako) na kartµ General (Obecné) vlastností protokolu ²íta²¾. Zajistµte, aby služba Windows Time Service synchronizovala hodiny na všech serverech, které zapisují soubory protokol¾ ²íta²¾ do sdílené síÆové složky. DalöÌ informace Popis toho, jak pouûÌvat Ëasovou sluûbu Windows k synchronizaci hodin na poËÌtaËÌch v sÌti systÈmu Windows Server 2003, najdete v dokumentaci nazvanÈ ÑWindows Time Service Technical Referenceî umÌstÏnÈ na sÌdle TechNet na adrese http://www.
microsoft.com/resources/documentation/WindowsServ/2003/all/techref/en-us/ W2K3TR_times_intro.asp.
Do názv¾ soubor¾ protokol¾ ²íta²¾ zahr¹te také název po²íta²e, abyste mohli jednoduše zjistit, od kterého z nich shromáždµné údaje pocházejí. Všechny tyto vµci lze snadno zajistit s využitím skriptu WSH. Kup½íkladu kód VBScriptu z výpisu 4.3 vrací název lokálního po²íta²e v promµnné nazvané PrihlasovaciServer. VÝPIS 4.3: Identifikace zdrojovÈho poËÌtaËe Set WshShell = CreateObject("Wscript.Shell") Set objEnv = WshShell.Environment("Process") PrihlasovaciServer = objENV("COMPUTERNAME")
Dále m¾žete zkonstruovat název souboru s vloženým názvem lokálního po²íta²e. Sta²í kód ve výpisu 4.4. VÝPIS 4.4: SestavenÌ n·zvu souboru Const SlozkaPerflogVcera = "Z:\SdilenyPerflog\Vcera" Const TypProtokolu = "blg" Const ParametryProtokolu = " -b 1.1.2004 00:00:00 -cnf 24:00:00 „ & _ „-si 1:00 -f BIN -v mmddhhmm -rc c:\perflogs\nasledne-zpracovani.vbs" NazevDennihoSouboru = SlozkaPerflogVcera & "\" & PrihlasovaciServer & _ "." & "zakladniDenniProtokol" & "." & TypProtokolu NazevRelaceProtokolu = PrihlasovaciServer & "-denni-protokol"
Pak m¾žete vykonat nástroj Logman ze skriptu s využitím metody Exec objektu Shell WSH, jak ukazuje výpis 4.5. VÝPIS 4.5: Vykon·nÌ n·stroje Logman Const NazevSouboruNastaveniProtokolu = _ "Z:\SdilenyPerflog\soubor-nastaveni-citacu-protokolu.txt" prikaz = "logman create counter " & NazevRelaceProtokolu & " -o " & _ NazevDennihoSouboru & " -cf " & NazevSouboruNastaveniProtokolu & " " & _ ParametryProtokolu Set WshShell = Wscript.CreateObject("WScript.Shell") Set vykonavanyPrikaz = WshShell.Exec(prikaz ) Wscript.Echo vykonavanyPrikaz.StdOut.ReadAll
Postupy denního sledování server
307
Poslední ½ádek skriptu p½ejímá vlastnost ReadAll proudu StdOut, která obsahuje všechny zprávy vygenerované nástrojem Logman v metodµ Exec objektu Shell. To vám umož¹uje stanovit, zda se tato utilita vykonala úspµšnµ. Další souvislosti vykonávání vzdáleného protokolování a zapisování protokol¾ ²íta²¾ na vzdálený disk najdete v oddílu „Scéná½e protokolování ²íta²¾“.
Mgení základ
Zde doporu²ovaná procedura denního monitorování výkonu je vhodná pro zajištµní sady základních mµ½ení vašeho po²íta²e. Každých p½ibližnµ šest mµsíc¾ si tento soubor protokol¾ ²íta²¾ zkopírujte a uložte. P½i kopírování protokolu ²íta²¾ využijte nµjaké bezpe²né místo umož¹ující dlouhodobé skladování. Je rovnµž vhodné uložit si protokol ²íta²¾ základu p½ed každou zásadnµjší zmµnou konfigurace hardwaru nebo softwaru systému. Aby byla shromáždµná data ²íta²¾ užite²ná jako sada základních mµ½ení, musíte je zachovávat v p¾vodním binárním formátu. M¾že být vhodné uložit si tyto sady mµ½ení základ¾ na nµjaké archivní úložištµ v režimu offline, aby mohly s minimálními náklady z¾stat zachovány nµkolik let.
Použití souboru nastavení dítad Když ke specifikaci ²íta²¾, které chcete shromažÅovat, využijete soubor nastavení ²íta²¾, budete moci snadno vytvá½et a udržovat jednotné postupy sledování výkonu na všech svých po²íta²ích s podobnými požadavky. M¾žete tak kup½íkladu vytvo½it soubor nastavení ²íta²¾ využívaný na strojích provozujících Microsoft SQL Server. Podobnµ budou vaše po²íta²e webových server¾ s aplikacemi Internet Information Services (IIS) a .NET Framework vyžadovat k dosažení nejlepších výsledk¾ jiný soubor nastavení ²íta²¾. Každý vámi vytvá½ený soubor nastavení ²íta²¾ bude z½ejmµ zahrnovat základní množinu ²íta²¾ hlásících využití principiálních prost½edk¾ po²íta²e – procesor¾, pamµtí, disk¾ a síÆových rozhraní. Jednoduchý soubor nastavení ²íta²¾, který bude tvo½it jádro témµ½ každého souboru nastavení ²íta²¾ vytvá½eného pro specifické aplikace, m¾že vypadat jako ve výpisu 4.6. VÝPIS 4.6: Soubor nastavenÌ ËÌtaˢ podle jejich origin·lnÌho, anglickÈho oznaËenÌ \LogicalDisk(*)\% Free Space \LogicalDisk(*)\Free Megabytes \PhysicalDisk(*)\* \Cache\*
Postupy pdi sledování výkonu
Data mµ½ení základ¾ jsou vlastnµ detailním výkonnostním profilem vašeho po²íta²e, který si uložíte pro budoucnost, až budete chtít zjistit, co se ve vašem prost½edí zmµnilo. P½edchozí sadu dat mµ½ení základu m¾žete porovnat s aktuálními údaji a odhalit tak všechny významnµjší zmµny v pracovním zatížení. Ob²as se malé postupné zmµny, k nimž dochází pozvolna, najednou v ²ase projeví jako významná zmµna. Budete-li používat jen ²asovµ úzce zamµ½ené výkonnostní hlášení, m¾žete snadno p½ehlédnout rozsah a mµ½ítko takových postupných zmµn. Jednu z dobrých možností ocenµní rozsahu podobných zmµn v ²ase p½edstavuje porovnání detail¾ aktuálního prost½edí s jednou z novµjších sad mµ½ení základních údaj¾.
308
Kapitola 4 – Postupy pi sledování výkonu
\Processor(*)\* \Memory\* \System\* \Network Interface(*)\* \IPv4\* \TCPv4\* LokalizaËnÌ pozn·mka Cesty ËÌtaˢ lze v souboru nastavenÌ ËÌtaˢ specifikovat rovnÏû podle ËeskÈho oznaËenÌ. V tomto p¯ÌpadÏ se tedy jedn· o n·sledujÌcÌ zad·nÌ:
\Logický disk(*)\% volného místa \Logický disk(*)\Volné megabajty \Fyzický disk(*)\* \Mezipam¹È\* \Procesor(*)\* \Pam¹È\* \Systém\* \Rozhraní sít¹(*)\* \IPv4\* \TCPv4\* GrafickÈ uûivatelskÈ rozhranÌ modulu V˝kon uv·dÌ ËeskÈ ekvivalenty cest a n·zv˘ ËÌtaˢ.
Výpis 4.6 shromažÅuje statistiku volného prostoru logických disk¾ a všechny ²íta²e objekt¾ MezipamµÆ, PamµÆ, Rozhraní sítµ, Fyzický disk, Procesor a Systém. Mµ½ení volného prostoru na logickém disku vám dovoluje stanovit, kdy vašemu systému soubor¾ dochází kapacita. Dopln¶ní ³íta³¿ specifických aplikací Soubor nastavení ²íta²¾ z výpisu 4.6 postrádá všechna aplika²nµ specifická výkonnostní data. Tento jednoduchý soubor nastavení ²íta²¾ lze výraznµ vylepšit doplnµním ²íta²¾ p½idružených aplikacím, které na daném serveru bµží (viz tabulka 4.2). V zájmu snížení velikosti dennµ generovaných soubor¾ protokol¾ ²íta²¾ nevytvá½ejte jediný soubor nastavení obsahující všechny ²íta²e specifické aplikacím podle tabulky 4.2 a jim p½i½azená data na úrovni proces¾. Místo toho vytvo½te ½adu soubor¾ nastavení specifických jednotlivým aplikacím. Tip Pokud nevÌte, jakÈ serverovÈ aplikace jsou na urËitÈm poËÌtaËi instalovanÈ a aktivnÌ, pouûijte n·stroj p¯ÌkazovÈho ¯·dku Typeperf popisovan˝ v kapitole 2, ÑN·stroje sledov·nÌ v˝konuî. Ten generuje soubor nastavenÌ uv·dÏjÌcÌ kompletnÌ v˝pis rozö̯en˝ch aplikaËnÌch ËÌtaˢ, kterÈ lze na danÈm poËÌtaËi sledovat.
TABULKA 4.2: DoplnÏnÌ ËÌtaˢ Role vašeho podítade Zaznamenávejte dítade z tgchto objekt se systémem Windows Server 2003
Zaznamenávejte dítade z tgchto proces
Hadid domény
lsass, smss
NTDS
Server vzdáleného pí- RAS Total, RAS Port stupu
svchost
Postupy denního sledování server
Zaznamenávejte dítade z tgchto proces
Databázový server
SQL Server:General Statistics, SQL sqlserver, sqlagent Server:Databases, SQL Server:Buffer Manager, SQL Server:Cache Manager, SQL Server:SQL Statistics, SQL Server:Lock
Webový server
Internet Information Services Global, FTP Service, Web Service, Web Service Cache
inetinfo, svchost
Souborový a tiskový server
Server, Server Work Queues, Print Queue, NBT Connection
svchost, spoolsv
Terminálový server
Terminal Services, Terminal Services Session
svchost; tssdis
Server Exchange
store, dsamain MSExchangeAL, MSExchangeDSAccess Caches, MSExchangeDSAccess Contexts, MSExchangeDSAccess Processes, Epoxy, MSExchangeIS Mailbox, Database ==> Instances, MSExchange Transport Store Driver, MSExchangeIS Transport Driver, MSExchangeSRS, MSExchange Web Mail, MSExchangeIMAP4, MSExchangePOP3, MSExchangeMTA, MSExchangeMTA Connections, SMTP Server, SMTP NTFS Store Driver
Aplikadní server
MSMQ Session, MSMQ Service, MSMQ Queue
dllhost
Ukázkový soubor nastavení ³íta³¿ Na základµ princip¾ uvedených v p½edchozím oddílu lze pro souborový a tiskový server vytvo½it soubor nastavení ²íta²¾, který m¾že vypadat jako ukázka ve výpisu 4.7. VÝPIS 4.7: P¯Ìklad souboru nastavenÌ ËÌtaˢ pro souborov˝ a tiskov˝ server
a) produkt v angli²tinµ: \LogicalDisk(*)\% Free Space \LogicalDisk(*)\Free Megabytes \LogicalDisk(*)\Current Disk Queue Length \PhysicalDisk(*)\Current Disk Queue Length \PhysicalDisk(*)\Avg. Disk Queue Length \PhysicalDisk(*)\Avg. Disk sec/Transfer \PhysicalDisk(*)\Avg. Disk sec/Read \PhysicalDisk(*)\Avg. Disk sec/Write \PhysicalDisk(*)\Disk Transfers/sec \PhysicalDisk(*)\Disk Reads/sec \PhysicalDisk(*)\Disk Writes/sec
Postupy pdi sledování výkonu
Role vašeho podítade Zaznamenávejte dítade z tgchto objekt se systémem Windows Server 2003
309
310
Kapitola 4 – Postupy pi sledování výkonu
\PhysicalDisk(*)\Disk Bytes/sec \PhysicalDisk(*)\Disk Read Bytes/sec \PhysicalDisk(*)\Disk Write Bytes/sec \PhysicalDisk(*)\Avg. Disk Bytes/Transfer \PhysicalDisk(*)\Avg. Disk Bytes/Read \PhysicalDisk(*)\Avg. Disk Bytes/Write \PhysicalDisk(*)\% Idle Time \PhysicalDisk(*)\Split IO/Sec \Server\Bytes Total/sec \Server\Bytes Received/sec \Server\Bytes Transmitted/sec \Server\Sessions Timed Out \Server\Sessions Errored Out \Server\Sessions Logged Off \Server\Sessions Forced Off \Server\Errors Logon \Server\Errors Access Permissions \Server\Errors Granted Access \Server\Errors System \Server\Blocking Requests Rejected \Server\Work Item Shortages \Server\Pool Nonpaged Bytes \Server\Pool Nonpaged Failures \Server\Pool Nonpaged Peak \Server\Pool Paged Bytes \Server\Pool Paged Failures \Server Work Queues(*)\Queue Length \Server Work Queues(*)\Active Threads \Server Work Queues(*)\Available Threads \Server Work Queues(*)\Available Work Items \Server Work Queues(*)\Borrowed Work Items \Server Work Queues(*)\Work Item Shortages \Server Work Queues(*)\Current Clients \Server Work Queues(*)\Bytes Transferred/sec \Server Work Queues(*)\Total Operations/sec \Server Work Queues(*)\Context Blocks Queued/sec \Cache\Data Maps/sec \Cache\Data Map Hits % \Cache\Data Map Pins/sec \Cache\Pin Reads/sec \Cache\Pin Read Hits % \Cache\Copy Reads/sec \Cache\Copy Read Hits % \Cache\MDL Reads/sec \Cache\MDL Read Hits % \Cache\Read Aheads/sec \Cache\Lazy Write Flushes/sec \Cache\Lazy Write Pages/sec \Cache\Data Flushes/sec \Cache\Data Flush Pages/sec \Processor(*)\% Processor Time \Processor(*)\% User Time
\Processor(*)\% Privileged Time \Processor(*)\Interrupts/sec \Processor(*)\% DPC Time \Processor(*)\% Interrupt Time \Memory\Page Faults/sec \Memory\Available Bytes \Memory\Committed Bytes \Memory\Commit Limit \Memory\Write Copies/sec \Memory\Transition Faults/sec \Memory\Cache Faults/sec \Memory\Demand Zero Faults/sec \Memory\Pages/sec \Memory\Pages Input/sec \Memory\Page Reads/sec \Memory\Pages Output/sec \Memory\Pool Paged Bytes \Memory\Pool Nonpaged Bytes \Memory\Page Writes/sec \Memory\Pool Paged Allocs \Memory\Pool Nonpaged Allocs \Memory\Free System Page Table Entries \Memory\Cache Bytes \Memory\Cache Bytes Peak \Memory\Pool Paged Resident Bytes \Memory\System Code Total Bytes \Memory\System Code Resident Bytes \Memory\System Driver Total Bytes \Memory\System Driver Resident Bytes \Memory\System Cache Resident Bytes \Memory\% Committed Bytes In Use \Memory\Available KBytes \Memory\Available MBytes \Memory\Transition Pages RePurposed/sec \Paging File(*)\% Usage \Paging File(*)\% Usage Peak \System\Context Switches/sec \System\System Up Time \System\Processor Queue Length \System\Processes \System\Threads \Process( svchost,*)\% Processor Time \Process(svchost,*)\% User Time \Process(svchost,*)\% Privileged Time \Process(svchost,*)\Virtual Bytes Peak \Process(svchost,*)\Virtual Bytes \Process(svchost,*)\Page Faults/sec \Process(svchost,*)\Working Set Peak \Process(svchost,*)\Working Set \Process(svchost,*)\Page File Bytes Peak \Process(svchost,*)\Page File Bytes \Process(svchost,*)\Private Bytes
311
Postupy pdi sledování výkonu
Postupy denního sledování server
312
Kapitola 4 – Postupy pi sledování výkonu
\Process(svchost,*)\Thread Count \Process(svchost,*)\Priority Base \Process(svchost,*)\Elapsed Time \Process(svchost,*)\ID Process \Process(svchost,*)\Pool Paged Bytes \Process(svchost,*)\Pool Nonpaged Bytes \Print Queue(*)\Total Jobs Printed \Print Queue(*)\Bytes Printed/sec \Print Queue(*)\Total Pages Printed \Print Queue(*)\Jobs \Print Queue(*)\References \Print Queue(*)\Max References \Print Queue(*)\Jobs Spooling \Print Queue(*)\Max Jobs Spooling \Print Queue(*)\Out of Paper Errors \Print Queue(*)\Not Ready Errors \Print Queue(*)\Job Errors \Print Queue(*)\Enumerate Network Printer Calls \Print Queue(*)\Add Network Printer Calls \Network Interface(*)\Bytes Total/sec \Network Interface(*)\Packets/sec \Network Interface(*)\Packets Received/sec \Network Interface(*)\Packets Sent/sec \Network Interface(*)\Current Bandwidth \Network Interface(*)\Bytes Received/sec \Network Interface(*)\Packets Received Unicast/sec \Network Interface(*)\Packets Received Non-Unicast/sec \Network Interface(*)\Packets Received Discarded \Network Interface(*)\Packets Received Errors \Network Interface(*)\Packets Received Unknown \Network Interface(*)\Bytes Sent/sec \Network Interface(*)\Packets Sent Unicast/sec \Network Interface(*)\Packets Sent Non-Unicast/sec \Network Interface(*)\Packets Outbound Discarded \Network Interface(*)\Packets Outbound Errors \Network Interface(*)\Output Queue Length \IPv4\Datagrams/sec \IPV4\Datagrams Received/sec \IPV4\Datagrams Received Header Errors \IPV4\Datagrams Received Address Errors \IPV4\Datagrams Forwarded/sec \IPV4\Datagrams Received Unknown Protocol \IPV4\Datagrams Received Discarded \IPV4\Datagrams Received Delivered/sec \IPV4\Datagrams Sent/sec \IPV4\Datagrams Outbound Discarded \IPV4\Datagrams Outbound No Route \IPV4\Fragments Received/sec \IPV4\Fragments Re-assembled/sec \IPV4\Fragment Re-assembly Failures \IPV4\Fragmented Datagrams/sec \IPV4\Fragmentation Failures
Postupy denního sledování server
313
\IPV4\Fragments Created/sec \TCPV4\Segments/sec \TCPV4\Connections Established \TCPV4\Connections Active \TCPV4\Connections Passive \TCPV4\Connection Failures \TCPV4\Connections Reset \TCPV4\Segments Received/sec \TCPV4\Segments Sent/sec \TCPV4\Segments Retransmitted/sec
\Logický disk(*)\% volného místa \Logický disk(*)\Volné megabajty \Logický disk(*)\Aktuální délka fronty disku \Fyzický disk(*)\Aktuální délka fronty disku \Fyzický disk(*)\StÁední délka fronty disku \Fyzický disk(*)\StÁední doba disku/pÁenos \Fyzický disk(*)\StÁední doba disku/¶tení \Fyzický disk(*)\StÁední doba disku/zápis \Fyzický disk(*)\PÁenosy disku/s \Fyzický disk(*)\tení z disku/s \Fyzický disk(*)\Zápisy na disk/s \Fyzický disk(*)\Bajt disku/s \Fyzický disk(*)\Bajty ¶tení z disku/s \Fyzický disk(*)\Bajty zapisování na disk/s \Fyzický disk(*)\StÁední po¶et bajt disku/pÁenos \Fyzický disk(*)\StÁední po¶et bajt disku/¶tení \Fyzický disk(*)\StÁední po¶et bajt disku/zápis \Fyzický disk(*)\% ¶asu ne¶innosti \Fyzický disk(*)\D¹lení vstupn¹-výstupních operací/s \Server\Bajty celkem/s \Server\PÁijaté bajty/s \Server\Odeslané bajty/s \Server\Vypršelé relace \Server\Chybné relace \Server\Odhlášené relace \Server\Odpojené relace \Server\Chyby pÁihlášení \Server\Chyby pÁístupových práv \Server\Chyby ud¹lených práv \Server\Chyby systému \Server\Zamítnuté žádosti zablokování \Server\Nedostatky pracovních položek \Server\Bajty nestránkovaného fondu \Server\Chyby nestránkovaného fondu \Server\Vrchol nestránkovaného fondu \Server\Bajty stránkovaného fondu \Server\Chyby stránkovaného fondu \Pracovní fronty serveru(*)\Délka fronty \Pracovní fronty serveru(*)\Aktivní podprocesy \Pracovní fronty serveru(*)\Dostupné podprocesy
Postupy pdi sledování výkonu
b) produkt s ²eskou lokalizací
314
Kapitola 4 – Postupy pi sledování výkonu
\Pracovní fronty serveru(*)\Dostupné pracovní položky \Pracovní fronty serveru(*)\VypÂj¶ené pracovní položky \Pracovní fronty serveru(*)\Nedostatky pracovních položek \Pracovní fronty serveru(*)\Aktuální po¶et klient \Pracovní fronty serveru(*)\Bajty pÁenesené/s \Pracovní fronty serveru(*)\Celkem operací/s \Pracovní fronty serveru(*)\Bloky kontextu ve front¹/s \Mezipam¹È\Mapování dat/s \Mezipam¹È\Zásahy mapování dat % \Mezipam¹È\Držení mapování dat/s \Mezipam¹È\tení držení/s \Mezipam¹È\Zásahy ¶tení držení % \Mezipam¹È\tení kopií/s \Mezipam¹È\Zásahy ¶tení kopií % \Mezipam¹È\tení MDL/s \Mezipam¹È\Zásahy ¶tení MDL % \Mezipam¹È\DopÁedná ¶tení/s \Mezipam¹È\Dopsání opožd¹ných zápisÂ/s \Mezipam¹È\Stránky opožd¹ných zápisÂ/s \Mezipam¹È\Dopsání dat/s \Mezipam¹È\Dopsání dat stránek/s \Procesor(*)\% ¶asu procesoru \Procesor(*)\% uživatelského ¶asu \Procesor(*)\% privilegovaného ¶asu \Procesor(*)\PÁerušení/s \Procesor(*)\% ¶asu DPC \Procesor(*)\% ¶asu pÁerušení \Pam¹È\Chyby stránek/s \Pam¹È\Bajty k dispozici \Pam¹È\Sv¹Áené bajty \Pam¹È\Mez sv¹Áení \Pam¹È\Zápisy kopií/s \Pam¹È\Chyby pÁevodu stavu/s \Pam¹È\Chyby mezipam¹ti/s \Pam¹È\Chyby nulových požadavkÂ/s \Pam¹È\Stránky/s \Pam¹È\Vstup stránek/s \Pam¹È\tení stránek/s \Pam¹È\Výstup stránek/s \Pam¹È\Bajty stránkovaného fondu \Pam¹È\Bajty nestránkovaného fondu \Pam¹È\Zápisy stránek/s \Pam¹È\Vyhrazení stránkovaného fondu \Pam¹È\Vyhrazení nestránkovaného fondu \Memory\Free System Page Tabulka Entries \Pam¹È\Bajty mezipam¹ti \Pam¹È\Vrchol bajt mezipam¹ti \Pam¹È\Rezidentní bajty stránkovaného fondu \Pam¹È\Celkem bajt kódu systému \Pam¹È\Rezidentní bajty kódu systému \Pam¹È\Celkem bajt systémových ovlada¶Â \Pam¹È\Rezidentní bajty systémových ovlada¶Â
\Pam¹È\Rezidentní bajty systémové mezipam¹ti \Pam¹È\% využití sv¹Áených bajt \Pam¹È\Po¶et kB k dispozici \Pam¹È\Po¶et MB k dispozici \Pam¹È\Zm¹n ú¶elu stran pÁenosu/s \Stránkovací soubor(*)\% využití \Stránkovací soubor(*)\% vrchol využití \Systém\PÁepnutí kontextu/s \Systém\Doba provozu systému \Systém\Délka fronty procesoru \Systém\Procesy \Systém\Podprocesy \Proces(svchost,*)\% ¶asu procesoru \Proces(svchost,*)\% uživatelského ¶asu \Proces(svchost,*)\% privilegovaného ¶asu \Proces(svchost,*)\Vrchol virtuálních bajt \Proces(svchost,*)\Virtuální bajty \Proces(svchost,*)\Chyby stránek/s \Proces(svchost,*)\Vrchol pracovní sady \Proces(svchost,*)\Pracovní sada \Proces(svchost,*)\Vrchol bajt stránkovacího souboru \Proces(svchost,*)\Bajty stránkovacích soubor \Proces(svchost,*)\Nesdílené bajty \Proces(svchost,*)\Po¶et podproces \Proces(svchost,*)\Základní priorita \Proces(svchost,*)\Uplynulý ¶as \Proces(svchost,*)\ID procesu \Proces(svchost,*)\Bajty stránkovaného fondu \Proces(svchost,*)\Bajty nestránkovaného fondu \Tisková fronta(*)\Celkový po¶et vytisknutých úloh \Tisková fronta(*)\Po¶et bajt vytisknutých za sekundu \Tisková fronta(*)\Celkový po¶et vytisknutých stránek \Tisková fronta(*)\Po¶et úloh \Tisková fronta(*)\Po¶et odkaz \Tisková fronta(*)\Maximální po¶et odkaz \Tisková fronta(*)\Po¶et zaÁazovaných úloh \Tisková fronta(*)\Maximální po¶et zaÁazovaných úloh \Tisková fronta(*)\Po¶et chyb typu Došel papír \Tisková fronta(*)\Po¶et chyb typu Tiskárna není pÁipravena \Tisková fronta(*)\Po¶et chyb úloh \Tisková fronta(*)\Po¶et volání na vý¶et síÈových tiskáren \Tisková fronta(*)\Po¶et volání na pÁidání síÈové tiskárny \Rozhraní sít¹(*)\Bajty celkem/s \Rozhraní sít¹(*)\Pakety/s \Rozhraní sít¹(*)\PÁijaté pakety/s \Rozhraní sít¹(*)\Odeslané pakety/s \Rozhraní sít¹(*)\Aktuální šíÁka pásma \Rozhraní sít¹(*)\PÁijaté bajty/s \Rozhraní sít¹(*)\PÁijaté jednosm¹rové pakety/s \Rozhraní sít¹(*)\PÁijaté nejednosm¹rové pakety/s \Rozhraní sít¹(*)\VyÁazené pÁijaté pakety \Rozhraní sít¹(*)\Chyby pÁijatých paketÂ
315
Postupy pdi sledování výkonu
Postupy denního sledování server
316
Kapitola 4 – Postupy pi sledování výkonu
\Rozhraní sít¹(*)\PÁijaté pakety neznámé \Rozhraní sít¹(*)\Odeslané bajty/s \Rozhraní sít¹(*)\Odeslané jednosm¹rové pakety/s \Rozhraní sít¹(*)\Odeslané nejednosm¹rové pakety/s \Rozhraní sít¹(*)\VyÁazené odchozí pakety \Rozhraní sít¹(*)\Chyby odchozích paket \Rozhraní sít¹(*)\Délka fronty výstupu \IPv4\Datagramy/s \IPv4\PÁijaté datagramy/s \IPv4\Chyby hlavi¶ek pÁijatých datagram \IPv4\Chyby adres pÁijatých datagram \IPv4\PÁedané datagramy/s \IPv4\Neznámý protokol pÁijatých datagram \IPv4\VyÁazené pÁijaté datagramy \IPv4\Doru¶ené pÁijaté datagramy/s \IPv4\Odeslané datagramy/s \IPv4\VyÁazené odchozí datagramy \IPv4\Odchozí datagramy bez sm¹rování \IPv4\PÁijaté fragmenty/s \IPv4\Fragmenty zp¹tn¹ složené/s \IPv4\Chyby zp¹tného skládání fragment \IPv4\Fragmentování datagramÂ/s \IPv4\Chyby fragmentování \IPv4\Fragmenty vytvoÁené/s \TCPv4\Segmenty/s \TCPv4\Navázaná pÁipojení \TCPv4\Aktivní pÁipojení \TCPv4\Pasivní pÁipojení \TCPv4\Chyby pÁipojení \TCPv4\Resetovaná pÁipojení \TCPv4\PÁijaté segmenty/s \TCPv4\Odeslané segmenty/s \TCPv4\Segmenty odeslané znovu/s
Podle takových faktor¾, jako je po²et instalovaných fyzických procesor¾, p½ipojených fyzických disk¾, definovaných logických disk¾ a po²et adaptér¾ síÆového rozhraní, bude celý objem ²íta²¾ uvedených ve výpisu 4.7 souboru nastavení ²íta²¾ generovat data o objemu dosahujícím 30 MB dennµ na malém po²íta²i a až 100 MB nebo i více dennµ na velkém stroji. Sledování indikátor¿ chyb £ada ²íta²¾, zahrnutých v ukázkovém souboru nastavení ²íta²¾ ve výpisu 4.7, p½edstavuje indikátory ur²itého chybového stavu. Takové chybové podmínky se neomezují jen na nedostatek prost½edk¾ – nµkteré odrážejí nap½. nesprávnµ nakonfigurované služby systému a sítµ. Jiné mohou indikovat ²innost související s pokusy o narušení zabezpe²ení po²íta²e ze strany neoprávnµných uživatel¾. Význam zahrnutí tµchto ²íta²¾ do denních monitorovacích procedur spo²ívá v tom, že máte možnost p½esnµ stanovit dobu, kdy k takovým chybovým stav¾m v systémových službách dochází. Výpis 4.8 ukazuje ²íta²e obsažené již v souboru nastavení ²íta²¾ podle výpisu 4.7, jež slouží p½edevším jako indikátory chyb na souborovém a tiskovém serveru. Tato
Postupy denního sledování server
317
množina ²íta²¾ zahrnuje chybové indikátory relací souborového serveru, chybové stavy tiskáren a obecné chyby sítµ. VÝPIS 4.8: »ÌtaËe, jeû jsou ukazateli chyb na souborovÈm a tiskovÈm serveru \Server\Sessions Timed Out \Server\Sessions Errored Out \Server\Sessions Logged Off \Server\Sessions Forced Off \Server\Errors Logon \Server\Errors Access Permissions \Server\Errors Granted Access \Server\Errors System \Server\Blocking Requests Rejected \Server\Work Item Shortages \Server\Pool Nonpaged Bytes \Server\Pool Nonpaged Failures \Server\Pool Paged Failures \Print Queue(*)\Out of Paper Errors \Print Queue(*)\Not Ready Errors \Network Interface(*)\Packets Received Discarded \Network Interface(*)\Packets Received Errors \Network Interface(*)\Packets Received Unknown \Network Interface(*)\Packets Outbound Discarded \Network Interface(*)\Packets Outbound Errors \IPV4\Datagrams Received Header Errors \IPV4\Datagrams Received Address Errors \IPV4\Datagrams Received Unknown Protocol \IPV4\Datagrams Received Discarded \IPV4\Datagrams Outbound Discarded \IPV4\Datagrams Outbound No Route \IPV4\Fragment Re-assembly Failures \IPV4\Fragmentation Failures \TCPV4\Connection Failures \TCPV4\Connections Reset
b) produkt s ²eskou lokalizací \Server\Vypršelé relace \Server\Chybné relace \Server\Odhlášené relace \Server\Odpojené relace \Server\Chyby pÁihlášení \Server\Chyby pÁístupových práv \Server\Chyby ud¹lených práv \Server\Chyby systému \Server\Zamítnuté žádosti zablokování \Server\Nedostatky pracovních položek \Server\Bajty nestránkovaného fondu \Server\Chyby nestránkovaného fondu \Server\Chyby stránkovaného fondu \Tisková fronta(*)\Po¶et chyb typu Došel papír
Postupy pdi sledování výkonu
a) produkt v angli²tinµ:
318
Kapitola 4 – Postupy pi sledování výkonu
\Tisková fronta(*)\Po¶et chyb typu Tiskárna není pÁipravena \Rozhraní sít¹(*)\VyÁazené pÁijaté pakety \Rozhraní sít¹(*)\Chyby pÁijatých paket \Rozhraní sít¹(*)\PÁijaté pakety neznámé \Rozhraní sít¹(*)\VyÁazené odchozí pakety \Rozhraní sít¹(*)\Chyby odchozích paket \IPv4\Chyby hlavi¶ek pÁijatých datagram \IPv4\Chyby adres pÁijatých datagram \IPv4\Neznámý protokol pÁijatých datagram \IPv4\VyÁazené pÁijaté datagramy \IPv4\VyÁazené odchozí datagramy \IPv4\Odchozí datagramy bez sm¹rování \IPv4\Chyby zp¹tného skládání fragment \IPv4\Chyby fragmentování \TCPv4\Chyby pÁipojení \TCPv4\Resetovaná pÁipojení
Ìíta²e, jež jsou uvedeny ve výpisu 4.8 a které zaznamenávají po²et vzniklých chybových stav¾, jsou vµtšinou okamžité neboli ²isté. Obsahují ale kumulativní hodnoty. Jelikož po²et chybových stav¾, které nastávají, by mµl být velmi nízký, p½i použití intervalového rozdílového ²íta²e ke sledování chyb by byly hlášeny tak malé rychlosti chyb za sekundu, že by se objevovaly jako nulové hodnoty. Aby se tedy cenné metriky nezobrazovaly jako nuly, hlásí tyto ²íta²e kumulativní po²ty chyb. Jedna z nevýhod tohoto p½ístupu spo²ívá v tom, že nem¾žete použít prvek Alerts (Výstrahy) nástroje Performance (Sledování výkonu) a nechat se upozornit na vznik chybového stavu. Graf na obrázku 4.2 vykresluje hodnoty chybových podmínek jednoho ²íta²e síÆového rozhraní v rámci dvouhodinové monitorovací relace. Všimnµte si, že k½ivka vyzna²ující hodnoty ²íta²e Network Interface\Packets Received Unknown (Rozhraní sítµ(*)\P½ijaté pakety neznámé) bµhem sledovacího intervalu trvale roste. AÆ už dochází k jakémukoli chybovému stavu, vyskytuje se pravidelnµ. Protože tento ²íta² udává kumulativní (nár¾stový) po²et vzniklých chybových podmínek od posledního spuštµní systému, jakmile se objeví nµjaký chybový stav, hodnota ²íta²e již bude trvale nenulová. Je z½ejmé, že když se jednou spustí výstraha na jednom z takových ²íta²¾, bude se opakovat ve všech následujících mµ½icích intervalech. Takové výstrahy „zamo½í“ protokol událostí aplikací. Chcete-li zjistit, zda dochází k výskytu tµchto chybových podmínek, je nejsnazší a nejrychlejší vyvinout zprávu využívající zobrazení histogramu, což vám dovolí rozpoznat všechny nenulové chybové stavy. P½íklad tohoto p½ístupu je na obrázku 4.3. Ten ukazuje, že v rámci našeho sledovacího intervalu dochází pouze k chybám P½ijaté pakety neznámé. Jakmile z histogramu odstraníte všechny ²íta²e chybových stav¾, které hlásí nulové hodnoty, m¾žete se p½epnout do zobrazení grafu a blíže prozkoumat zbývající nenulové ²íta²e. S využitím zobrazení grafu lze stanovit, kdy se p½íslušné chybové stavy objevily a jakou rychlostí vznikaly.
OBRÁZEK 4.2: Hodnoty jednoho :íta:e chybových stavS síPového rozhraní v rámci dvouhodinové monitorovací relace
OBRÁZEK 4.3: Zobrazení histogramu ukazující :íta:e chybových stavS s nenulovými hodnotami
Efektivní využívání výstrah Kv¾li dodate²ným výkonnostním náklad¾m a velikosti protokol¾ ²íta²¾ je jen z½ídkakdy možné shromažÅovat neustále všechny výkonnostní statistiky, které byste mohli pot½ebovat. K velikosti generovaných soubor¾ protokol¾ ²íta²¾ nejvíce p½ispívá sbµr dat na úrovni proces¾ – dokonce i na menších po²íta²ích se systémem Windows Server 2003 vµtšinou bµží mnoho proces¾, což znamená rozsáhlé soubo-
319
Postupy pdi sledování výkonu
Postupy denního sledování server
320
Kapitola 4 – Postupy pi sledování výkonu
ry protokol¾ ²íta²¾. V ukázkovém souboru nastavení ²íta²¾ ve výpisu 4.7 je tento potenciální problém vy½ešen sbµrem výkonnostních ²íta²¾ na úrovni proces¾ vždy jen u omezeného po²tu proces¾. Ve výpisu 4.7 a v p½íkladech uvedených v tabulce 4.1 byla vybrána výkonnostní data na úrovni proces¾ jen u tµch proces¾, které jsou pro provozovanou serverovou aplikaci nejzásadnµjší. Tento selektivní sbµr dat však není zcela uspokojivým ½ešením, protože výkonnostní data na úrovni jednotlivých proces¾ jsou nezbytná k detekování poškozených proces¾, které si monopolizují procesor nebo kterým uniká virtuální pamµÆ. £ešením tohoto rozporu je používat prvek Alerts (Výstrahy) konzoly Performance (Sledování výkonu) a zajistit automatické spouštµní relace sbµru dat ²íta²¾ nástroje Log Manager, jakmile nµjaká výstraha p½ekro²í stanovený práh. Když procedury protokolování ²íta²¾ implementujete tímto zp¾sobem, budete moci automaticky shromažÅovat velmi detailní údaje o problémech, aniž by bylo nutné neustále sbírat všechna výkonnostní data. Relaci sbµru dat protokol¾ ²íta²¾ nástroje Log Manager automaticky spouštµnou, jakmile dojde ke spuštµní nµjaké výstrahy, nastavte tµmito jednoduchými kroky: 1. Definujte protokol ²íta²¾ nástroje Log Manager, jehož použití plánujete pro sbµr detailních výkonnostních dat o ur²ité situaci. 2. Definujte podmínku výstrahy použitou ke spuštµní dané relace protokolu ²íta²¾. 3. V definici akce po výstraze zadejte spuštµní p½íslušné relace protokolu ²íta²¾ definované v kroku 1. Chcete-li nap½íklad pomáhat se zjištµním stavu, kdy nµjakému procesu uniká virtuální pamµÆ, definujte relaci protokolu ²íta²¾, která bude na úrovni proces¾ shromažÅovat data související s alokováním virtuální pamµti. Následnµ definujte chybový stav, který se spustí, kdykoli alokování virtuální pamµti dosáhne kritické úrovnµ. Nakonec definujte akci této výstrahy zajišÆující spuštµní relace protokolu ²íta²¾ definované v kroku 1 (p½edchozího postupu), jakmile se daná podmínka výstrahy projeví. Následující oddíl vás provede ukázkou implementace výstrahy, která se spustí, jakmile bude nedostatek virtuální pamµti. Následnµ bude iniciovat relaci sbµru dat protokolu ²íta²¾, jež vám umožní stanovit, který proces zodpovídá za nedostatek virtuální pamµti. V kapitole 5, „£ešení potíží s výkonem“, jsou probírány dopl¹kové techniky detekce a diagnostiky únik¾ virtuální pamµti. UpozornÏnÌ MusÌte si d·vat pozor na to, aby vaöe v˝konnostnÌ v˝strahy nezahltily aplikaËnÌ protokol ud·lostÌ nadmÏrn˝m poËtem zpr·v. Periodicky byste mÏli prohlÌûet aplikaËnÌ protokol ud·lostÌ a kontrolovat, zda vaöe nastavenÌ v˝strah negenerujÌ p¯Ìliö mnoho poloûek protokolu ud·lostÌ. Programy jako Microsoft Operations Manager dok·ûou aktivnÏ spravovat protokoly ud·lostÌ a konsolidovat i potlaËovat duplicitnÌ poloûky ud·lostÌ, aby nedoch·zelo k neust·lÈmu generov·nÌ zpr·v v˝strah souvisejÌcÌch se st·le stejn˝m stavem.
Automatické spouštgní protokol dítad Tento oddíl vás krok za krokem provede procedurou generující diagnostické protokoly ²íta²¾, kdykoli dojde k nedostatku virtuální pamµti, který je možná zp¾soben poškozeným procesem, jemuž uniká virtuální pamµÆ.
Postupy denního sledování server
321
Krok 1: Definujte nastavení protokolu ³íta³¿ Jedná se o nastavení protokolu ²íta²¾ použitá, když výstraha spustí svou prahovou podmínku. Použijte nap½íklad následující p½íkaz: Logman create counter MemoryTroubleshooting -v mmddhhmm -c "\Memory\Available Bytes" "\Memory\% Committed Bytes in Use" "\Memory\Cache Bytes" "\Memory\Pool Nonpaged Bytes" "\Memory\Pool Paged Bytes" "\Process(*)\Pool Nonpaged Bytes" "\Process(*)\Pool Paged Bytes" "\Process(*)\Pool Virtual Bytes" "\Process(*)\Pool Private Bytes" "\Process(*)\Page Faults/sec" "\Process(*)\Pool Working Set" -si 00:30 -o "c:\Perflogs\Alert Logs\MemoryTroubleshooting" -max 5
Logman create counter ReseniPotiziPameti -v mmddhhmm -c "\Pam¹È\Bajty k dispozici" "\Pam¹È\% využití sv¹Áených bajtÂ" "\Pam¹È\Bajty mezipam¹ti" "\Pam¹È\Bajty nestránkovaného fondu" "\Pam¹È\Bajty stránkovaného fondu" "\Proces(*)\Bajty nestránkovaného fondu" "\Proces(*)\Bajty stránkovaného fondu" "\Proces(*)\Virtuální bajty" "\Proces(*)\Nesdílené bajty" "\Proces(*)\Chyby stránek/s" "\Proces(*)\Pracovní sada" -si 00:30 -o "c:\Perflogs\Protokoly vystrah\ReseniPotiziPameti" -max 5
Tento p½íkaz definuje relaci protokolu ²íta²¾ ReseniPotiziPameti, která shromažÅuje ²íta²e alokování virtuální pamµti na úrovni proces¾ a také nµkolik celosystémových ²íta²¾ alokování virtuální pamµti. V našem p½íkladu vzorkujeme ²íta²e ve 30sekundových intervalech. Zadání parametru -max zajistí ukon²ení sbµru dat, jakmile protokol ²íta²¾ dosáhne velikosti 5 MB. Pomocí konzoly Performance Monitor byste rovnµž mohli omezit dobu trvání sbµru dat na hodnotu kup½íkladu 10 až 15 minut. Všimnµte si, že protokoly ²íta²¾ se budou vytvá½et ve složce C:\Perflogs\Protokoly vystrah\, což je složka odlišná od té, kde vytvá½íte pravidelné denní protokoly výkonu. Tato samostatná složka vám umož¹uje snáze odlišit relace protokolování ²íta²¾ spuštµné výstrahami a usnad¹uje také jejich správu podle r¾zných kritérií. Kup½íkladu uvedený protokol ReseniPotiziPameti je detailním pohledem omezeným na data související s alokováním virtuální pamµti. Takový typ protokolu ²íta²¾ nebudete nikdy muset sumarizovat, ani nebude obvykle zapot½ebí zachovávat detailní historický záznam o podobných typech potíží. Krok 2: Definujte obecné vlastnosti výstrahy Test (nebo testy) prahové hodnoty ²íta²e, který spouští ur²itý stav výstrahy, definujete na kartách dialogového okna vlastností výstrahy virtuální pamµti. V našem p½íkladu je zapot½ebí vytvo½it výstrahu spouštµnou nedostatkem virtuální pamµti – testovanou prahovou hodnotou ²íta²e Memory\ % Committed Bytes In Use (PamµÆ\% využití svµ½ených bajt¾) je 85 procent, jak ilustruje obrázek 4.4.
Postupy pdi sledování výkonu
Respektive v ²eském prost½edí:
322
Kapitola 4 – Postupy pi sledování výkonu
OBRÁZEK 4.4: íta: % Committed Bytes In Use pdesahující 85 %
Rychlost, jakou sledování výstrah vzorkuje vámi vybraný výkonnostní ²íta² (nebo ²íta²e), ur²uje, jak ²asto lze zprávy výstrahy generovat. V našem p½ípadµ je bµh sledování výstrahy naplánován jednou za minutu. Na po²íta²i s omezenou virtuální pamµtí, kde hodnota PamµÆ\% využití svµ½ených bajt¾ trvale p½esahuje limitních 85 procent, se daná podmínka výstrahy spouští každou minutu. V závislosti na vybrané akci výstrahy se m¾že tato frekvence projevit jako p½íliš vysoká. Tip Je-li to moûnÈ, definujte takovÈ podmÌnky v˝strah, kterÈ se za norm·lnÌho stavu nespouötÏjÌ vÌce neû nÏkolikr·t za hodinu. Upravte nastavenÌ tÏch stav˘ v˝strahy, jeû se spouötÏjÌ ËastÏji neû 5- aû 10kr·t za hodinu, a to dokonce i za velmi nep¯Ìzniv˝ch podmÌnek, aby se spouötÏly mÈnÏ Ëasto. Pokud se v˝strahy vyskytujÌ p¯Ìliö Ëasto, jenom svÈ p¯Ìjemce zlobÌ. Z psychologickÈho hlediska ztr·cejÌ Ëasto spouötÏnÈ v˝strahy sv˘j v˝znam jako upozornÏnÌ na d˘leûitÈ ud·losti. Nakonec budou povaûov·ny za bÏûnÈ vÏci, kterÈ lze klidnÏ ignorovat. Tyto lidskÈ reakce na dan˝ stav jsou pochopitelnÈ, ale velmi neû·doucÌ, pokud zadan˝ pr·h v˝strahy skuteËnÏ p¯edstavuje v˝jimeËn˝ stav vyûadujÌcÌ pozornost a detailnÏjöÌ zkoum·nÌ. Frekvenci spouötÏnÌ v˝strah m˘ûete snadno ¯Ìdit jednÌm z n·sledujÌcÌch zp˘sob˘:
1. Upravte prahovou podmÌnku tak, aby se v˝strahy spouötÏly mÈnÏ Ëasto. 2. Zpomalte frekvenci spouötÏnÌ skenov·nÌ v˝strah. NavÌc m˘ûete omezit akce v˝strahy na ty, kterÈ ˙myslnÏ nebudou nikoho obtÏûovat.
Krok 3: Definujte ³asový plán výstrahy Trvání sledování výstrah je dáno parametry ²asového plánu výstrah. Nejlepších výsledk¾ dosáhnete omezením trvání sledování výstrah na 1 až 2 hodiny. V p½ípadµ trvalého monitorování zajistµte, aby se nové sledování spustilo až po dokon²ení toho aktuálního, jak zachycuje obrázek 4.5.
Postupy denního sledování server
323
Postupy pdi sledování výkonu
Krok 4: Definujte akci výstrahy Akci vykonanou prvkem výstrah po naplnµní zadané podmínky definují parametry akce výstrahy. My pot½ebujeme, aby prvek výstrah inicioval protokol ²íta²¾ definovaný v kroku 1 a zajistil tak sbµr detailnµjších údaj¾ o výkonu aplikací na úrovni proces¾ v okamžiku spuštµní výstrahy. Nezapomínejte, že zadaný protokol ²íta²¾ se spustí jen jednou na sledování výstrah. Oproti tomu položky protokolu událostí se generují v každém vzorkovacím intervalu, v nµmž je splnµna podmínka výstrahy. Také zprávy výstrah se generují v každém vzorkovacím intervalu s naplnµnou podmínkou výstrahy. Zvolíte-li spuštµní nµjakého programu (viz obrázek 4.6), naplánuje prvek výstrah jeho bµh jen jednou v rámci sledování výstrah.
OBRÁZEK 4.5: Použijte zaškrtávací polí:ko Start A New Scan (Spustit nové sledování)
Protokol ²íta²¾ nebo zadaný program se spustí bezprost½ednµ po prvním vzorkovacím intervalu sledování výstrah, v nµmž je zadaná podmínka výstrahy pravdivá. Doba trvání relace protokolování ²íta²¾ je ur²ena parametry ²asového plánu, které zadáváte v rámci definování dané relace protokolu ²íta²¾. Jak již bylo poznamenáno, pomocí rozhraní p½íkazového ½ádku nástroje Log Manager m¾žete omezit velikost souboru protokolu ²íta²¾, který bude vytvo½en. S využitím rozhraní konzoly Sledování výkonu máte možnost omezit dobu trvání relace protokolu ²íta²¾. Dostate²nµ efektivní detailní protokol ²íta²¾, který vám dovolí do hloubky prozkoumat stav po²íta²e, má obvykle rozsah od 10 do 30 minut. Je z½ejmé, že pokud se podmínky výstrah spouštµjí dostate²nµ ²asto a detailní relace protokol¾ ²íta²¾ jsou relativnµ dlouhé, riskujete shromáždµní mnohem více dat o potenciálním problému, než dokážete pozdµji efektivnµ analyzovat. Navíc m¾žete spot½ebovávat p½íliš mnoho diskového prostoru na po²íta²i trpícím sledovaným problémem.
324
Kapitola 4 – Postupy pi sledování výkonu
OBRÁZEK 4.6: Máte možnost zadat spoušt?ný program
Obecné procedury výstrah Podobné procedury výstrah bude zapot½ebí definovat pro spouštµní takových protokol¾ ²íta²¾, jež vám umožní zkoumat období nadmµrného využívání procesoru, nedostatku fyzické pamµti a možné potíže s výkonem disku. Tabulka 4.3 shrnuje základní procedury výstrah, které budou pro vaše produk²ní servery užite²né. Pojednání o nastavení konfigura²nµ závislých prah¾ výstrah stavu nadmµrného stránkování najdete v kapitole 3. Testy prahových podmínek výstrah uvedené na obrázku 4.3 zachycují reprezentativní hodnoty využitelné na mnoha po²íta²ích. Specifi²tµjší doporu²ení týkající se prahových podmínek výstrah tµchto ²íta²¾ najdete v obsáhlém pojednání v kapitole 3, „Mµ½ení výkonu serveru“.
Aplikadní výstrahy M¾že být také vhodné definovat dodate²ná sledování výstrah vycházející z kritérií specifických pro konkrétní aplikace. V každé situaci se musíte zamµ½it na podmínky výstrah související s nadmµrnou spot½ebou prost½edk¾, ukazatele nedostatku prost½edk¾, mµ½ení zachycující velký po²et požadavk¾ ²ekajících ve frontµ a další anomálie související s výkonem aplikací. U nµkterých aplikací je vhodné generovat výstrahy jak p½i vysokých rychlostech transakcí, tak i p½i jejich nezvykle nízkých hodnotách, což m¾že také znamenat, že daná aplikace p½estala reagovat a vykonávání transakcí se blokuje.
Postupy denního sledování server
325
TABULKA 4.3: NastavenÌ obecn˝ch stav˘ v˝strah Prahové testy
Nadmgrné vyu- Processor(*)\% Processor Time > 98% žívání CPU; možný bgh procesu v nekonedném cyklu
Frekvence Další protokolované dítade sledování (v sekundách 10–30
Interval vzorkování (v sekundách)
Processor(*)\*;
10–20 po Process(*)\% Processor Time, 10–20 minut Process(*)\% Privileged Time; Process(*)\% User Time
Únik virtuální Memory\% Commit- 10–30 pamgti procesu ted Bytes In Use > 85%
Memory\*;
15–30 po Process(*)\Private Bytes, Pro- 10–30 minut cess(*)\Virtual Bytes, Process(*)\Pool Nonpaged Bytes, Process(*)\Pool Paged Bytes, Process(*)\Page File Bytes
Nadmgrné Memory\Available 10–30 stránkování na Kbytes < <práh> disk Memory\Pages/sec > <práh>
Memory\*;
10–20 po Physical Disk(n)\% Idle Time, 10–20 minut Physical Disk(n)\Avg. Disk Secs/Transfer, Physical Disk(n)\Transfers/sec;
Process(*)\Page Faults/sec Slabý výkon disku
Physical Disk(n)\Avg. 15 Disk Secs/Transfer > 20 Physical Disk(n)\Transfers/sec > 200
Physical Disk(n)\% Idle Time, 10 po 10 minut Physical Disk(n)\Avg. Disk Secs/Transfer, Physical Disk(n)\Transfers/sec
Physical Disk(n)\Current Disk Queue Length > 5
Tabulka 4.4 uvádí doporu²ená nastavení výstrah nµkolika rozší½ených serverových aplikací. Hodnoty používané v testech prahových podmínek výstrah u aplika²ních server¾ se obvykle na jednotlivých sídlech liší, jak je tu uvedeno. DalöÌ informace DalöÌ pomoc s nastavenÌm prah˘ v˝strah konkrÈtnÌch aplikacÌ najdete v online dokumentaci Microsoft Operations Framework v oddÌlu TechNet Products and Technologies na adrese http://www.microsoft.com/technet/.
Denní hlášení pro správu Hlášení pro správu je zp¾sob, jakým zajistit p½ístup ke klí²ovým údaj¾m a zprávám popisujícím chování po²íta²¾ se systémem Windows Server 2003 všem ú²astník¾m vaší instalace, které zajímá výkonnost serveru. Hlášení pro správu nelze zamµ¹ovat s detailní a hloubkovou analýzou dat provádµnou zkušeným analytikem výkonu, jakmile se objeví výkonnostní potíže, které je zapot½ebí diagnostikovat. Hlášení pro
Postupy pdi sledování výkonu
Podmínka
326
Kapitola 4 – Postupy pi sledování výkonu
správu se zamµ½uje na nµkolik klí²ových metrik, které chápe mnoho lidí. Vytvá½ené grafy a tabulky by mµly být relativnµ jednoduché a nekomplikované. TABULKA 4.4: Uk·zkov· nastavenÌ aplikaËnÌch podmÌnek v˝strah Aplikace
Podmínka
Prahové testy
Další protokolované objekty
Hadide domé- Nadmgrné NTDS\LDAP Searches/sec > <práh> NTDS\* ny požadavky na Active Directory Stránky ASP (nebo aplikace ASPX rámce .NET Framework)
Nadmgrné ASP\Requests Queued > <práh> azení požadavk ASP do front
ASP; Internet Information System Global; Web Service; Process(w3wp)\*
Souborový server
Nedostatky prostedk
Server Work Queues(*)\Queue Length > <práh>
Server; Server Work Queues; Cache; Memory; Processor; Process(svchost)\% Processor Time
SQL Server
Nadmgrné databázové transakce
SQL SerSQL Server:Buffer Manager; ver:Databases(n)\Transactions/sec > SQL Server:Cache Manager; SQL Server:Memory Ma<práh> nager; SQL Server:Locks; SQL Server:SQL Statistics;SQL Server:Databases
Metriky, o které se techni²tí pracovníci a další povµ½ené osoby nejvíce zajímají, zahrnují následující: Míry využití klí²ových prost½edk¾, jako jsou procesory, pamµÆ, disky a síÆ. Dostupnost a rychlost transakcí základních aplikací, jako jsou webové servery, databázové servery a servery Exchange elektronické pošty a zpráv. Doby obsluhy a reakce transakcí v oblasti klí²ových aplikací, pokud je lze zjistit.
Sumarizace denních protokol dítad Protože hlášení pro správu by mµla poskytovat náhled na výkon, bude zapot½ebí generovat denní soubory obsahující výkonnostní data sumarizovaná nástrojem Relog. Detailní generované denní protokoly ²íta²¾ nejsou tím nejlepším k vytvá½ení hlášení pro správu. Takový denní protokol ²íta²¾, jenž sbírá jednominutové vzorky trvale po dobu 24 hodin, nakumuluje každý den 1440 pozorování každého protokolovaného ²íta²e výkonu. (Skute²ný po²et dennµ vygenerovaných vzork¾ bude 1441, protože jeden další vzorek je zapot½ebí na za²átku k získání po²áte²ních hodnot všech ²íta²¾.) To je mnohem více dat, než dokáže nástroj System Monitor (Sledování systému) vmµstnat do zobrazení grafu, jenž je omezen na vykreslení 100 datových bod¾ na své ²asové ose x. Chcete-li vytvo½it zobrazení grafu pro 24hodinové období, bude muset Sledování systému destilovat 14 samostatných mµ½ení a vykreslit místo nich souhrnné statistiky, což m¾že mít snadno za následek pok½ivený pohled na výkonnostní údaje.
Postupy denního sledování server
327
Použití nástroje Relog k zajištµní sumarizované verze shromažÅovaných denních protokol¾ ²íta²¾ zjednoduší proces vytvá½ení užite²ných denních hlášení pro správu. Kup½íkladu zadáním dále uvedeného p½íkazu vytvo½íte kompaktní verzi jednoho ze svých denních protokol¾ ²íta²¾, sumarizovanou do ideálních 15minutových interval¾: relog zakladniDenniProtokol_20031228.blg -o
.zakladniDenniProtokol.blg -f BIN -t 15
Když ve svých hlášeních pro správu použijete sumarizovaná data, eliminují se všechna pok½ivení, jež se mohou objevovat, jakmile je zobrazení grafu nuceno vypouštµt tolik dodate²ných pozorování. Shrnutí 24hodinové periody do 15minutových interval¾ nakonec poskytne trochu ménµ než 100 pozorování na každý ²íta², což je hodnota ideálnµ zapadající do zobrazení grafu nástroje Sledování systému. Nezapomínejte ale také na to, že shrnování namµ½ených dat na této úrovni vyhladí mnoho špi²ek a propad¾ zachycených v originálním, detailním protokolu ²íta²¾. Když zkoumáte nµjaký výkonnostní problém, budete využívat p¾vodní data protokolu ²íta²¾ a také všechny detailní protokoly ²íta²¾ daného intervalu, které automaticky vygenerovaly vaše procedury výstrah. Tip PodrobnÈ dennÏ vytv·¯enÈ protokoly ËÌtaˢ jsou vhodnÈ pro generov·nÌ hl·öenÌ pro spr·vu zamϯujÌcÌ se na öpiËkovÈ 1- aû 2hodinovÈ obdobÌ. Jakmile hodinov· rychlost transakcÌ p¯ekroËÌ dvojn·sobek pr˘mÏrnÈ rychlosti transakcÌ, jsou hl·öenÌ pro spr·vu zamϯen· na takov· öpiËkov· obdobÌ extrÈmnÏ uûiteËn·. Jsou-li v˝konnostnÏ ˙zk· mÌsta patrn· jen bÏhem takov˝ch öpiËkov˝ch zatÌûenÌ, velmi zajÌmav· jsou rovnÏû hl·öenÌ zamϯujÌcÌ se na tato ˙zk· Ëasov· obdobÌ.
Konsolidování výkonnostních dat z více server¿ Zodpovídáte-li za výkon velkého po²tu server¾, pak budete z½ejmµ chtít shromažÅovat protokoly ²íta²¾ z mnoha takových server¾, abyste mohli sestavovat pot½ebná hlášení z jediného místa. Kv¾li úspo½e diskového prostoru na centrálním místµ bude vhodné provádµt tuto konsolidaci s využitím sumarizovaných protokol¾ ²íta²¾ a nikoli s objemnými, p¾vodnµ nasbíranými detailními protokoly ²íta²¾. Takovou konsolidaci lze provádµt dennµ s využitím ½ady automatizovaných procedur následujícím zp¾sobem: 1. Pomocí nástroje Relog vytvo½te na lokálním serverovém po²íta²i sumarizovanou (souhrnnou) verzi generovaných soubor¾ denních protokol¾ ²íta²¾. 2. Do názvu sumarizovaného souboru, který je výstupem nástroje Relog, za²le¹te název po²íta²e, odkud protokol ²íta²¾ pochází. 3. Zkopírujte soubor sumarizovaného protokolu ²íta²¾ na nµjaké centrální místo. 4. Na konsolida²ním serveru využijte nástroj Relog a zkombinujte všechny protokoly ²íta²¾ do jediného výstupního souboru, který lze využívat k dennímu hlášení. Dále v tomto oddílu najdete p½íklady skript¾, které lze použít k automatizování nazna²ených funkcí denního zpracování. Alternativou ke konsolidaci protokol¾ ²íta²¾ nashromáždµných na mnoha po²íta²ích v jednom centrálním místµ bµhem následného zpracování je vytvá½ení všech protokol¾ ²íta²¾ na centrálním umístµní již od za²átku. Jak je zd¾raznµno v oddílu „Protokolování na místo sdílené v síti“ v této kapitole, tato volba má dopady na škálovatelnost rozsáhlých serverových farem,
Postupy pdi sledování výkonu
Takové sumarizované verze denních protokol¾ ²íta²¾ jsou velmi užite²né k rychlému a výhodnému sestavování hlášení pro správu.
328
Kapitola 4 – Postupy pi sledování výkonu
takže je zapot½ebí implementovat ji s rozvahou. Podrobnµjší pojednání o tµchto vµcech najdete v oddílu nazvaném „Protokolování místních ²íta²¾ na lokální disk“ d½íve v této kapitole. P½i vykonávání nástroje Relog s cílem vytvo½it sumarizované denní protokoly ²íta²¾ vhodné k hlášení pro správu a archivaci m¾žete získané výkonnostní metriky ještµ dále editovat a odstranit ²íta²e, o kterých se v hlášeních pro správu nechcete zmi¹ovat. P½i vykonávání nástroje Relog s cílem vytvo½it sumarizované denní protokoly ²íta²¾ se m¾žete odkazovat na nµjaký soubor nastavení protokolu ²íta²¾, jenž pot½ebnou editaci zajistí. Máte kup½íkladu možnost zavolat Relog dále uvedeným zp¾sobem, kde souborprenastaveni-citacu-protokolu.txt p½edstavuje užší podmnožinu p¾vodního zakladni-soubor-nastaveni-citacu.txt použitého ke generování plných denních protokol¾ ²íta²¾. relog zakladniDenniProtokol_20031228.blg -o .zakladniDenniProtokol.blg -cf soubor-prenastaveni-citacu-protokolu.txt -f BIN -t 15
Výpis 4.9 ukazuje doporu²ený obsah souboru nastavení ²íta²¾ pro nástroj Relog vhodný k vytvá½ení sumarizovaných soubor¾ pro denní hlášení pro správu. VÝPIS 4.9: Soubor-prenastaveni-citacu-protokolu.txt
a) produkt v angli²tinµ: \LogicalDisk(*)\% Free Space \LogicalDisk(*)\Free Megabytes \LogicalDisk(*)\Current Disk Queue Length \PhysicalDisk(*)\Current Disk Queue Length \PhysicalDisk(*)\Avg. Disk Queue Length \PhysicalDisk(*)\Avg. Disk sec/Transfer \PhysicalDisk(*)\Avg. Disk sec/Read \PhysicalDisk(*)\Avg. Disk sec/Write \PhysicalDisk(*)\Disk Transfers/sec \PhysicalDisk(*)\Disk Reads/sec \PhysicalDisk(*)\Disk Writes/sec \PhysicalDisk(*)\Disk Bytes/sec \PhysicalDisk(*)\Disk Read Bytes/sec \PhysicalDisk(*)\Disk Write Bytes/sec \PhysicalDisk(*)\Avg. Disk Bytes/Transfer \PhysicalDisk(*)\Avg. Disk Bytes/Read \PhysicalDisk(*)\Avg. Disk Bytes/Write \PhysicalDisk(*)\% Idle Time \Processor(*)\% Processor Time \Processor(*)\% User Time \Processor(*)\% Privileged Time \Processor(*)\Interrupts/sec \Processor(*)\% DPC Time \Processor(*)\% Interrupt Time \Memory\Page Faults/sec \Memory\Available Bytes \Memory\Committed Bytes
\Memory\Commit Limit \Memory\Transition Faults/sec \Memory\Cache Faults/sec \Memory\Demand Zero Faults/sec \Memory\Pages/sec \Memory\Pages Input/sec \Memory\Page Reads/sec \Memory\Pages Output/sec \Memory\Pool Paged Bytes \Memory\Pool Nonpaged Bytes \Memory\Page Writes/sec \Memory\Cache Bytes \Memory\Pool Paged Resident Bytes \Memory\System Code Resident Bytes \Memory\System Driver Resident Bytes \Memory\System Cache Resident Bytes \Memory\% Committed Bytes In Use \Memory\Available KBytes \Memory\Available MBytes \Memory\Transition Pages RePurposed/sec \System\Context Switches/sec \System\Processor Queue Length \Process(sqlserver)\% Processor Time \Process(sqlserver)\% User Time \Process(sqlserver)\% Privileged Time \Process(sqlserver)\Virtual Bytes \Process(sqlserver)\Page Faults/sec \Process(sqlserver)\Working Set \Process(sqlserver)\Private Bytes \Process(sqlserver)\Elapsed Time \Process(sqlserver)\Pool Paged Bytes \Process(sqlserver)\Pool Nonpaged Bytes \Process(inetinfo)\% Processor Time \Process(inetinfo)\% User Time \Process(inetinfo)\% Privileged Time \Process(inetinfo)\Virtual Bytes \Process(inetinfo)\Page Faults/sec \Process(inetinfo)\Working Set \Process(inetinfo)\Private Bytes \Process(inetinfo)\Elapsed Time \Process(inetinfo)\Pool Paged Bytes \Process(inetinfo)\Pool Nonpaged Bytes \RAS Total\Bytes Transmitted/Sec \RAS Total\Bytes Received/Sec \RAS Total\Total Errors/Sec \Print Queue(*)\Total Jobs Printed \Print Queue(*)\Bytes Printed/sec \Print Queue(*)\Total Pages Printed \Print Queue(*)\Jobs \Network Interface(*)\Bytes Total/sec \Network Interface(*)\Packets/sec \Network Interface(*)\Packets Received/sec
329
Postupy pdi sledování výkonu
Postupy denního sledování server
330
Kapitola 4 – Postupy pi sledování výkonu
\Network Interface(*)\Packets Sent/sec \Network Interface(*)\Current Bandwidth \Network Interface(*)\Bytes Received/sec \Network Interface(*)\Bytes Sent/sec \Network Interface(*)\Output Queue Length \IP\Datagrams/sec \IP\Datagrams Received/sec \IP\Datagrams Sent/sec \TCP\Segments/sec \TCP\Connections Established \TCP\Connections Active \TCP\Connection Failures \TCP\Connections Reset \TCP\Segments Received/sec \TCP\Segments Sent/sec \TCP\Segments Retransmitted/sec
b) produkt s ²eskou lokalizací \Logický disk(*)\% volného místa \Logický disk(*)\Volné megabajty \Logický disk(*)\Aktuální délka fronty disku \Fyzický disk(*)\Aktuální délka fronty disku \Fyzický disk(*)\StÁední délka fronty disku \Fyzický disk(*)\StÁední doba disku/pÁenos \Fyzický disk(*)\StÁední doba disku/¶tení \Fyzický disk(*)\StÁední doba disku/zápis \Fyzický disk(*)\PÁenosy disku/s \Fyzický disk(*)\tení z disku/s \Fyzický disk(*)\Zápisy na disk/s \Fyzický disk(*)\Bajt disku/s \Fyzický disk(*)\Bajty ¶tení z disku/s \Fyzický disk(*)\Bajty zapisování na disk/s \Fyzický disk(*)\StÁední po¶et bajt disku/pÁenos \Fyzický disk(*)\StÁední po¶et bajt disku/¶tení \Fyzický disk(*)\StÁední po¶et bajt disku/zápis \Fyzický disk(*)\% ¶asu ne¶innosti \Procesor(*)\% ¶asu procesoru \Procesor(*)\% uživatelského ¶asu \Procesor(*)\% privilegovaného ¶asu \Procesor(*)\PÁerušení/s \Procesor(*)\% ¶asu DPC \Procesor(*)\% ¶asu pÁerušení \Pam¹È\Chyby stránek/s \Pam¹È\Bajty k dispozici \Pam¹È\Sv¹Áené bajty \Pam¹È\Mez sv¹Áení \Pam¹È\Chyby pÁevodu stavu/s \Pam¹È\Chyby mezipam¹ti/s \Pam¹È\Chyby nulových požadavkÂ/s \Pam¹È\Stránky/s \Pam¹È\Vstup stránek/s \Pam¹È\tení stránek/s \Pam¹È\Výstup stránek/s
\Pam¹È\Bajty stránkovaného fondu \Pam¹È\Bajty nestránkovaného fondu \Pam¹È\Zápisy stránek/s \Pam¹È\Bajty mezipam¹ti \Pam¹È\Rezidentní bajty stránkovaného fondu \Pam¹È\Rezidentní bajty kódu systému \Pam¹È\Rezidentní bajty systémových ovlada¶Â \Pam¹È\Rezidentní bajty systémové mezipam¹ti \Pam¹È\% využití sv¹Áených bajt \Pam¹È\Po¶et kB k dispozici \Pam¹È\Po¶et MB k dispozici \Pam¹È\Zm¹n ú¶elu stran pÁenosu/s \Systém\PÁepnutí kontextu/s \Systém\Délka fronty procesoru \Proces(sqlserver)\% ¶asu procesoru \Proces(sqlserver)\% uživatelského ¶asu \Proces(sqlserver)\% privilegovaného ¶asu \Proces(sqlserver)\Virtuální bajty \Proces(sqlserver)\Chyby stránek/s \Proces(sqlserver)\Pracovní sada \Proces(sqlserver)\Nesdílené bajty \Proces(sqlserver)\Uplynulý ¶as \Proces(sqlserver)\Bajty stránkovaného fondu \Proces(sqlserver)\Bajty nestránkovaného fondu \Proces(inetinfo)\% ¶asu procesoru \Proces(inetinfo)\% uživatelského ¶asu \Proces(inetinfo)\% privilegovaného ¶asu \Proces(inetinfo)\Virtuální bajty \Proces(inetinfo)\Chyby stránek/s \Proces(inetinfo)\Pracovní sada \Proces(inetinfo)\Nesdílené bajty \Proces(inetinfo)\Uplynulý ¶as \Proces(inetinfo)\Bajty stránkovaného fondu \Proces(inetinfo)\Bajty nestránkovaného fondu \Celkový po¶et pÁipojení RAS\Odeslané bajty/s \Celkový po¶et pÁipojení RAS\PÁijaté bajty/s \Celkový po¶et pÁipojení RAS\Celkový po¶et chyb/s \Tisková fronta(*)\Celkový po¶et vytisknutých úloh \Tisková fronta(*)\Po¶et bajt vytisknutých za sekundu \Tisková fronta(*)\Celkový po¶et vytisknutých stránek \Tisková fronta(*)\Po¶et úloh \Rozhraní sít¹(*)\Bajty celkem/s \Rozhraní sít¹(*)\Pakety/s \Rozhraní sít¹(*)\PÁijaté pakety/s \Rozhraní sít¹(*)\Odeslané pakety/s \Rozhraní sít¹(*)\Aktuální šíÁka pásma \Rozhraní sít¹(*)\PÁijaté bajty/s \Rozhraní sít¹(*)\Odeslané bajty/s \Rozhraní sít¹(*)\Délka fronty výstupu \IPv4\Datagramy/s \IPv4\PÁijaté datagramy/s \IPv4\Odeslané datagramy/s
331
Postupy pdi sledování výkonu
Postupy denního sledování server
332
Kapitola 4 – Postupy pi sledování výkonu
\TCPv4\Segmenty/s \TCPv4\Navázaná pÁipojení \TCPv4\Aktivní pÁipojení \TCPv4\Chyby pÁipojení \TCPv4\Resetovaná pÁipojení \TCPv4\PÁijaté segmenty/s \TCPv4\Odeslané segmenty/s \TCPv4\Segmenty odeslané znovu/s
Ukázková hlášení pro správu Následující oddíl ilustruje hlášení pro správu, která v rámci prezentování souhrnných výkonnostních statistik z½ejmµ shledáte nejužite²nµjšími. Uvedené p½íklady používají k zachycení výkonnostních dat hlavnµ zobrazení grafu konzoly System Monitor (Sledování systému). Samoz½ejmµ máte možnost sestavit propracovanµjší grafy a tabulky, než jak je nabízí Sledování výkonu, použijete-li nástroje jako Microsoft Excel a podobné. Zde p½edstavená ukázková hlášení pro správu zachycují klí²ové výkonností ²íta²e, které byste mµli uvádµt. Zárove¹ nejsou grafy a tabulky p½eplnµné údaji, takže je lze snadno ²íst a dešifrovat. Protokoly ²íta²¾ použité k vygenerování graf¾ byly shromažÅovány na relativnµ nevýznamném po²íta²i, který v intervalu hlášení vykonával jen minimum ²inností. Smyslem je zamµ½it vaši pozornost na prezentaci dat a nikoli na údaje samotné. Pokud chcete vidµt p½íklady zajímavµjších tabulek a graf¾ zachycující po²íta²e vykazující problémy s výkonem, podívejte se do kapitoly 5, „£ešení potíží s výkonem“, kde najdete mnoho takových ukázek. Informace o tom, jak používat automatiza²ní rozhraní Sledování systému k automatickému generování podobných hlášení pro správu najdete v oddílu nazvaném „Automatiza²ní rozhraní Sledování systému“ v kapitole 6, „Pokro²ilá výkonnostní témata“. Využití procesoru Obrázek 4.7 ilustruje základní šablonu zobrazení grafu využitelnou v mnoha hlášeních pro správu. Zpráva zachycuje celkové využití procesoru, které zárove¹ rozdµluje na jeho složkové ²ásti. Bylo vybráno velké, snadno ²itelné písmo, doplnµny m½ížky os x a y a byl rovnµž použit popisný titulek. Po vytvo½ení šablon hlášení, výbµru požadovaných ²íta²¾ a p½idání p½íslušných prezenta²ních prvk¾ m¾žete nastavení uložit jako soubor .msc konzoly správy, jenž je opakovanµ použitelný. Podobný graf, který se zamµ½uje na dvouhodinovou dobu špi²kového zpracování, je uveden na obrázku 4.8. Opakované používání šablon graf¾ pro podobná hlášení správy zjednodušuje váš úkol vysvµtlit význam r¾zných graf¾ a tabulek. Hlášení pro správu denního využívání procesoru uvedené na obrázku 4.7 využívá jako vstup sumarizovaný soubor denního protokolu ²íta²¾ vytvo½ený nástrojem Relog. Hlášení o špi²kové hodinµ na obrázku 4.8 pracuje s plným, nesumarizovaným denním protokolem ²íta²¾, p½i²emž ²asové okno je upraveno tak, aby zachycovalo p½ibližnµ dvµ hodiny dat špi²kového zatížení.
OBRÁZEK 4.7: Hlášení o denním využívání procesoru
OBRÁZEK 4.8: Hlášení o využívání procesoru ve špi:ce
Dostupný diskový prostor Zobrazení histogramu podle obrázku 4.9 je vhodné pro hlášení dat z ²íta²¾, které mají tendenci k velmi pomalým zmµnám, jako nap½íklad Logical Disk(*)\Free Megabytes [Logický disk(*)\Volné megabajty]. Pomocí zobrazení histogramu m¾žete velmi rychle ukázat množství volného prostoru na velkém po²tu serverových disk¾. Výkon disku Obrázek 4.10 zachycuje problémy s ²itelností, k nimž dochází, když musíte vynášet více ²íta²¾ na jednu osu y. Vše lze samoz½ejmµ napravit rozumným využíváním škálovacích hodnot. Budete-li ale hlásit metriky využívající r¾zné hod-
333
Postupy pdi sledování výkonu
Postupy denního sledování server
334
Kapitola 4 – Postupy pi sledování výkonu
noty mµ½ítek tak, aby je bylo možné vynášet na jedinou osu y, m¾žete tím ²tená½e hlášení snadno zmást. Obrázek 4.10 zachycuje nastínµný problém, když zárove¹ uvádí mµ½ení výkonu disku ve formµ doby ne²innosti, pomµr¾ ²innosti za½ízení a reak²ní doby disku. Tyto míry spole²nµ p½esnµ charakterizují výkonnost fyzického disku. Každý jednotlivý ²íta² ale obvykle vyžaduje aplikování jiného škálovacího mµ½ítka, což ²asto vede ke zmatk¾m.
OBRÁZEK 4.9: Hlášení o volném diskovém prostoru
% Idle Time (Ìíta² % ²asu ne²innosti) ideálnµ spadá do výchozího rozsahu osy y od nuly do sta; to už ale neplatí pro zbývající metriky. Transfers/sec (P½enosy/s) fyzického disku ²asto p½esahují rychlost 100 za sekundu, takže tento ²íta² nelze vždy správnµ vykreslit v grafu se stejným mµ½ítkem osy y, jaké využívá % ²asu ne²innosti. Navíc reak²ní dobu disku, jež se mµ½í v milisekundách, je zapot½ebí znásobit škálovací hodnotou 1000, aby mohla být rozumnµ zachycena na téže ose jako % ²asu ne²innosti. Umístµní nµkolika ²íta²¾ využívajících r¾zné faktory mµ½ítka je doslova koledováním si o nesprávnou interpretaci. Tento p½ístup je ale nµkdy nevyhnutelný. Zmatek lze ob²as výraznµ omezit zadáním vhodného popisku osy y. Alternativa, tedy uvedení t½í samostatných graf¾, každého pro jedno mµ½ení, není atraktivní, protože obsah graf¾ s hodnotami jednotlivých ²íta²¾ je výraznµ rozdrobený. SíÇový provoz SíÆový provoz lze hlásit z hlediska jednotlivých síÆových rozhraní nebo jako sumarizovaná data všech existujících rozhraní sítµ. Jelikož ²íta²e objektu Network Interface (Rozhraní sítµ) nehlásí využití sítµ p½ímo, umožní vizualizaci relativního využívání daného rozhraní spíše taková šablona hlášení, jakou ilustruje obrázek 4.11. Ten zachycuje jak celkový po²et bajt¾ p½enesených p½es síÆové rozhraní, tak i aktuální nominální ší½ku pásma dané karty. Zmµ¹te výchozí maximum osy y tak, aby ²íta² Current Bandwidth (Aktuální ší½ka pásma) p½edstavoval úrove¹ 100% využití. Ìíta² Bytes Total/sec (Bajty celkem/s) dané instance síÆového rozhraní si
Postupy denního sledování server
335
OBRÁZEK 4.10: M?dení výkonu disku s využitím tdí metrik
OBRÁZEK 4.11: Hlášení o provozu na síPovém rozhraní
Historická data pro plánování kapacity Plánování kapacity p½edstavuje postupy a zásady zavedené za ú²elem prevence vznik¾ výkonnostních potíží p½i zvyšování a zmµnách pracovního zatížení. Když si budete ukládat historické záznamy využívání prost½edk¾ po²íta²¾ r¾znými d¾leži-
Postupy pdi sledování výkonu
pak lze p½edstavit jako zlomek ší½ky pásma této karty. Nezapome¹te osu y p½íslušným zp¾sobem ozna²it, jak je tomu na obrázku 4.11.
336
Kapitola 4 – Postupy pi sledování výkonu
tými produk²ními zatíženími, extrapolací z historických trend¾ dokážete p½edpovídat budoucí požadavky na prost½edky. Procesy plánování kapacity využívají rovnµž p½edpovµdi r¾stu, které vám poskytnou lidé zabývající se klí²ovými produk²ními pracovními zatíženími ve vaší organizaci. Tyto p½edpovµdi r¾stu jsou ²asto projekcemi vycházejícími z p½idávání dalších klient¾, uživatel¾ takových produk²ních systém¾. Následnµ musíte transformovat tyto p½edpovµdi r¾stu na sadu požadavk¾ na po²íta²ové prost½edky vycházející z profilu využívání prost½edk¾ aktuálními klienty. Plánování kapacity obvykle využívá oba druhy p½edpovídaných údaj¾ p½i odhadování budoucích požadavk¾ pracovního zatížení a druh¾ po²íta²ových prost½edk¾ nezbytných ke zvládnutí takových pracovních zatížení. Tento oddíl se zamµ½uje na procedury využitelné ke spojení generovaných denních protokol¾ výkonnostních ²íta²¾ p½i vytvá½ení a udržování databáze obsahující historické záznamy dat využívání po²íta²ových prost½edk¾. Tato data lze dále použít k podpo½e plánování kapacity a dalších funkcí správy systému. Historický záznam výkonnostních dat po²íta²¾ se ozna²uje za výkonnostní databázi (Performance Database neboli PDB). Tento oddíl také popisuje procedury použitelné k sestavení výkonnostní databáze SQL Serveru s využitím nástroj¾ p½íkazového ½ádku popisovaných v kapitole 2, „Nástroje sledování výkonu“. Další oddíl této kapitoly nazvaný „Práce s repozitá½em SQL Serveru“ probírá použití nástroj¾ jako Microsoft Excel k analýze dat v PDB SQL Serveru a nabízí p½íklad využití Microsoft Excelu k p½edvídání budoucích kapacitních požadavk¾.
Prod SQL Server? Microsoft SQL Server je ideální výkonnostní databází. Nemáte-li s touto aplikací zatím zkušenosti, možná nebudete mít chuÆ pouštµt se do implementování výkonnostní databáze SQL Serveru. M¾žete být ale úplnµ klidní – p½i použití nástroj¾ p½íkazového ½ádku, jakými jsou Logman a Relog, m¾žete docela jednoduše využívat SQL Server k tomuto ú²elu. Microsoft SQL Server je pokro²ilým systémem správy rela²ních databází (Relational Database Management System – RDBMS) vhodným pro tento úkol, zejména pokud se jedná o možnost zpracovávání velkého množství dat pro plánování kapacity, která nakonec shromáždíte. P½i využití SQL Serveru se nemusíte starat o správu velkého po²tu jednotlivých soubor¾ protokol¾ ²íta²¾. Místo toho m¾žete konsolidovat všechna svá historická data na jednom místµ v jedné nebo více tabulkách SQL Serveru. Další výhodou využití aplikace SQL Server jako repozitá½e dat pro plánování kapacity je to, že p½i hlášení nejste omezeni na práci s nástrojem Sledování systému. Jakmile budete mít data protokol¾ ²íta²¾ zavedena do SQL Serveru, m¾žete využívat r¾zné nástroje p½ístupu k dat¾m, hlášení a analýzy. Jedním z neoblíbenµjších a nejvýkonnµjších nástroj¾ analytických hlášení je Microsoft Excel. Oddíl této kapitoly nazvaný „Práce s repozitá½em SQL Serveru“ popisuje, jak používat Microsoft Excel k analýze, hlášení a p½edvídání pomocí výkonnostních dat uložených do PDB SQL Serveru.
Vytváení historických souhrnných protokol K plánování kapacity jsou zapot½ebí historická data shromažÅovaná a ukládaná po delší dobu, aby se projevily historické trendy. Tento oddíl ukazuje, jak lze použít
Postupy denního sledování server
337
nástroj Relog k sumarizaci dat a akumulaci tµchto údaj¾ protokol¾ ²íta²¾ v zájmu podpory plánování kapacity. Soubory sumarizovaných denních protokol¾ ²íta²¾, jež se používají v hlášení pro správu, obsahují p½íliš mnoho podrobností na to, aby je bylo možné ukládat celé týdny, mµsíce a roky. Zvažte opakované spuštµní nástroje Relog na souborech sumarizovaných denních protokol¾ ²íta²¾ vytvá½ených vaší procedurou denního sledování výkonu, aby došlo k jejich další editaci a sumarizaci. P½íklad nabízí výpis 4.10. VÝPIS 4.10: Editace a sumarizace dennÌch protokol˘ ËÌtaˢ relog .basicDailyLog.blg -o .dailyHistoryLog.blg -cf summary-counters-setting-file.txt -f BIN -t 4
Respektive v ²eském prost½edí:
Protože soubory protokol¾ ²íta²¾ definované v našem kódu jako vstup již byly sumarizovány na 15minutové intervaly, zajišÆuje parametr -t 4 další sumarizaci na jednohodinové úrovni. Pro dlouhodobé kapacitní plánování má význam jen malý po²et ²íta²¾. Soubor nastavení protokolu ²íta²¾, na který se odkazuje uvedený p½íkaz Relog, vypouští mnoho hodnot ²íta²¾, které mají z dlouhodobého hlediska jen minimální nebo nulový p½ínos. P½íklad souboru nastavení protokolu ²íta²¾, vhodného pro plánování kapacity na souborovém a tiskovém serveru, je uveden ve výpisu 4.11. VÝPIS 4.11: Soubor nastavenÌ protokolu ËÌtaˢ datab·ze pro pl·nov·nÌ kapacity
a) produkt v angli²tinµ \LogicalDisk(*)\% Free Space \LogicalDisk(*)\Free Megabytes \PhysicalDisk(*)\Avg. Disk sec/Transfer \PhysicalDisk(*)\Avg. Disk sec/Read \PhysicalDisk(*)\Avg. Disk sec/Write \PhysicalDisk(*)\Disk Transfers/sec \PhysicalDisk(*)\Disk Reads/sec \PhysicalDisk(*)\Disk Writes/sec \PhysicalDisk(*)\Disk Bytes/sec \PhysicalDisk(*)\Disk Read Bytes/sec \PhysicalDisk(*)\Disk Write Bytes/sec \PhysicalDisk(*)\Avg. Disk Bytes/Transfer \PhysicalDisk(*)\Avg. Disk Bytes/Read \PhysicalDisk(*)\Avg. Disk Bytes/Write \PhysicalDisk(*)\% Idle Time \Processor(*)\% Processor Time \Processor(*)\% User Time \Processor(*)\% Privileged Time \Processor(*)\Interrupts/sec \Processor(*)\% DPC Time
Postupy pdi sledování výkonu
relog .zakladniDenniProtokol.blg -o .denniHistorickyProtokol.blg -cf soubor-nastaveni-souhrnnych-citacu.txt -f BIN -t 4
338
Kapitola 4 – Postupy pi sledování výkonu
\Processor(*)\% Interrupt Time \Memory\Page Faults/sec \Memory\Available Bytes \Memory\Committed Bytes \Memory\Commit Limit \Memory\Transition Faults/sec \Memory\Cache Faults/sec \Memory\Demand Zero Faults/sec \Memory\Pages/sec \Memory\Pages Input/sec \Memory\Page Reads/sec \Memory\Pages Output/sec \Memory\Pool Paged Bytes \Memory\Pool Nonpaged Bytes \Memory\Page Writes/sec \Memory\Cache Bytes \Memory\Pool Paged Resident Bytes \Memory\System Cache Resident Bytes \Memory\% Committed Bytes In Use \Memory\Available KBytes \Memory\Available MBytes \Memory\Transition Pages RePurposed/sec \Process(svchost,*)\% Processor Time \Process(svchost,*)\% User Time \Process(svchost,*)\% Privileged Time \Process(svchost,*)\Virtual Bytes \Process(svchost,*)\Page Faults/sec \Process(svchost,*)\Working Set \Print Queue(*)\Bytes Printed/sec \Print Queue(*)\Total Pages Printed \Print Queue(*)\Jobs \Network Interface(*)\Bytes Total/sec \Network Interface(*)\Bytes Received/sec \Network Interface(*)\Bytes Sent/sec \IPv4\Datagrams/sec \IPv4\Datagrams Received/sec \IPv4\Datagrams Sent/sec \TCPv4\Segments/sec \TCPv4\Segments Received/sec \TCPv4\Segments Sent/sec
b) produkt s ²eskou lokalizací \Logický \Logický \Fyzický \Fyzický \Fyzický \Fyzický \Fyzický \Fyzický \Fyzický \Fyzický
disk(*)\% volného místa disk(*)\Volné megabajty disk(*)\StÁední doba disku/pÁenos disk(*)\StÁední doba disku/¶tení disk(*)\StÁední doba disku/zápis disk(*)\PÁenosy disku/s disk(*)\tení z disku/s disk(*)\Zápisy na disk/s disk(*)\Bajt disku/s disk(*)\Bajty ¶tení z disku/s
\Fyzický disk(*)\Bajty zapisování na disk/s \Fyzický disk(*)\StÁední po¶et bajt disku/pÁenos \Fyzický disk(*)\StÁední po¶et bajt disku/¶tení \Fyzický disk(*)\StÁední po¶et bajt disku/zápis \Fyzický disk(*)\% ¶asu ne¶innosti \Procesor(*)\% ¶asu procesoru \Procesor(*)\% uživatelského ¶asu \Procesor(*)\% privilegovaného ¶asu \Procesor(*)\PÁerušení/s \Procesor(*)\% ¶asu DPC \Procesor(*)\% ¶asu pÁerušení \Pam¹È\Chyby stránek/s \Pam¹È\Bajty k dispozici \Pam¹È\Sv¹Áené bajty \Pam¹È\Mez sv¹Áení \Pam¹È\Chyby pÁevodu stavu/s \Pam¹È\Chyby mezipam¹ti/s \Pam¹È\Chyby nulových požadavkÂ/s \Pam¹È\Stránky/s \Pam¹È\Vstup stránek/s \Pam¹È\tení stránek/s \Pam¹È\Výstup stránek/s \Pam¹È\Bajty stránkovaného fondu \Pam¹È\Bajty nestránkovaného fondu \Pam¹È\Zápisy stránek/s \Pam¹È\Bajty mezipam¹ti \Pam¹È\Rezidentní bajty stránkovaného fondu \Pam¹È\Rezidentní bajty systémové mezipam¹ti \Pam¹È\% využití sv¹Áených bajt \Pam¹È\Po¶et kB k dispozici \Pam¹È\Po¶et MB k dispozici \Pam¹È\Zm¹n ú¶elu stran pÁenosu/s \Proces(svchost,*)\% ¶asu procesoru \Proces(svchost,*)\% uživatelského ¶asu \Proces(svchost,*)\% privilegovaného ¶asu \Proces(svchost,*)\Virtuální bajty \Proces(svchost,*)\Chyby stránek/s \Proces(svchost,*)\Pracovní sada \Tisková fronta(*)\Po¶et bajt vytisknutých za sekundu \Tisková fronta(*)\Celkový po¶et vytisknutých stránek \Tisková fronta(*)\Po¶et úloh \Rozhraní sít¹(*)\Bajty celkem/s \Rozhraní sít¹(*)\PÁijaté bajty/s \Rozhraní sít¹(*)\Odeslané bajty/s \IPv4\Datagramy/s \IPv4\PÁijaté datagramy/s \IPv4\Odeslané datagramy/s \TCPv4\Segmenty/s \TCPv4\PÁijaté segmenty/s \TCPv4\Odeslané segmenty/s
339
Postupy pdi sledování výkonu
Postupy denního sledování server
340
Kapitola 4 – Postupy pi sledování výkonu
Jak bylo právµ zmínµno, jelikož má pro plánování kapacity význam jen malý po²et ²íta²¾, soubor nastavení protokolu ²íta²¾ m¾že být ještµ stru²nµjší než náš p½íklad ve výpisu 4.11. Zde se zachovávají jen vysokoúrov¹ové statistiky využití procesoru, pamµti, disku a sítµ spole²nµ s ur²itými statistikami proces¾ aplikací serveru a statistik souvisejících s pracovním zatížením a propustností tiskárny. Akumulování historických dat Procedura p½íkazu Relog (viz výpis 4.10) konstruuje binární protokol ²íta²¾ z denního souboru a sumarizuje jej na jednohodinové intervaly. Hodinové intervaly jsou vhodné pro dlouhodobé plánování kapacity, p½edvídání zatížení a zachycování trend¾. V p½ípadµ plánování kapacity budete muset sestavit a spravovat soubor sumarizovaných historických protokol¾ ²íta²¾, který bude obsahovat informace v rozsahu týdn¾, mµsíc¾ a dokonce i rok¾. Toho dosáhnete použitím volby p½ipojení dat v nástroji Relog. Kup½íkladu dále uvedený p½íkaz využívá Relog parametr -a k doplnµní denního sumarizovaného protokolu ²íta²¾ k souboru protokolu ²íta²¾, jenž obsahuje nashromáždµné historické údaje: relog .dailyHistoryLog.blg –o .historyPerformanceLog.blg -f BIN -a
Respektive v ²eském prost½edí: relog .denniHistorickyProtokol.blg -o .historickyProtokolVykonu.blg -f BIN -a
Volba -a p½edpokládá existenci výstupního souboru protokolu ²íta²¾.
Vytvoení výkonnostní databáze SQL Serveru Než budete moci použít nástroje p½íkazového ½ádku jako Logman a Relog k naplnµní výkonnostní databáze SQL Serveru, musíte si nainstalovat instanci tohoto programu a definovat a nakonfigurovat databázi SQL Serveru, kterou budete používat jako PDB. M¾žete si nainstalovat samostatnou instanci SQL Serveru používanou výhradnµ jako PDB, nebo sdílet SQL Server s ostatními aplikacemi. Jakmile vyberete instanci SQL Serveru, kterou máte v úmyslu používat, definujte výkonnostní databázi následujícími kroky: 1. Nadefinujte databázi, do níž chcete ukládat výkonnostní data. Pomocí konzoly SQL Enterprise Manager definujte novou databázi a alokujte diskový prostor pro ni a jí p½idružený protokol obnovy databáze. V našem p½íkladu jsme využívanou databázi nazvali PDB. Jakmile je tato databáze vytvo½ená, m¾žete p½istupovat k systémovým tabulkám, jež se sestavují automaticky. 2. Definujte pravidla zabezpe³ení této databáze. Zabezpe²ení je zásadní prvek správy databází SQL Serveru. Dokud specificky nezadáte p½ístupová oprávnµní, žádní externí uživatelé se nemohou k databázi p½ipojit a získat p½ístup k informacím uloženým v databázi PDB. Musíte nadefinovat p½inejmenším jedno nové p½ihlášení k databázi a danému uživateli umožnit p½ístup k PDB, jak to zachycuje obrázek 4.12. V našem p½ípadµ je nové p½ihlášení k databázi ozna²eno PDBAccess a má standardnµ p½ístup k databázi PDB.
Postupy denního sledování server
341
Vaše používaná instance SQL Serveru musí být nastavena tak, aby využívala pouze ovµ½ování Microsoft Windows NT. Navíc je nutné definovat pojmenovaného uživatele s odpovídajícími údaji, kterým je v našem p½ípadµ uživatel nazvaný PDB-Access. Na úrovni databáze PDB musíte rovnµž definovat oprávnµní platná pro právµ zadané p½ihlášení. Obrázek 4.13 ukazuje vlastnosti uživatele databáze PDB pro p½ihlášení PDB-Access. Ú²et má v našem p½ípadµ oprávnµní používat všechny dostupné bezpe²ností role databáze. Tomuto p½ihlášení musíte p½i½adit p½inejmenším oprávnµní db_owner a db_datawriter. Role db_owner mu umožní definovat, p½idávat a mµnit databázové tabulky a db_datawriter umož¹uje uživateli aktualizovat data a p½idávat je do definovaných tabulek. 3. Definujte p¾ipojení ODBC používané pro p¾ístup k dané databázi PDB. Aby mohly k databázi p½istupovat programy jako utilita Relog, služba Výstrahy a protokolování výkonu, konzola Sledování systému kv¾li hlášení a Microsoft Excel p½i extrakci dat a jejich analýze, musíte definovat systémové p½ipojení DSN. Pomocí správce ODBC p½idejte nové systémové p½ipojení DSN, které bude používat pro umožnµní p½ístupu k právµ definované databázi PDB ovlada² SQL Serveru – podívejte se na obrázek 4.14. Tím se spustí pr¾vodce p½ipojením ODBC, jenž vám umožní toto p½ipojení nastavit, jak jej zachycuje obrázek 4.15. Musíte zadat název p½ipojení, jak je tu uvedeno, a p½ipojení nasmµrovat na p½íslušnou instanci a databázi SQL Serveru. V našem p½íkladu je názvem p½ipojení PDB. Dále je zapot½ebí zadat údaje o zabezpe²ení tohoto p½ipojení, jak zachycuje obrázek 4.16.
Postupy pdi sledování výkonu
OBRÁZEK 4.12: Definování nového pdihlášení k databázi
342
Kapitola 4 – Postupy pi sledování výkonu
OBRÁZEK 4.13: Vlastnosti databázového uživatele s pdihlášením PDB-Access
OBRÁZEK 4.14: Umožn?ní pdístupu k databázi PDB prostdednictvím ovlada:e SQL Serveru
Zaškrtávací polí²ko Connect To SQL Server To Obtain Default Settings For The Additional Configuration Options, které je na obrázku 4.16 aktivované, vám dovoluje plnµ otestovat oprávnµní daného p½ipojení, jakmile je jeho definice dokon²ena. Pokra²ujte ve vypl¹ování formulá½¾ nabízených pr¾vodcem p½ipojení ODBC a testování p½ipojení uzav½ete stiskem tla²ítka Finish.
Postupy denního sledování server
343
Postupy pdi sledování výkonu
OBRÁZEK 4.15: Práce s prSvodcem pdipojení ODBC
OBRÁZEK 4.16: Ov?dení autenti:nosti pdipojení
Zaplngní repozitáe Po nadefinování p½ipojení ODBC m¾žete za²ít s nahráváním dat protokol¾ ²íta²¾ do vytvo½ené databáze PDB. Protože máte v plánu v PDB nashromáždit velké množství historických informací o výkonu, dokonce i sumarizovaný denní protokol ²íta²¾, který jste vytvo½ili kv¾li sestavování denních hlášení pro správu, obsahuje mnohem více dat, než je pro ú²ely plánování kapacity zapot½ebí. Podobnµ jako v p½ípadµ zpracování zadaného p½i údržbµ historického protokolu ²íta²¾ v binárním formátu, jak bylo probíráno v oddílu „Vytvá½ení historických souhrnných protokol¾“, bude vhodné tyto údaje dále sumarizovat a vypustit všechny ²íta²e, jejichž zachovávání po delší dobu nemá význam. Kup½íkladu dále uvedený p½íkaz Relog p½ebírá jeden nebo více sumarizovaných denních soubor¾ protokol¾ ²íta²¾, které vytvá½ejí soubor historie, a vkládá výstup do databáze PDB:
344
Kapitola 4 – Postupy pi sledování výkonu
relog .historyPerformanceLog.blg -o "SQL:PDB! ByHour" –f SQL –cf c:\perflogs\summary-counters-setting-file.txt
Respektive v ²eském prost½edí: relog .historickyProtokolVykonu.blg -o "SQL:PDB!Hodinove" -f SQL -cf c:\perflogs\soubor-nastaveni-souhrnnych-citacu.txt
Specifikace výstupního souboru, -o „SQL:PDB!Hodinove“, identifikuje p½ipojení ODBC nazvané PDB a definuje pododdíl databáze PDB nazvaný Hodinove. V jedné databázi PDB m¾žete definovat nµkolik databází pro plánování kapacity, když je budete identifikovat odlišnými názvy. Jakmile se vykoná uvedený p½íkaz, vytvo½í tabulky databáze PDB používané k ukládání dat protokolu ²íta²¾. Prost½ednictvím konzoly SQL Enterprise Manager si m¾žete ovµ½it, že tabulky protokol¾ ²íta²¾ byly správnµ vytvo½eny. Obrázek 4.17 zachycuje stav databáze PDB po vykonání p½íkazu Relog, který se odkazuje na p½ipojení ODBC v databázi PDB aplikace SQL Server.
OBRÁZEK 4.17: Stav databáze PDB po vykonání pdíkazu Relog
Data protokolu ²íta²¾ jsou uložena ve t½ech tabulkách SQL Serveru – CounterData, CounterDetails a DisplayToID. Formát tµchto tabulek SQL Serveru odráží datový model používaný nástroji a službami sledování výkonu k udržování repozitá½e dat protokolu ²íta²¾ SQL Serveru. Tento datový model je detailnµ probírán v oddílu nazvaném „Práce s repozitá½em SQL Serveru“.
Automatizované zpracování protokol dítad V p½edchozích oddílech této kapitoly byly na²rtnuty procedury vykonávající následující funkce: ShromažÅování denních protokol¾ výkonnostních ²íta²¾, sbµr diagnostických protokol¾ ²íta²¾ v reakci na výstrahy, sumarizování denních protokol¾ výkonnostních ²íta²¾ p½i sestavování hlášení pro správu, zaplnµní repozitá½e v SQL Serveru, který lze používat p½i plánování kapacity.
Postupy denního sledování server
345
Jedná se o funkce, jež je zapot½ebí vykonávat automaticky na všech po²íta²ích se systémem Windows Server 2003, které vyžadují trvalé monitorování výkonu. V tomto oddílu najdete ukázkový skript zajišÆující automatizaci uvedených denních procedur. Tento skript je napsán v jazyce VBScript a m¾žete jej snadno p½izp¾sobit svému prost½edí. Bude se odkazovat na soubory nastavení ²íta²¾ ukázané v p½edchozích oddílech, jež vytvá½ejí sumarizované soubory protokol¾ ²íta²¾ a využívají databázi PDB v SQL Serveru definovanou v p½edchozím oddílu. Úplný skript následného zpracování je uveden ve výpisu 4.12. Je rozsáhle okomentovaný a naplnµný zprávami Wscript.Echo; všechny tyto informace vám umožní skript jednoduše upravit tak, aby lépe vyhovµl konkrétním požadavk¾m vašeho prost½edí. Chcete-li aktivovat zmínµné diagnostické zprávy Wscript.Echo, odstra¹te zna²ku komentá½e Microsoft Visual Basicu, což je znak apostrofu ('). ‘VBscript for post-processing daily performance Counter Logs ‘ ‘Initialization CreatedTodayDate = Now Const OverwriteExisting = True Const LogType = "blg" Const OldLogType = "Windows Backup File" Const PMFileType = "Performance Monitor File" Const relogSettingsFileName = "c:\perflogs\relog-counters-setting-file.txt" Const relogParms = "-f BIN -t 15" Const relogSummaryParms = "-f BIN -t 4" Const relogHistoryParms = "-f BIN -a" Const HistorySettingsFileName = "c:\perflogs\summary-counters-settingfile.txt" Const PerflogFolderToday = "C:\Perflogs\Today" Const PerflogFolderYesterday = "C:\Perflogs\Yesterday" Const PerflogFolderAlerts = "C:\Perflogs\Alert Logs" Const PerflogFolderHistory = "C:\Perflogs\History" Set WshShell = CreateObject("Wscript.Shell") Set objEnv = WshShell.Environment("Process") LogonServer = objENV("COMPUTERNAME") DailyFileName = PerflogFolderYesterday & "\" & LogonServer & "." & _ "basic_daily_logDailyLog" & "." & LogType SummaryFileName = PerflogFolderYesterday & "\" & LogonServer & "." & _ "basic_history_logHistoryLog" & "." & LogType HistoryFileName = PerflogFolderHistory & "\" & LogonServer & "." & _ "history_performance_logPerformanceLog" & "." & LogType ‘WScript.Echo DailyFileName ‘WScript.Echo SummaryFileName ‘WScript.Echo HistoryFileName Const AlertDaysOld = 3 ‘Number of days to keep Alert-generated Counter Log files Set objFSO1 = CreateObject("Scripting.FileSystemObject")
Postupy pdi sledování výkonu
Výpis 4.12 Ukázkový skript následného zpracování
346
Kapitola 4 – Postupy pi sledování výkonu
If objFSO1.FolderExists(PerflogFolderYesterday) Then Set objYesterdayFolder = objFSO1.GetFolder(PerflogFolderYesterday) Else Wscript.Echo "Yesterday folder does not exist. Will create " & PerflogFolderYesterday Set objYesterdayFolder = objFSO1.CreateFolder(PerflogFolderYesterday) End If Set objYesterdayFolder = objFSO1.GetFolder(PerflogFolderYesterday) Set objTodayFolder = objFSO1.GetFolder(PerflogFolderToday) Set objAlertsFolder = objFSO1.GetFolder(PerflogFolderAlerts) ‘Wscript.Echo "Begin Script Body" objYesterdayFolder.attributes = 0 Set fc1 = objYesterdayFolder.Files ‘Wscript.Echo "Look for Yesterday's older backup files..." For Each f1 in fc1 ‘Wscript.Echo "Found " & f1.name & " in " & PerflogFolderYesterday ‘Wscript.Echo "File type is " & f1.type If f1.type = OldLogType Then ‘Wscript.Echo "Old files of type " & f1.type & " will be deleted." filename = PerflogFolderYesterday & "\" & f1.name ‘Wscript.Echo "Delete " & filename objFSO1.DeleteFile(filename) End If Next ‘Wscript.Echo "Look for Yesterday's .blg files..." For Each f1 in fc1 ‘Wscript.Echo "Found " & f1.name & " in " & PerflogFolderYesterday If f1.type = PMFileType Then NewName = PerflogFolderYesterday & "\" & f1.name & "." & "bkf" ‘Wscript.Echo f1.name & " will be renamed to " & NewName filename = PerflogFolderYesterday & "\" & f1.name ‘Wscript.Echo "Rename " & filename objFSO1.MoveFile filename, NewName End If Next objYesterdayFolder.attributes = 0 ‘Wscript.Echo "Look at Today's files..." ‘Wscript.Echo "Today is " & CStr(CreatedTodayDate) Set fc2 = objTodayFolder.Files For Each f2 in fc2 filename = PerflogFolderToday & "\" & f2.name FileCreatedDate = CDate (f2.DateCreated) ‘Wscript.Echo filename & " was created on " & CStr (FileCreatedDate) If DateDiff ("d", CreatedTodayDate, FileCreatedDate) = 0 Then ‘Wscript.Echo "Skipping the file currently in use: " & filename Else ‘Wscript.Echo filename & " is " & CStr(DateDiff("d", FileCreatedDate, CreatedTodayDate)) & " day(s) old." ‘Wscript.Echo "Copying " & filename & " to " & PerflogFolderYesterday objFSO1.CopyFile filename, PerflogFolderYesterday & "/"
relogfiles = relogfiles & PerflogFolderYesterday & "\" & f2.name & " " End If Next ‘Wscript.Echo "Today's files to send to relog: " & relogfiles command = "relog " & relogfiles & "" -o " & DailyFileName & " -cf " _ & relogSettingsFileName & " " & relogParms ‘Wscript.Echo "Relog command string: " & command Set WshShell = Wscript.CreateObject("WScript.Shell") Set execCommand = WshShell.Exec(command) Wscript.Echo execCommand.StdOut.ReadAll command = "relog " & DailyFileName & _ " -o " & SummaryFileName & " -cf " & HistorySettingsFileName _ & " " & relogSummaryParms ‘Wscript.Echo "Relog command string: " & command Set WshShell = Wscript.CreateObject("WScript.Shell") Set execCommand = WshShell.Exec(command) Wscript.Echo execCommand.StdOut.ReadAll If (objFSO1.FileExists(HistoryFileName)) Then command = "relog " & HistoryFileName & " " & SummaryFileName & _ " -o " & HistoryFileName & " " & relogHistoryParms ‘Wscript.Echo "Relog command string: " & command Set WshShell = Wscript.CreateObject("WScript.Shell") Set execCommand = WshShell.Exec(command) Wscript.Echo execCommand.StdOut.ReadAll Else objFSO1.CopyFile SummaryFileName, HistoryFileName End If ‘Copy the summarized daily file to a Counter Log data consolidation server ‘ objFSO1.CopyFile DailyFileName, <somewhere> ‘Wscript.Echo "Deleting files after processing" For Each f2 in fc2 filename = PerflogFolderToday & "\" & f2.name FileCreatedDate = CDate (f2.DateCreated) If DateDiff ("d", CreatedTodayDate, FileCreatedDate) = 0 Then ‘Wscript.Echo "Skipping the file currently in use: " & filename Else ‘Wscript.Echo "Deleting " & filename & " from " & PerflogFolderToday objFSO1.DeleteFile(filename) End If Next Set fc3 = objAlertsFolder.Files ‘Wscript.Echo "Look for older Alert-generated log files ..." For Each f3 in fc3 ‘Wscript.Echo "Found " & f3.name & " in " & PerflogFolderAlerts filename = PerflogFolderAlerts & "\" & f3.name FileCreatedDate = CDate (f3.DateCreated) ‘Wscript.Echo filename & " is " & CStr(DateDiff("d", FileCreatedDate, CreatedTodayDate)) & " day(s) old." If DateDiff ("d", FileCreatedDate, CreatedTodayDate) < AlertDaysOld Then ‘Wscript.Echo "Skipping recently created Alert Counter Log file: " & filename Else
347
Postupy pdi sledování výkonu
Postupy denního sledování server
348
Kapitola 4 – Postupy pi sledování výkonu
‘Wscript.Echo "Deleting " & filename & " from " & PerflogFolderToday objFSO1.DeleteFile(filename) End If Next
Respektive v ²eském prost½edí: 'VBScript pro další zpracování denních protokol výkonnostních ¶íta¶Â ' 'Inicializace DnesniDatumVytvoreni = Now Const Const Const Const
PrepsatExistujici = True TypProtokolu = "blg" StaryTypProtokolu = "Windows Backup File" TypSouboruSV = "Performance Monitor File"
Const NazevSouboruPrenastaveniProtokolu = "c:\perflogs\soubor-prenastavenicitacu-protokolu.txt" Const parametryPrenastaveni = "-f BIN -t 15" Const parametryPrenastaveniSouhrnu = "-f BIN -t 4" Const parametryPrenastaveniHistorie = "-f BIN -a" Const SouborNastaveniSouhrnnychCitacu = "c:\perflogs\soubor-nastavenisouhrnnych-citacu.txt" Const Const Const Const
SlozkaPerflogDnes = "C:\Perflogs\Dnes" SlozkaPerflogVcera = "C:\Perflogs\Vcera" SlozkaPerflogVystrahy = "C:\Perflogs\Protokoly vystrah" SlozkaPerflogHistorie = "C:\Perflogs\Historie"
Set WshShell = CreateObject("Wscript.Shell") Set objEnv = WshShell.Environment("Process") PrihlasovaciServer = objENV("COMPUTERNAME") NazevDennihoSouboru = SlozkaPerflogVcera & "\" & PrihlasovaciServer & _ "." & "zakladni_denni_protokol" & "." & TypProtokolu NazevSouboruSouhrnu = SlozkaPerflogVcera & "\" & PrihlasovaciServer & _ "." & "zakladni_historicky_protokol" & "." & TypProtokolu NazevSouboruHistorie = SlozkaPerflogHistorie & "\" & PrihlasovaciServer & _ "." & "protokol_historie_vykonnosti" & "." & TypProtokolu 'WScript.Echo NazevDennihoSouboru 'WScript.Echo NazevSouboruSouhrnu 'WScript.Echo NazevSouboruHistorie 'Po¶et dn zachování soubor protokol ¶íta¶Â generovaných výstrahami Const PocetDnuVystrahy = 3 Set objFSO1 = CreateObject("Scripting.FileSystemObject") If objFSO1.FolderExists(SlozkaPerflogVcera) Then Set objSlozkaVcera = objFSO1.GetFolder(SlozkaPerflogVcera) Else
Postupy denního sledování server
349
Wscript.Echo "Složka Vcera neexistuje. Dojde k vytvoÁení složky " & _ SlozkaPerflogVcera Set objSlozkaVcera = objFSO1.CreateFolder(SlozkaPerflogVcera) End If Set objSlozkaVcera = objFSO1.GetFolder(SlozkaPerflogVcera) Set objDnesFolder = objFSO1.GetFolder(SlozkaPerflogDnes) Set objAlertsFolder = objFSO1.GetFolder(SlozkaPerflogVystrahy)
'Wscript.Echo "Hledání starších záložních soubor ve složce Vcera..." For Each f1 in fc1 'Wscript.Echo "Nalezen soubor " & f1.name & " v " & SlozkaPerflogVcera 'Wscript.Echo "Typem souboru je " & f1.type If f1.type = StaryTypProtokolu Then 'Wscript.Echo "Staré soubory typu " & f1.type & " budou odstran¹ny." nazev_souboru = SlozkaPerflogVcera & "\" & f1.name 'Wscript.Echo "Odstran¹ní souboru " & nazev_souboru objFSO1.DeleteFile(nazev_souboru) End If Next 'Wscript.Echo "Hledání soubor .blg ve složce Vcera..." For Each f1 in fc1 'Wscript.Echo "Nalezen soubor " & f1.name & " v " & SlozkaPerflogVcera If f1.type = TypSouboruSV Then NovyNazev = SlozkaPerflogVcera & "\" & f1.name & "." & "bkf" 'Wscript.Echo f1.name & " bude pÁejmenován na " & NovyNazev nazev_souboru = SlozkaPerflogVcera & "\" & f1.name 'Wscript.Echo "PÁejmenování souboru " & nazev_souboru objFSO1.MoveFile nazev_souboru, NovyNazev End If Next objSlozkaVcera.attributes = 0 'Wscript.Echo "Hledání soubor ve složce Dnes..." 'Wscript.Echo "Dnes je " & CStr(DnesniDatumVytvoreni) Set fc2 = objDnesFolder.Files For Each f2 in fc2 nazev_souboru = SlozkaPerflogDnes & "\" & f2.name DatumVytvoreniSouboru = CDate(f2.DateCreated) 'Wscript.Echo nazev_souboru & " byl vytvoÁen " & CStr (DatumVytvoreniSouboru) If DateDiff ("d", DnesniDatumVytvoreni, DatumVytvoreniSouboru) = 0 Then 'Wscript.Echo "PÁesko¶ení aktuáln¹ používaného souboru: " & _ nazev_souboru Else
Postupy pdi sledování výkonu
'Wscript.Echo "Za¶átek t¹la skriptu" objSlozkaVcera.attributes = 0 Set fc1 = objSlozkaVcera.Files
350
Kapitola 4 – Postupy pi sledování výkonu
'Wscript.Echo nazev_souboru & " je " & CStr(DateDiff("d", DatumVytvoreniSouboru, DnesniDatumVytvoreni) ) & " dnu stary." 'Wscript.Echo "Kopírování " & nazev_souboru & " do " & _ SlozkaPerflogVcera objFSO1.CopyFile nazev_souboru, SlozkaPerflogVcera & "/" prenastavene_soubory = prenastavene_soubory & SlozkaPerflogVcera & _ "\" & f2.name & " " End If Next 'Wscript.Echo "Soubory složky Dnes odesílané na pÁeprotokolování: " & _ prenastavene_soubory prikaz = "relog " & prenastavene_soubory & "" -o " & _ NazevDennihoSouboru & " -cf " & NazevSouboruPrenastaveniProtokolu & _ " " & parametryPrenastaveni 'Wscript.Echo "§et¹zec pÁíkazu Relog: " & prikaz Set WshShell = Wscript.CreateObject("WScript.Shell") Set vykonavanyPrikaz = WshShell.Exec(prikaz) Wscript.Echo vykonavanyPrikaz.StdOut.ReadAll prikaz = "relog " & NazevDennihoSouboru & " -o " & _ NazevSouboruSouhrnu & " -cf " & SouborNastaveniSouhrnnychCitacu & " " _ & parametryPrenastaveniSouhrnu 'Wscript.Echo "§et¹zec pÁíkazu Relog: " & prikaz Set WshShell = Wscript.CreateObject("WScript.Shell") Set vykonavanyPrikaz = WshShell.Exec(prikaz) Wscript.Echo vykonavanyPrikaz.StdOut.ReadAll If (objFSO1.FileExists(NazevSouboruHistorie)) Then prikaz = "relog " & NazevSouboruHistorie & " " & NazevSouboruSouhrnu & _ " -o " & NazevSouboruHistorie & " " & parametryPrenastaveniHistorie 'Wscript.Echo "§et¹zec pÁíkazu Relog: " & prikaz Set WshShell = Wscript.CreateObject("WScript.Shell") Set vykonavanyPrikaz = WshShell.Exec(prikaz) Wscript.Echo vykonavanyPrikaz.StdOut.ReadAll Else objFSO1.CopyFile NazevSouboruSouhrnu, NazevSouboruHistorie End If 'Zkopírovat souhrnný denní soubor na konsolida¶ní server dat protokol ¶íta¶Â ' objFSO1.CopyFile NazevDennihoSouboru, 'Wscript.Echo "Odstran¹ní soubor po zpracování" For Each f2 in fc2 nazev_souboru = SlozkaPerflogDnes & "\" & f2.name DatumVytvoreniSouboru = CDate(f2.DateCreated) If DateDiff ("d", DnesniDatumVytvoreni, DatumVytvoreniSouboru) = 0 Then
Postupy denního sledování server
351
'Wscript.Echo "PÁesko¶ení aktuáln¹ používaného souboru " & _ nazev_souboru Else 'Wscript.Echo "Odstran¹ní " & nazev_souboru & " z " & SlozkaPerflogDnes objFSO1.DeleteFile(nazev_souboru) End If Next
'Wscript.Echo "Hledání starších soubor protokol generovaných výstrahami..." For Each f3 in fc3 'Wscript.Echo "Nalezen " & f3.name & " v " & SlozkaPerflogVystrahy nazev_souboru = SlozkaPerflogVystrahy & "\" & f3.name DatumVytvoreniSouboru = CDate(f3.DateCreated) 'Wscript.Echo nazev_souboru & " je " & CStr(DateDiff("d", DatumVytvoreniSouboru, DnesniDatumVytvoreni)) & " dn starý." If DateDiff ("d", DatumVytvoreniSouboru, DnesniDatumVytvoreni) < PocetDnuVystrahy Then 'Wscript.Echo "PÁeskok nedávno vytvoÁeného souboru protokol ¶íta¶Â výstrah: " & nazev_souboru Else 'Wscript.Echo "Odstran¹ní " & nazev_souboru & " z " & SlozkaPerflogDnes objFSO1.DeleteFile(nazev_souboru) End If Next
Uvedený ukázkový skript bude automaticky spouštµt služba Performance Logs and Alerts (Výstrahy a protokolování výkonu), jakmile smlogsvc uzav½e jeden denní protokol ²íta²¾ a otev½e následující. K automatickému spuštµní skriptu v okamžiku, kdy chcete vykonat kroky následného zpracování, m¾žete využít také Task Scheduler (Plánova² úloh). Následující oddíly detailnµ probírají logiku využívanou ve skriptu dalšího zpracování pro p½ípad, že si jej budete chtít p½izp¾sobit.
Inicializace skriptu Oddíl inicializace našeho ukázkového skriptu nastavuje po²áte²ní hodnoty ½ady používaných konstant. Zmµnou po²áte²ních hodnot tµchto konstant m¾žete snadno zmµnit chování skriptu tak, aby vyhovovalo vašemu prost½edí, aniž by bylo zapot½ebí mµnit vlastní logiku skriptu. Kup½íkladu následující ½ádky nastavují po²áte²ní hodnoty ²ty½ ½etµzcových promµnných, jež se odkazují na složky obsahující protokoly ²íta²¾ spravované skriptem: Const Const Const Const
SlozkaPerflogDnes = "C:\Perflogs\Dnes" SlozkaPerflogVcera = "C:\Perflogs\Vcera" SlozkaPerflogVystrahy = "C:\Perflogs\Protokoly vystrah" SlozkaPerflogHistorie = "C:\Perflogs\Historie"
P½edpokládá se, že SlozkaPerflogDnes ukazuje na místo, kam služba Výstrahy a protokolování výkonu zapisuje denní protokoly ²íta²¾. Také se p½edpokládá, že
Postupy pdi sledování výkonu
Set fc3 = objAlertsFolder.Files
352
Kapitola 4 – Postupy pi sledování výkonu
SlozkaPerflogVystrahy smµ½uje na složku, kam se zapisují protokoly ²íta²¾ spuštµ-
né hodinovým sledováním výstrah. Skript bude p½esunovat v²erejší protokoly ²íta²¾ C:\Perflogs\Dnes do C:\Perflogs\Vcera, p½i²emž složku ze složky C:\Perflogs\Vcera vytvo½í, jestliže zatím neexistuje. Skript bude také odstra¹ovat protokoly ²íta²¾ ze složky C:\Perflogs\Protokoly vystrah, jakmile jsou starší než t½i dny. Další konstanta, nazvaná PocetDnuVystrahy, obsahuje kritérium zastarávání platné pro složku Protokoly vystrah. Chcete-li zachovávat diagnostické protokoly ²íta²¾ vygenerované automaticky spuštµním podmínek výstrah po dobu 10 dn¾, sta²í zmµnit inicializa²ní hodnotu promµnné PocetDnuVystrahy takto: Const PocetDnuVystrahy = 10
Pro p½ístup k vestavµné promµnné prost½edí COMPUTERNAME používá skript objekt WshShell. Zmínµná promµnná se používá k vytvo½ení názvu souboru sumarizovaného protokolu ²íta²¾, který nástroj relog vytvo½í z jakéhokoli nalezeného detailního protokolu ²íta²¾. Když bude mít soubor protokolu ²íta²¾ ve svém názvu ozna²ení po²íta²e, z nµhož pochází, bude snáze identifikovatelný. Set WshShell = CreateObject("Wscript.Shell") Set objEnv = WshShell.Environment("Process") PrihlasovaciServer = objENV("COMPUTERNAME") NazevDennihoSouboru = SlozkaPerflogVcera & "\" & PrihlasovaciServer & _ "." & "zakladni_denni_protokol" & "." & TypProtokolu 'WScript.Echo NazevDennihoSouboru
Po inicializaci tµchto a dalších konstant skript inicializuje objekt FileSystemObject , který používá k vykonání r¾zných operací správy soubor¾ v ur²ených složkách a v nich obsažených souborech protokol¾ ²íta²¾: Set objFSO1 = CreateObject("Scripting.FileSystemObject")
Objekt FileSystemObject se pak používá k identifikaci složek soubor¾, v nichž skript pracuje. Kup½íkladu dále uvedený kód inicializuje promµnnou nazvanou fc1, což je kolekce obsahující soubory ve složce C:\Perflog\Vcera: Set objSlozkaVcera = objFSO1.GetFolder(SlozkaPerflogVcera) Set fc1 = objSlozkaVcera.Files
Odstrangní vderejších soubor zálohy Tµlo skriptu za²íná vý²tem soubor¾ ve složce C:\Perflogs\Vcera, kde jsou uloženy starší protokoly ²íta²¾. V tomto okamžiku se odstraní všechny soubory ve složce C:\Perflogs\Vcera, které odpovídají StaryTypProtokolu. Následující oddíl skriptu p½ejmenuje všechny soubory .blg, které nalezne ve složce C:\Perflogs\Vcera, na názvy s p½íponou StaryTypProtokolu, která se k názvu souboru p½idá v následující sekci kódu: For Each f1 in fc1 If f1.type = TypSouboruSV Then nazev_souboru = SlozkaPerflogVcera & "\" & f1.name NovyNazev = SlozkaPerflogVcera & "\" & f1.name & "." & "bkf" objFSO1.MoveFile nazev_souboru, NovyNazev End If Next
Postupy denního sledování server
353
Ukázkový skript inicializuje hodnotu StaryTypProtokolu tak, aby odpovídala souboru zálohy systému Windows (Windows Backup File), který používá p½íponu .bkf. Tento údaj m¾žete zmµnit na jakoukoli hodnotu používanou ve vašem prost½edí. (Alternativnµ lze rozdµlit ½etµzec názvu souboru na ²ásti a zjistit jeho p½íponu.) D¾sledkem tohoto zpracování soubor¾ ve složce C:\Perflogs\Vcera je to, že ta bude nyní obsahovat protokoly ²íta²¾ ze v²erejška a záložní verze protokol¾ ²íta²¾ použitých p½edev²írem. Tím vzniká ur²ité bezpe²nostní pásmo umož¹ující vám vrátit se p½inejmenším celý jeden den zpµt, když se v procedu½e následného zpracování denních protokol¾ ²íta²¾ nµco pokazí.
Skript pak prochází soubory protokol¾ ²íta²¾ ve složce C:\Perflogs\Dnes. Zde bude binární soubor protokol¾ ²íta²¾, kam se zapisují aktuální namµ½ené údaje, a také všechny p½edchozí protokoly ²íta²¾, které lze nyní zpracovat. Skript stanoví, zda jsou soubory protokol¾ ²íta²¾ ve složce C:\Perflogs\Dnes p½ipraveny ke zpracování, porovnáním jejich data vytvo½ení s aktuálním datem. Soubory ve složce C:\Perflogs\ Dnes z p½edchozího dne se pak s využitím funkce DateDiff zkopírují do složky C:\Perflogs\Vcera. Mezitím se názvy dále kopírovaných soubor¾ kupí v ½etµzcové promµnné nazvané prenastavene_soubory, která se použije dále ve skriptu.
Vytvoení sumarizovaných protokol dítad Jakmile jsou zpracovány všechny starší protokoly ²íta²¾ ve složce C:\Perflogs\Dnes, skript vykoná nástroj Relog prost½ednictvím metody Exec objektu WshShell: prikaz = "relog " & prenastavene_soubory & "-o " & NazevDennihoSouboru & _ " -cf " & NazevSouboruPrenastaveniProtokolu & " " & parametryPrenastaveni Set WshShell = Wscript.CreateObject("WScript.Shell") Set vykonavanyPrikaz = WshShell.Exec(prikaz)
Tím se vytvo½í binární protokol ²íta²¾ ozna²ený ½etµzcovou promµnnou NazevDennihoSouboru a sumarizovaný do patnáctiminutových interval¾. £ádek následující za voláním utility Relog vám zajišÆuje p½ístup ke všem výstupním zprávám nástroje Relog, jakmile odstraníte znak komentá½e a volání Wscript.Echo aktivujete: 'Wscript.Echo vykonavanyPrikaz.StdOut.ReadAll
Jakmile nástroj Relog vytvo½í tento sumarizovaný denní protokol ²íta²¾, bude z½ejmµ zapot½ebí p½idat krok zpracování, v nµmž se denní protokol zkopíruje do protokolu ²íta²¾ na konsolida²ním serveru nµkde ve vaší síti. NahraÅte následující ½ádky komentá½¾, které vyhrazují místo pro toto zpracování, kódem zajišÆujícím p½enos souboru na ur²ený konsolida²ní server ve vašem prost½edí: 'Zkopírovat souhrnný denní soubor na konsolida¶ní server dat protokol ¶íta¶Â ' objFSO1.CopyFile NazevDennihoSouboru,
Skript vydá druhý p½íkaz Relog zajišÆující sumarizaci denního protokolu na jednohodinové intervaly. Následnµ znovu použije Relog k p½idání tohoto protokolu ²íta²¾ k souboru historického souhrnu ve složce C:\Perflogs\Historie, který je rovnµž
Postupy pdi sledování výkonu
Správa vderejších denních protokol dítad
354
Kapitola 4 – Postupy pi sledování výkonu
hodinovµ sumarizován. Na konci tohoto kroku bude ve složce C:\Perflogs\Historie soubor nazvaný .protokol_historie_vykonnosti.blg, který obsahuje všechna nashromáždµná historická data sumarizovaná do hodinových interval¾. Protože souhrnný historický soubor bude r¾st tempem p½ibližnµ 300 až 500 KB za den, bude vhodné periodicky jej zálohovat na dlouhodobé úložištµ na jiném místµ. Kup½íkladu po jednom roce naroste historický sumarizovaný protokol ²íta²¾ na p½ibližnµ 100 až 200 MB na po²íta². Alternativnµ lze v tomto místµ procedury zvolit ukládání historických, sumarizovaných dat protokolu ²íta²¾ do výkonnostní databáze SQL Serveru. Rozhodnete-li se využívat pro historické údaje ²íta²¾ repozitá½ SQL Serveru, nejprve vložte následující inicializa²ní kód: Const parametryPrenastaveniSQL = "-f SQL -t 4" Const DBPrenastaveniSQL = """SQL:PDB!Hodinove""" Const NazevSouboruNastaveniSQL = "c:\perflogs\soubor-nastaveni-souhrnnychcitacu.txt"
Dále nahraÅte poslední dva p½íkazy Relog jediným p½íkazem Relog zajišÆujícím vložení vygenerovaných hodinových dat protokol¾ ²íta²¾ p½ímo do SQL Serveru takto: prikaz = "relog " & NazevDennihoSouboru & " -o " & DBPrenastaveniSQL & _ " -cf " & NazevSouboruNastaveniSQL & " " & parametryPrenastaveniSQL Tip Maxim·lnÌ flexibility dos·hnete, kdyû budete sestavovat a udrûovat sumarizovan· i historick· data v protokolech bin·rnÌho form·tu, kterÈ lze snadno p¯en·öet mezi poËÌtaËi na sÌti a do konsolidaËnÌ historickÈ datab·ze PDB vyuûÌvajÌcÌ SQL Server.
Skript následnµ obsahuje komentá½ vyžadující po vás zkopírování právµ vytvo½eného souboru sumarizovaných denních protokol¾ ²íta²¾ na konsolida²ní server nµkde v síti, kde jej použijete v rámci svého procesu hlášení pro správu: '
objFSO2.CopyFile NazevDennihoSouboru,
Skript se pak vrátí do složky C:\Perflogs\Dnes a odstraní starší soubory, které byly p½edtím zkopírovány do složky C:\Perflogs\Vcera a zpracovány nástrojem Relog.
Správa protokol dítad automaticky generovaných výstrahami Nakonec skript prochází všemi soubory ve složce C:\Perflogs\Protokoly vystrah a odstra¹uje ty, které jsou starší než hodnota nastavená v konstantµ PocetDnuVystrahy , jež standardnµ odpovídá t½em dn¾m. D¾vodem k odstra¹ování starších protokol¾ ²íta²¾ ve složce Protokoly vystrah je to, že p½íslušná krize již z½ejmµ pominula. Když tu podobnµ jako ve složce C:\Perflogs\Dnes, kam se zapisují denní protokoly ²íta²¾, zanedbáte vykonávání nµjaké formy automatické správy soubor¾, nakonec vám na po²íta²i dojde diskový prostor.
Plánované mgsídní zprávy a archivace Další p½eprotokolování lze zajišÆovat plánovanµ pomocí nástroje Scheduled Tasks (Naplánované úlohy). Úlohy, jejichž bµh je naplánován jinou službou než Výstrahy a protokolování výkonu, musejí používat aktivní soubory protokol¾ velmi opatrnµ. Když si aktivní soubor protokolu ²íta²¾ otev½e jiný proces, m¾že tím zabránit pro-
Postupy denního sledování server
355
tokolovací službµ v jeho ½ádném uzav½ení nebo znemožní správné fungování p½íkazového souboru vykonávaného po zav½ení aktuálního protokolu ²íta²¾. Na konci mµsíce lze soubory protokol¾ nashromáždµné v jednotlivých dnech konsolidovat do jediného archivního souhrnného protokolového souboru. Ve vµtšinµ p½ípad¾ tak bude zajištµna dostate²ná detailnost údaj¾, aniž by spot½ebovávaly p½íliš diskového prostoru. Zpracování na konci mµsíce sestává ze dvou hlavních funkcí: 1. Omezení po²tu vzork¾ a 2. konsolidování denních soubor¾ do jediného protokolového souboru p½edstavujícího daný mµsíc. Nejlepšího výkonu zpracování dosáhnete, když nejprve zkomprimujete jednotlivé soubory a pak je pospojujete. Protože nástroj Relog se snaží spojit dohromady všechny vstupní soubory, ještµ než je zpracuje, práce s menšími vstupními soubory zajistí mnohem rychlejší spojení. Výpis 4.13 je p½íkladem typického p½íkazového souboru mµsí²ního zpracování.
Rem *********************************************************************** Rem * arg 1 is the name of the month that the performance data logs Rem * are being compiled for. Rem * Rem * arg 2 is the directory path in which to put the output file Ren * Ren * NOTE: This procedure should not run when a daily log is being Ren * processed. It should run after the last daily log of the month has Rem * been processed and moved to the SAVE_DIR Rem * Rem *********************************************************************** set LOG_DIR set SAVE_DIR set TEMP_DIR echo Archiving logs in %SAVE_DIR% at %date% %time%>> %LOG_DIR%\SAMPLE_RELOG.LOG Rem compress each daily log and store the output files in the TEMP_DIR for %a in (%SAVE_DIR%) do %LOG_DIR%\Montlhy_Compress.bat "%a" "%TEMP_DIR%" if errorlevel 1 goto COMPRESS_ERROR Rem concatenate the compressed log files into monthly summary file relog %TEMP_DIR%\*.blg -o %2\%1.blg if errorlevel 1 goto RELOG_ERROR Rem clear out the temp directory to remove the temp files Del /q %TEMP_DIR%\*.* Rem clear out the original files if you want to free up the space Rem or you may wish to do this manually after insuring the files were Rem compressed correctly Del /q %SAVE_DIR%\*.* exit :COMPRESS_ERROR echo Compress error at %date% %time%>> %LOG_DIR%\SAMPLE_RELOG.LOG exit
Postupy pdi sledování výkonu
VÝPIS 4.13: P¯Ìklad mÏsÌËnÌho zpracov·nÌ
356
Kapitola 4 – Postupy pi sledování výkonu
:RELOG_ERROR echo Relog error at %date% %time%>> %LOG_DIR%\SAMPLE_RELOG.LOG exit
Respektive v ²eském prost½edí: Rem *********************************************************************** Rem * arg 1 je název m¹síce, jehož data protokol výkonu se kompilují. Rem * Rem * arg 2 je adresáÁová cesta pro uložení výstupního souboru. Ren * Ren * POZN.: Tato procedura nesmí b¹žet, když je zpracováván denní Ren * protokol. M¹la by b¹žet až po zpracování posledního denního protokolu Rem * daného m¹síce a jeho pÁesunutí do SAVE_DIR. Rem * Rem *********************************************************************** set LOG_DIR set SAVE_DIR set TEMP_DIR echo Archivace protokolu %SAVE_DIR% v %date% %time%>> %LOG_DIR%\SAMPLE_RELOG.LOG Rem Zkomprimovat jednotlivé denní protokoly a uložit výstupní soubory do EMP_DIR. for %a in (%SAVE_DIR%) do %LOG_DIR%\Mesicni_komprimace.bat "%a" "%TEMP_DIR%" if errorlevel 1 goto COMPRESS_ERROR Rem Slou¶it zkomprimované soubory protokol do souboru m¹sí¶ního souhrnu. relog %TEMP_DIR%\*.blg -o %2\%1.blg if errorlevel 1 goto RELOG_ERROR Rem Vymazat do¶asný adresáÁ a odstranit do¶asné soubory Del /q %TEMP_DIR%\*.* Rem Nyní lze vymazat pÂvodní soubory, aby se uvolnilo místo. To mžete také Rem ud¹lat manuáln¹ po ov¹Áení, že došlo ke správnému zkomprimování souborÂ. Del /q %SAVE_DIR%\*.* exit :COMPRESS_ERROR echo Chyba komprimace v %date% %time%>> %LOG_DIR%\SAMPLE_RELOG.LOG exit :RELOG_ERROR echo Chyba pÁeprotokolování v %date% %time%>> %LOG_DIR%\SAMPLE_RELOG.LOG exit
V p½íkazovém souboru ve výpisu 4.13 se soubory protokol¾ uložené v adresá½i SAVE_DIR komprimují dalším p½íkazovým souborem a pak se slu²ují. VÝPIS 4.14: P¯Ìkazov˝ soubor volan˝ ˙lohou mÏsÌËnÌho zpracov·nÌ Rem Rem Rem Rem Rem Ren
*********************************************************************** * arg 1 is the filename of the daily performance data log file to * compress for subsequent concatenation. * * arg 2 is the directory path in which to put the output file *
Postupy denního sledování server
357
Rem *********************************************************************** set LOG_DIR set SAVE_DIR set TEMP_DIR echo Compressing file: %1 at %date% %time%>> %LOG_DIR%\SAMPLE_RELOG.LOG Rem compress each daily log and store the output files in the TEMP_DIR Relog %1 -config %LOG_DIR%\COMPRESS_CFG.TXT -o %2\%~nx1 >> %LOG_DIR%\SAMPLE_RELOG.LOG
Rem *********************************************************************** Rem * arg 1 je název souboru protokolu denních výkonnostních dat, který Rem * se má zkomprimovat pro následné slou¶ení. Rem * Rem * arg 2 je adresáÁ, kam se má uložit výstupní soubor. Ren * Rem *********************************************************************** set LOG_DIR set SAVE_DIR set TEMP_DIR _ echo Komprimace souboru: %1 v %date% %time%>> %LOG_DIR%\SAMPLE_RELOG.LOG Rem Komprimace jednotlivých denních protokol a uložení výstupních soubor do TEMP_DIR. Relog %1 -config %LOG_DIR%\COMPRESS_CFG.TXT -o %2\%~nx1 >> %LOG_DIR%\SAMPLE_RELOG.LOG
P½íkazový soubor ve výpisu 4.14 je oddµlen od hlavního p½íkazového souboru, aby bylo možné využít funkce rozdµlování názvu souboru interpreteru p½íkaz¾. Jakmile jsou data nashromáždµná bµhem mµsíce konsolidována do zkomprimovaného souhrnného souboru, lze jeho pomocí vytvá½et mµsí²ní hlášení. Stejné soubory konfigurace protokol¾ ²íta²¾ lze dokonce používat k mµsí²nímu souhrnu stejných údaj¾ hlášených v denních zprávách. Jediným rozdílem je práce s odlišným vstupním souborem – souborem mµsí²ního souhrnu místo souboru denních výkonnostních dat.
Definice konfigurací protokol pro více server Konfigura²ní soubory lze rovnµž využít k zavedení jednotných procedur shromažÅování protokol¾ ²íta²¾ na více po²íta²ích. Následující konfigura²ní soubor ukazuje základní nastavení protokolu, která lze použít v konfiguraci sestávající z mnoha server¾. V p½ípadµ pot½eby lze samoz½ejmµ doplnit další ²íta²e. [name] Basic Performance Data Log [sample] 15 [format] bin
Postupy pdi sledování výkonu
Respektive v ²eském prost½edí:
358
Kapitola 4 – Postupy pi sledování výkonu
[--max] [--append] [version] nnnnnn [runcmd] [counters] \Processor(_Total)\% Processor Time \LogicalDisk(_Total)\% Disk Time \Memory\Pages/sec \Network Interface (*)\Bytes Total/sec
Respektive v ²eském prost½edí: [ name ] Zakladni protokol vykonnostnich dat [sample] 15 [format] bin [--max] [--append] [version] nnnnnn [runcmd] [counters] \Procesor(_Total)\% ¶asu procesoru \Logický disk(_Total)\% ¶asu disku \Pam¹È\Stránky/s \Rozhraní sít¹(*)\Bajty celkem/s
4.3 Práce s repozitáem SQL Serveru Podpora dat protokol¾ ²íta²¾ ze strany SQL Serveru je flexibilní a nabízí dobrou možnost sestavování a udržování dlouhodobého repozitá½e dat protokol¾ ²íta²¾ jak pro analýzu, tak i plánování kapacity. Tento oddíl popisuje použití repozitá½e SQL Serveru k hlášení výkonnostních dat protokol¾ ²íta²¾. Pojednává o databázovém schématu využívaném k ukládání dat a protokol¾ ²íta²¾. Následnµ popisuje, jak používat nástroje extrakce dat, jako je Microsoft Excel, pro p½ístup k dat¾m protokol¾ ²íta²¾ v repozitá½i SQL Serveru a jejich zpracování do hlášení. Nakonec je uveden p½íklad p½ejímající dat protokol¾ ²íta²¾ z aplikace SQL Server prost½ednic-