Category Archives: postgres

Rapoarte PostgreSQL log cu pgFouine

pgFouine este un program de analiză a log-urilor serverului PostgreSQL. In rapoarte poți vedea pe o anumită perioadă, câte interogări au fost, care dintre ele sunt cele mai lente (cu exemple), cele mai frecvente interogari, erorile, grafice cu numarul/durata interogărilor pe tipuri de interogări(exemple).

Face față la log-uri mari cu impact redus asupra resurselor. Eu, pe serverul administrat, am zilnic 350k-400k de interogări cu log-ul de 130-150MB (nu că aș considera asta foarte mare) și 3 rapoarte combinate sunt gata in nici 2 minute (pentru cei care au server solicitat tot timpul; în cazul meu face noaptea, când nimeni nu lucrează).

Despre instalare nu prea am ce sa vorbesc: este simplu si este descris de la A-Z pe site-ul lor.

În 2 ani de utilizare întotdeauna m-au deranjat graficele: e o chestie subiectivă, dar mi se par foarte mici. Nu că vezi mult mai mult daca sunt mai mari, dar de când lucrez la un monitor de 23″ la 1920×1080, trebuie sa-mi bag nasul in el ca să văd ceva.Apropo. Folosesc, la momentul de față, PostgreSQL 9.1.2 pe CentOS 6.2, toate instalate de pe http://yum.pgrpms.org/ din repo corespunzător. Tot de aici se poate instala și pgFouine (yum rules) din pachetul contrib.

Am zis să încerc, poate-poate … nefiind un php guru n-am pus mari speranțe să pot modifica programul, dar iată că am reușit … și încă ce repede …

Fișierul în care am facut modificări HourlyStatsReport.class.php și în cazul meu se găsește by default în /usr/share/pgfouine/include/reporting/reports.

Iată:

--- ./HourlyStatsReport.class.php 2008-05-13 23:45:42.000000000 +0300
+++ ./new.class.php 2012-01-06 14:19:49.000000000 +0200
@@ -125,16 +125,16 @@
$html = $this->getHtml();

if(in_array('hourly_queries_per_second', $graphsGenerated)) {
- $html .= '<p><img src="'.$this->reportAggregator->getImageBaseName('hourly_queries_per_second').'" alt="Queries per second" /></p>';
+ $html .= '<p align="center"><img src="'.$this->reportAggregator->getImageBaseName('hourly_queries_per_second').'" alt="Queries per second" /></p>';
}
if(in_array('hourly_all_queries', $graphsGenerated)) {
- $html .= '<p><img src="'.$this->reportAggregator->getImageBaseName('hourly_all_queries').'" alt="Hourly queries" /></p>';
+ $html .= '<p align="center"><img src="'.$this->reportAggregator->getImageBaseName('hourly_all_queries').'" alt="Hourly queries" /></p>';
}
if(in_array('hourly_select_queries', $graphsGenerated)) {
- $html .= '<p><img src="'.$this->reportAggregator->getImageBaseName('hourly_select_queries').'" alt="Hourly SELECT queries" /></p>';
+ $html .= '<p align="center"><img src="'.$this->reportAggregator->getImageBaseName('hourly_select_queries').'" alt="Hourly SELECT queries" /></p>';
}
if(in_array('hourly_write_queries', $graphsGenerated)) {
- $html .= '<p><img src="'.$this->reportAggregator->getImageBaseName('hourly_write_queries').'" alt="Hourly write queries" /></p>';
+ $html .= '<p align="center"><img src="'.$this->reportAggregator->getImageBaseName('hourly_write_queries').'" alt="Hourly write queries" /></p>';
}

return $html;
@@ -252,7 +252,7 @@

// Queries per second
if($this->countValidValues($max) > 2) {
- $graph = new Graph(840, 250);
+ $graph = new Graph(1000, 550);
$graph->setAntiAliasing(true);
$graph->setBackgroundColor(new Color(0xFF, 0xFF, 0xFF));

@@ -313,7 +313,7 @@

// All queries
if($this->countValidValues($queryCountValues) > 2) {
- $graph = new Graph(840, 250);
+ $graph = new Graph(1000, 550);
$graph->setAntiAliasing(true);
$graph->setBackgroundColor(new Color(0xFF, 0xFF, 0xFF));

@@ -391,7 +391,7 @@

// SELECT queries
if($this->countValidValues($selectCountValues) > 2) {
- $graph = new Graph(840, 250);
+ $graph = new Graph(1000, 550);
$graph->setAntiAliasing(true);
$graph->setBackgroundColor(new Color(0xFF, 0xFF, 0xFF));

@@ -468,7 +468,7 @@

// write queries
if($this->countValidValues($updateCountValues) > 2 || $this->countValidValues($insertCountValues) > 2 || $this->countValidValues($deleteCountValues) > 2) {
- $graph = new Graph(840, 250);
+ $graph = new Graph(1000, 550);
$graph->setAntiAliasing(true);
$graph->setBackgroundColor(new Color(0xFF, 0xFF, 0xFF));