PGMon - instalace a nastavení
Stručný popis postupu instalace a nastavení projektu PGMon. Vzhledem k tomu že tento projekt má dvě samostané části - část zodpovědnou za sběr dat a webové rozhraní určené k jejich zobrazení, je možné tyto části instalovat a konfigurovat samostatně.
Jak již bylo uvedeno, projekt má dvě hlavní části, které lze instalovat a konfigurovat samostatně:
Aktuální balíček se zdrojovými kódy je dostupný na sf.net - na projektové stránce. Stáhněte si aktuální balíček pgmon-xxx.zip, a rozbalte ho - vznikne adresář pgmon-xxx s následujícím obsahem:
- README - souhrnné stručné informace o projektu
- LICENSE - licenční ujednání (GPL v2)
- collect - skripty zodpovědné za sběr dat
- doc - dokumentace (popis API knihoven, příklady, apod.)
- libs - knihovny používané pro sběr a zobrazování dat
- web - webové rozhraní pro zobrazování dat
- tests - unit testy
Pro vlastní fungování projektu jsou třeba adresáře "collect", "libs" a "web". Vzhledem k tomu že adresáře "collect" a "web" jsou podrobněji rozebrány dále, podívejme se alespoň stručně na obsah adresáře "libs," tj. na sdílené knihovny:
- PgMon_collect.php - knihovna používaná pro sběr dat
- PgMon_read.php - knihovna používaná pro načítání dat (v rámci webového rozhraní)
- PhpChart.php - knihovna používaná pro generování grafů
- PgMon_db.php - knihovna zapouzdřující přístup k databázi
- PgMon_db_resultset.php - knihovna zapouzdřující výsledky dotazu
Potřebujete-li získat informace o API těchto knihoven, nahlédněte do adresáře "doc" který obsahuje dokumentaci k API ve stylu javadoc, nebo přímo do komentářů ve zdrojových kódech.
Část určená pro sběr dat
Tato část je tvořena knihovnou PgMon_collect (v adresáři "libs"), sadou cronových skriptů a příslušnými konfiguračními soubory (v adresáři "collect"). Pro každou tabulku (Tables, Indexes, Databases, BgWriter) existuje samostatný skript, po jehož spuštění jsou načtena a uložena aktuální data:
- save-tables.php
- save-indexes.php
- save-databases.php
- save-bgwriter.php
Kromě těchto souborů je v adresáři uložen ještě soubor "config.php" s konfigurací zdrojové a cílové databáze, sdílený výše uvedenými skripty. Tento soubor obsahuje dvě důležité části:
- seznam zdrojových databází ze kterých mají být načtena data
- cílová databáze do které mají být data uložena
Obě části jsou ve formě asociativních polí - například definice dvou zdrojových databází by mohla vypadat takto:
<?php
$sourceDbs = array(
array('host' => 'localhost',
'port' => '5432',
'schema' => 'myapp', // 'myapp' schema only
'user' => 'username',
'password' => 'password',
'objects' => 'user' // user objects only
),
array('host' => 'other-machine',
'port' => '5431',
'schema' => null, // all schemas
'user' => 'other-user',
'password' => 'other-pass',
'objects' => 'all' // all objects (user and system)
)
);
?>
Dle této definice budou data načítána ze dvou databází - z první jsou načtena pouze data o uživatelských objektech ze schématu "myapp". Ze druhé jsou načteny informace o všech objektech (uživatelských i systémových) ze všech schémat.
Příklad definice cílové databáze by mohla vypadat takto:
<?php
$targetDb = array(
array('host' => 'target-machine',
'port' => '5435',
'schema' => null,
'user' => 'myuser',
'password' => 'mypass'
)
);
?>
Po spuštění skriptu jsou tyto vstupní databáze jedna po druhé zpracovány, tj. jsou z nich načtena potřebná data, která jsou obratem zapsána do cílové databáze.
Posledním důležitým parametrem je cesta ke sdíleným knihovnám (konkrétně k souborům PgMon_collect.php, PgMon_db.php a PgMon_db_resultset.php). Uvedena by měla být v konstantě PGMON_LIBS a je jedno zda je použita relativní nebo absolutní cesta:
<?php
// definice cesty ke knihovnám
define('PGMON_LIBS', '/var/www/pgmon/libs/');
?>
Důležitým parametrem sběru dat (byť nenastavovaným v konfiguračním souboru) je frekvence - optimální hodnota závisí na vytížení databáze, množství dat apod. Doporučuji začít například na intervalu 15 minut a případně ho později upravit.
Webové rozhraní pro zobrazení dat
Webové rozhraní je jednoduchá webová aplikace napsaná v PHP, která načítá a zobrazuje data sesbíraná cronovými skripty a zobrazuje je ve formě tabulek a grafů (ke generování grafů je použita knihovna PhpChart.php).
Po nakopírování obsahu adresáře "web" na místo přístupné přes web, je třeba provést dvě drobné úpravy konfigurace - nastavit cestu ke knihovnám a spojení na databázi ve které jsou uložena data.
Definice databáze je uvedena v souboru include/config.php a je nastavována stejně jako v případě cronových skriptů (a logicky by měly být totožné):
<?php
$db = array(
array('host' => 'target-machine',
'port' => '5435',
'schema' => null,
'user' => 'myuser',
'password' => 'mypass'
)
);
?>
Ve stejném souboru je třeba definovat cestu ke knihovnám - opět stejným způsobem jako v případě cronových skriptů:
<?php
// definice cesty ke knihovnám
define('PGMON_LIBS', '/var/www/pgmon/libs/');
?>
Tím je konfigurace webového rozhraní dokončena.




