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.

Komentáře

K tomuto článku zatím žádné komentáře neexistují (nebo čekají na schválení).

Nový komentář

Všechny komentáře podléhají schválení - mezi odesláním komentáře a jeho zobrazením na této stránce tedy může být prodleva. Vyplníte-li e-mailovou adresu, budete o schválení či neschválení komentáře informováni.

V titulku ani v textu nejsou povoleny HTML tagy - budou automaticky odstraněny. Odstavec ukončíte prázdným řádkem.

(nepovinné)