Monitorovanie Informačných Systémov2
ToDo
--
SlavomirStrharsky - 25 Mar 2007
1. Úvod - všeobecné poznatky a definície
Definícia systému
Systém je účelovo definovaný súbor komponentov (elementov), medzi ktorými existujú určité vzťahy, a ktoré spĺňajú nejaký cieľ. Systémová analýza sa zaoberá systémami vytvorenými ľudmi, tie sa skladajú zo vstupov, procesov a výstupov.
Systém pozostáva z:
1. atribútov (veličiny charakterizujúce určitý prvok systému)
2. udalostí (zmena atribútu alebo zmena konfigurácie systému - napríklad komponenty)
3. časových množín (hodnoty vzťahujúce sa k určitému okamihu).
Hranice a okolie systému
Hranice systému vymedzuje samotný systém lebo sám oddeľuje viacero systémov. Logická hranica je pomyselnou hranicou a vymedzuje podsystémy v rámci systému, avšak okolie systému je už „viditeľnou“ hranicou. Prvky na hranici taktiež ovplyvňujú chovanie systému.
Rozdelenie systémov
-
uzavreté & otvorené - podľa toho, či dochádza k interakcii s okolím
-
deterministické & stochastické - tzn. jednoznačné alebo štatistické chovanie
-
statické & dynamické - tzn. lineárne alebo diferenciálne (systém si pamätá vnútorný stav)
-
spojité & diskrétne - podľa časových udalostí (prípadne ex. také kombinované)
Systémy všeobecne delíme na tvrdé a mäkké. Tvrdé systémy sú spojené s jedným špecifickým (štrukturovaným) problémom (väčšinou technické systémy), naopak v mäkkých systémoch vystupuje celá rada faktorov, sú všeobecnejšie (človek je aktívnym prvkom systému=individualita - problém pretože každý má iné znalosti a inak uvažuje).
Riadenie a spätná väzba
V systémoch môže nastať spätná väzba, kedy výstupná veličina opätovne ovplyvňuje vstupnú veličinu, a teda aj samotný systém. Každý systém má tendenciu byť nestabilný, a preto môže niekedy pomôcť implementácia tzv. regulátorov. Je tu vidieť analógiu s logickými obvodmi. Existujú štúdie, ktoré poskytujú matematický aparát pre popis systémov (diferenciálny, fourierový a podobne).
Definícia IS
Informačné systémy (IS) sú systémy pre zber, udržovanie, spracovanie a poskytovanie informácií a dát. Príkladom informačného systému môže vo všeobecnosti byť kartotéka, telefónny zoznam, kniha prijatej pošty alebo účtovníctvo.
Ciele IS
1.
strategické (plánovanie investícií…)
2.
taktické (vedenie, kontrola rozpočtu…)
3.
operačné (každodenná rutina).
Úlohy IS
1.
manažérske (EIS - Executive IS)
2.
taktické (DSS - Decision Support System)
3.
vedenie (MIS - Management IS)
4.
expertné (KWS - Knowledge Work System)
5.
kancelárske (OIS - Office IS)
6.
operatívne
o TPS - transakčné (banky…)
o CRM - starostlivosť o zákazníka
o RIS - rezervačné systémy
o CAM - konstrukčné (CAD…)
o GIS - geografické systémy
Internet
Internet/intranet poskytuje skvelú platformu pre IS. Dnešné technológie zahrňujú napríklad:
ASP/.NET - platforma Windows (existuje taktiež multiplatformná implementácia Mono)
Java2EE - špičková platforma vyvinutá firmou Sun (technológia napr.: JSP, JSF nebo Struts)
PHP - multiplatformný skriptovací jazyk
XML - Extensible Markup Language, hraje podstatnú úlohu v dnešných IS, predovšetkým vo výmene dát.
Log
Log je názov pre záznam alebo súbor záznamov (často súbory s príponou .log), ktoré si niektoré programy vytvárajú pre ukladanie informácií o svojej činnosti a behu. Logy slúžia pri spätnej analýze k rozpoznávaniu, či došlo k nejakej chybe a ak áno, tak pomáhajú určiť, k akej chybe došlo a prečo. Môžu tiež obsahovať informácie o tom, ako a kým bola daná aplikácia či služba využívaná (napríklad z akej IP adresy bolo pristupované k WWW serveru).
Niektoré programy umožňujú logovanie vypnúť, zapnúť alebo nastaviť jeho úroveň, tzn. určiť, koľko a ktoré detailné informácie sa do logov majú ukladať.
Server Log
Server log je súbor (alebo niekoľko súborov) automaticky tvorených a udržiavaných serverom.
Typickým príkladom je
web server log, ktorý obsahuje históriu požadovaných stránok. W3C zachováva štandardný formát pre web server log súbory, ale existujú aj iné vhodné formáty. Nové záznamy sa pridávajú na koniec súboru. Štandardne sa zapisujú informácie o požiadavke, klientova IP adresa, dátum/čas, požadovaná stránka, HTTP kód, poskytnuté bajty, používateľov agent. Tieto dáta môžu byť skombinované do jedného súboru, alebo separované do osobitných logov, napríklad access log, error log, alebo referrer log. Server logy však obyčajne nezbierajú informácie viazané na užívateľa.
Tieto súbory obyčajne nie sú verejne prístupné užívateľom na Internete, iba webmasterom alebo iným administratívnym osobám. Štatistická analýza server logov môže byť použitá na preverovanie traffic patterns podľa času, dňa, referrera (odkaz na požadovateľa), alebo užívateľovho agenta. Efektívna administrácia webovej stránky, adekvátny hosting a vyladenie - tuning

výkonnosti predaja môžu byť ošetrené práve pri analýze web server logov. Marketingové oddelenia organizácií, ktoré vlastnia webové stránky by mali byť školené na používanie týchto nástrojov.
2. MySQL? Server Logs
MySQL? má niekoľko typov logov, ktoré nám môžu pomôcť zistiť, čo sa deje v
mysqld
:
Typ logu | Informácie zapísané do logu |
error log | Problémy so štartovaním, behom alebo zastavením mysqld |
general query log | Spojenia zriadené klientom a príkazy prijaté od klienta |
binary log | Všetky príkazy, ktoré menia dáta (taktiež používané na odpovedanie) |
slow query log | Všetky požiadavky, ktoré požadujú na ich vykonanie viac času ako long_query_time alebo, ktoré nepoužili indexy |
Defaultne sú všetky log súbory vytvorené v dátovom adresári mysqld. Pomocou mysqld môžeme zatvoriť a otvoriť log súbory (alebo v niektorých prípadoch prepnúť na nový log) mazaním logov. Mazanie logov dosiahneme pri zadaní príkazu
FLUSH LOGS alebo vykonáme
mysqladmin flush-logs alebo
mysqladmin refresh. Ak používate
MySQL? replikačné schopnosti, tak podradené replikačné servery sa starajú o ďalšie log súbory nazvané
relay logy.
Error Log
Error log súbor obsahuje informácie vyjadrujúce kedy
mysqld
bolo zapnuté, vypnuté a tiež všetky kritické chyby, ktoré sa vyskytli počas behu servera. Ak
mysqld
zaznamená tabuľku, ktorá potrebuje byť automaticky kontrolovaná alebo opravovaná, napíše správu do error logu.
Na niektorých operačných systémoch error log obsahuje stack trace v prípade zlyhania
mysqld
. Stopa môže byť použitá na zistenie kde
mysqld
ukončilo svoju činnosť.
Keď sa
mysqld_safe
použije na naštartovanie
mysqld
a
mysqld
neočakávane skončí, tak
mysqld_safe
zaznamená, že potrebuje reštartovať
mysqld
a napíše o tom správu do error log.
Môžeme si špecifikovať kam má
mysqld
ukladať error log súbor s voľbou
--log-error[=file_name]
. Ak nie je zadaný žiaden názov súboru
mysqld
použije názov
host_name.err
a súbor zapíše do dátového adresára. Ak zadáme
FLUSH LOGS
, error log sa premenuje s príponou
-old
a
mysqld
vytvorí nový prázdny log súbor.
(Ak možnosť
--log-error
nie je daná, nevyskytne sa žiadne premenovávanie)
Ak nešpecifikujeme
--log-error
, alebo (vo Windows) ak použijeme voľbu
--console
, chyby sú zapísané do
stderr
- štandardný chybový výstup. Obyčajne je to váš terminál.
Vo Windowse je chybový výstup vždy zapísaný do .err súboru ak
--console
nie je daná.
Voľba
--log-warnings
alebo systémová premenná
log_warnings
sa môže použiť ma riadenie varovných logov do error logu. Defaultná hodnota je enabled (1). Varovné logovanie môže byť zakázané použitím hodnoty 0. Zrušené spojenia nie sú logované do error log iba ak je hodnota väčšia ako 1.
General Query Log
General query log predstavuje všeobecný zaznam o tom, čo robí
mysqld
. Server zapíše informácie do tohto logu, ak sa klient pripojí alebo odpojí, a tiež loguje každý SQL príkaz od klienta. General query log dokáže byť veľmi užitočný ak je podozrenie, že chyba je na klienotvi a chceme vedieť čo presne klient poslal
mysqld
.
mysqld
zapíše príkazy do query log v poradí, v akom ich obdržal, čo sa môže líšiť od poradia, v akom sa vykonávali. Takéto logovanie je v kontraste s binary log, v ktorom sa príkazy zapisujú potom ,ako sa vykonali, avšak predtým ako sa odstránil nejaký zámok(lock). (Query log obsahuje všetky príkazy, zatiaľ čo binary log neobsahuje príkazy, ktoré iba selektujú dáta.)
Pre zapnutie general query log, spustite
mysqld
s voľbou
--log[=file_name]
alebo
-l [file_name]
.
Ak nie je zadané meno súboru pre --log alebo -l, defaultne meno je
host_name.log
v dátovom adresári.
Server sa reštartuje ale vymazanie logov nezapríčiní vygenerovanie nového general query log súboru (vymazanie logov ho zatvorí a naspäť otvorí). V
Unixe môžete súbor premenovať a vytvoriť nový použitím nasledujúcich príkazov:
shell> mv host_name.log host_name-old.log
shell> mysqladmin flush-logs
shell> cp host_name-old.log backup-directory
shell> rm host_name-old.log
Vo
Windowse, nemožete premenovať log súbor, pokiaľ ho má server otvorený. Musíte stopnúť server a tak premenovať súbor, následne reštartovať server, aby sa vytvoril nový log súbor.
Binary Log
Binary log obsahuje všetky príkazy, ktoré aktualizujú(update) dáta alebo by ich mohli aktualizovať(napríklad DELETE, ktorý sa nevzťahuje na žiaden riadok). Príkazy sú uložené vo forme udalostí, ktoré popisujú zmeny. Binary log tiež obsahuje informácie o tom, ako dlho každý príkaz aktualizoval dát.
Poznámka: binary log nahradil predtým používaný
update log, ktorý už nie je dostupný od
MySQL? verzie 5.0. Binary log obsahuje všetky informácie, ktoré sú dostupné v
update log avšak v efektívnejšom formáte a spôsobom, ktorý je bezpečný pre transakcie. Ak používate transakcie, musíte použiť
MySQL? binary log kvôli zálohovaniu, namiesto starého
update logu.
Binary log sa nepoužíva pre príkazy ako
SELECT alebo
SHOW, ktoré nemenia dáta. Ak chcete logovať všetky príkazy(napríklad identifikovať chybnú požiadavku), použite general query log.
Primárnym účelom binary logu je schopnosť aktualizácie databázy počas operácie zotavenia maximálne ako je možné, pretože binary log obsahuje všetky aktualizácie vykonané po zálohovaní. Binary log sa tiež používa na hlavných replikačných serveroch ako záznam príkazov, ktoré sa posielajú podradeným serverom.
Server bežiaci so zapnutým binary logovaním má zníženú výkonnosť približne o 1%. Avšak výhody binary logu pri zotavovaní a možnosti nastavenia replikácie, všeobecne prevážia toto malé zníženie výkonu.
Keď naštartujeme s voľbou
--log-bin[=base_name]
,
mysqld
zapíše do log súboru všetky SQL príkazy, ktoré aktualizujú dáta. Ak nezadáme
base_name
, defaultne sa nastaví meno hosta, za ktorým sa doplní
-bin
. Ak je basename zadané (nie ako absolútnu cestu), server zapíše súbor do dátového adresára. Všeobecne sa doporučuje sa basename zadávať.
Slow Query Log
Slow query log pozostáva zo všetkých SQL príkazov, ktoré vyžadujú viac sekúnd na vykonanie ako long_query_time. Čas na získanie zámkov pre tabľku sa nepočíta ako vykonávací čas.
mysqld
zapíše príkaz do slow query log po tom ako sa vykonal a všetky zámky sa odstránili, teda poradie logovania môže byť odlišné od poradia v akom sa príkazy vykonali. Minimálna a defaultná hodnota long_query_time sú 1 a 10.
Pre zapnutie slow query log, naštartujte
mysqld
s voľbou
--log-slow-queries[=file_name]
.
Ak nezadáme meno súboru pre
--log-slow-queries
, defaultne meno je
host_name-slow.log
. Ak zadáme meno (nie ako absolútnu cestu), server zapše súbor do dátového adresára.
Slow query log môžeme použiť pri hľadaní požiadaviek, ktoré vyžadujú dlhý čas na vykonanie a preto sú kandidátmi v prípade optimalizácie. Avšak prehľadávanie dlhého slow query logu sa môže stať náročnou úlohou. Pre uľahčenie sa zadáva
mysqldumpslow
na zosumarizovanie požiadaviek vyskytujúcich sa v logu. Použite
mysqldumpslow --help
na zobrazenie možných volieb.
V
MySQL? 5.0 sú požiadavky, ktoré nepoužívajú indexy sú logované so slow query log ak zadáme voľbu
--log-queries-not-using-indexes
.
MySQL Enterprise: Nadmerné skenovania tabuľky sú príznakom chýbajúcich alebo zle optimalizovaných indexov. Použitím poradcu špeciálne navrhnutého na túto úlohu, MySQL? Network Monitoring a Advisory Service dokáže identifikovať takéto problémy a ponúknuť radu na vyriešenie. Viac informácií na http://www.mysql.com/products/enterprise/advisors.html. |
V
MySQL? 5.0 voľba
--log-slow-admin-statements
vám dovolí požadovať logovanie pomalých administratívnych príkazov ako sú
OPTIMIZE TABLE, ANALYZE TABLE, a ALTER TABLE do the slow query logu.
Požiadavky spracované s query cache nie sú pridané do slow query logu, a tiež nemajú výhodu z indexovania, pretože tabuľka má nula alebo jeden riadok.