PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 06/02/2012 13:56:04

mortimer.pw
Membre

Stratégie de LOG et PGFOUINE

Bonjour,

Je travaille avec une 9.0 sur CentOS 5.

Suite à des problèmes de connexions (too many clients already) et à des fichiers de Log inexploitable (2 Go, tout est tracé, un fichier par jour, avec rotation du 01 au 31), je retravaille la stratégie de tracage, en prenant en compte le fait de pouvoir exploiter les fichiers avec PGFOUINE.

J'ai paramétré mon postgresql.conf avec :
     log_destination = 'csvlog'
     logging_collector = on
     log_directory = '/home/postgres/PG_LOG'
     log_filename = '%u-%H'
     log_truncate_on_rotation = on
     log_rotation_age = 1h
     log_min_duration_statement = 0
     log_connections = on
     log_disconnections = on
     log_line_prefix = '%t [%p]: [%l-1] '     # préconisé pour PGFOUINE
     lc_messages = 'en_US.UTF8'     # préconisé pour PGFOUINE

J'obtiens maintenant 2 fichiers par heure, par exemple :
     -rw------- 1 postgres postgres      0 fév  6 10:00 1-10
     -rw------- 1 postgres postgres      0 fév  6 10:00 1-10.csv
     -rw------- 1 postgres postgres      0 fév  6 11:00 1-11
     -rw------- 1 postgres postgres      0 fév  6 11:00 1-11.csv

Pour quelle raison, je ne trouve pas ?

J'ai vu que pour PGFOUINE, il fallait modifier le fichier CsvlogLogReader.class.php pour gérer une version 9. J'ai donc remplacé la ligne indiqué (if((count($csvLine) == 22) || (count($csvLine) == 23)) {).

J'exécute la commande :  pgfouine.php -file /home/postgres/PG_LOG/1-11.csv -format text -logtype csvlog > pierre.txt
et je reçois :
pgFouine did not find any valid PostgreSQL log line in your log file:
* check that PostgreSQL uses an english locale for logging (lc_messages in your postgresql.conf),
* check that you use the -logtype option (syslog, stderr) according to your log file,
* if you use syslog and log_line_prefix, check that your log_line_prefix has a trailing space,
* if you use stderr, check that your log_line_prefix is of the form '%t [%p]: [%l-1] '.
If you think your log file and your options are correct, please contact the author (gsmet on #postgresql@freenode or guillaume-pg at smet dot org).

Quelqu'un peut-il m'aider ?

Hors ligne

#2 06/02/2012 20:01:44

cedric
Membre

Re : Stratégie de LOG et PGFOUINE

mortimer.pw a écrit :

Bonjour,

Je travaille avec une 9.0 sur CentOS 5.

Suite à des problèmes de connexions (too many clients already) et à des fichiers de Log inexploitable (2 Go, tout est tracé, un fichier par jour, avec rotation du 01 au 31), je retravaille la stratégie de tracage, en prenant en compte le fait de pouvoir exploiter les fichiers avec PGFOUINE.

J'ai paramétré mon postgresql.conf avec :
     log_destination = 'csvlog'
     logging_collector = on
     log_directory = '/home/postgres/PG_LOG'
     log_filename = '%u-%H'
     log_truncate_on_rotation = on
     log_rotation_age = 1h
     log_min_duration_statement = 0
     log_connections = on
     log_disconnections = on
     log_line_prefix = '%t [%p]: [%l-1] '     # préconisé pour PGFOUINE
     lc_messages = 'en_US.UTF8'     # préconisé pour PGFOUINE

J'obtiens maintenant 2 fichiers par heure, par exemple :
     -rw------- 1 postgres postgres      0 fév  6 10:00 1-10
     -rw------- 1 postgres postgres      0 fév  6 10:00 1-10.csv
     -rw------- 1 postgres postgres      0 fév  6 11:00 1-11
     -rw------- 1 postgres postgres      0 fév  6 11:00 1-11.csv

Pour quelle raison, je ne trouve pas ?

J'ai vu que pour PGFOUINE, il fallait modifier le fichier CsvlogLogReader.class.php pour gérer une version 9. J'ai donc remplacé la ligne indiqué (if((count($csvLine) == 22) || (count($csvLine) == 23)) {).

J'exécute la commande :  pgfouine.php -file /home/postgres/PG_LOG/1-11.csv -format text -logtype csvlog > pierre.txt
et je reçois :
pgFouine did not find any valid PostgreSQL log line in your log file:
* check that PostgreSQL uses an english locale for logging (lc_messages in your postgresql.conf),
* check that you use the -logtype option (syslog, stderr) according to your log file,
* if you use syslog and log_line_prefix, check that your log_line_prefix has a trailing space,
* if you use stderr, check that your log_line_prefix is of the form '%t [%p]: [%l-1] '.
If you think your log file and your options are correct, please contact the author (gsmet on #postgresql@freenode or guillaume-pg at smet dot org).

Quelqu'un peut-il m'aider ?

étrange, les fichier sont manifestement vides.

Pouvez-vous vérifier les paramètres en cours avec la requete suivante:
select name,setting,context,source from pg_settings where source != 'default' order by 1;


Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation

Hors ligne

#3 07/02/2012 09:01:23

mortimer.pw
Membre

Re : Stratégie de LOG et PGFOUINE

Bonjour Cédric,

Je suis sur une base de test, donc effectivement les fichiers étaient vides au moment de ma requête.
Mais si je créé de l'activité, ils se remplissent, pas de souci de ce côté.

J'ai modifié mon paramétrage pour rediriger vers stderr au lieu de csvlog et là tout fonctionne.
Est-il préférable de rester en stderr ou le csvlog apporte t'il un plus ? et est-ce qu'il fonctionne réellement avec PgFouine ?

Ma stratégie d'un fichier par heure et par jour de la semaine est-elle bonne ?
Le fait de modifier le paramètre lc_messages de 'fr_FR.UTF8' vers 'en_US.UTF8' peut-il avoir un impact sur une base de production ?
Est-ce que j'ai maintenant suffisamment d'infos pour analyser (connexions, performances, requêtes lentes, ...) ?


Le résultat de la requête demandé :

geo=# select name,setting,context,source from pg_settings where source != 'default' order by 1;
              name              |                     setting                      |  context   |        source
--------------------------------+--------------------------------------------------+------------+----------------------
application_name               | psql                                             | user       | client
archive_command                | (disabled)                                       | sighup     | configuration file
archive_mode                   | off                                              | postmaster | configuration file
autovacuum_naptime             | 60                                               | sighup     | configuration file
checkpoint_completion_target   | 0.9                                              | sighup     | configuration file
checkpoint_segments            | 32                                               | sighup     | configuration file
config_file                    | /home/postgres/PG_DATA/postgresql.conf           | postmaster | override
data_directory                 | /home/postgres/PG_DATA                           | postmaster | override
DateStyle                      | ISO, DMY                                         | user       | configuration file
default_tablespace             |                                                  | user       | configuration file
default_text_search_config     | pg_catalog.french                                | user       | configuration file
effective_cache_size           | 349440                                           | user       | configuration file
hba_file                       | /home/postgres/PG_DATA/pg_hba.conf               | postmaster | override
ident_file                     | /home/postgres/PG_DATA/pg_ident.conf             | postmaster | override
lc_collate                     | fr_FR.UTF8                                       | internal   | override
lc_ctype                       | fr_FR.UTF8                                       | internal   | override
lc_messages                    | en_US.UTF8                                       | superuser  | configuration file
lc_monetary                    | fr_FR.UTF8                                       | user       | configuration file
lc_numeric                     | fr_FR.UTF8                                       | user       | configuration file
lc_time                        | fr_FR.UTF8                                       | user       | configuration file
listen_addresses               | *                                                | postmaster | configuration file
log_autovacuum_min_duration    | 300                                              | sighup     | configuration file
log_connections                | on                                               | backend    | configuration file
log_destination                | stderr                                           | sighup     | configuration file
log_directory                  | /home/postgres/PG_LOG                            | sighup     | configuration file
log_disconnections             | on                                               | backend    | configuration file
log_filename                   | %u-%H.log                                        | sighup     | configuration file
logging_collector              | on                                               | postmaster | configuration file
log_line_prefix                | %t [%p]: [%l-1] user=%u %h %s                    | sighup     | configuration file
log_min_duration_statement     | 0                                                | superuser  | configuration file
log_rotation_age               | 60                                               | sighup     | configuration file
log_timezone                   | Europe/Paris                                     | sighup     | command line
log_truncate_on_rotation       | on                                               | sighup     | configuration file
maintenance_work_mem           | 524288                                           | user       | configuration file
max_connections                | 100                                              | postmaster | configuration file
max_stack_depth                | 2048                                             | superuser  | environment variable
random_page_cost               | 2                                                | user       | configuration file
search_path                    | geo, sas, igeo_pack, cgu_pack, j_geo, jrn_center | user       | user
server_encoding                | UTF8                                             | internal   | override
shared_buffers                 | 131072                                           | postmaster | configuration file
superuser_reserved_connections | 6                                                | postmaster | configuration file
temp_tablespaces               |                                                  | user       | configuration file
TimeZone                       | Europe/Paris                                     | user       | command line
timezone_abbreviations         | Default                                          | user       | command line
transaction_isolation          | read committed                                   | user       | override
transaction_read_only          | off                                              | user       | override
wal_buffers                    | 2048                                             | postmaster | configuration file
wal_level                      | minimal                                          | postmaster | configuration file
work_mem                       | 10240                                            | user       | configuration file
(49 rows)

Merci pour votre aide.

Hors ligne

#4 07/02/2012 10:14:20

Marc Cousin
Membre

Re : Stratégie de LOG et PGFOUINE

En ce qui me concerne, aucune idée de si cvslog fonctionne. Je le fais toujours en stderr ou syslog smile


Marc.

Hors ligne

#5 07/02/2012 13:20:57

mortimer.pw
Membre

Re : Stratégie de LOG et PGFOUINE

Bonjour Marc,

Je voulais faire du CSV car dans la doc postgresql on parle de mettre les logs dans une table.
J'imagine que c'est pour faciliter l'exploitation ??

Pouvez-vous jeter un oeil aux autres questions ci-dessus ?

D'avance merci.

Hors ligne

#6 07/02/2012 13:49:10

Marc Cousin
Membre

Re : Stratégie de LOG et PGFOUINE

Les logs dans une table c'est pour faciliter l'exploitation… si on veut exploiter les logs dans la base (ce qui n'est pas le cas le plus fréquent).

Pour ce qui est du nombre de fichiers et de la stratégie par heure, ce n'est pas un problème: pgfouine peut travailler sur de grosses logs, mais c'est vrai que d'avoir des plus petits fichiers vous permettra de plus facilement cibler ce que vous voulez: plutôt que de demander à pgfouine de filtrer des millions de lignes qui ne l'intéressent pas, autant lui donner tout de suite seulement la période qui l'intéresse.


Marc.

Hors ligne

#7 07/02/2012 14:49:04

mortimer.pw
Membre

Re : Stratégie de LOG et PGFOUINE

Merci Marc.

Puis-je abuser en vous demandant si le fait de modifier le paramètre lc_messages de 'fr_FR.UTF8' vers 'en_US.UTF8' peut avoir un impact autre que le fait de retourner les messages en anglais plutôt qu'en français ?

Hors ligne

#8 07/02/2012 15:32:56

Marc Cousin
Membre

Re : Stratégie de LOG et PGFOUINE

Aucun autre impact.


Marc.

Hors ligne

#9 08/02/2012 09:11:19

mortimer.pw
Membre

Re : Stratégie de LOG et PGFOUINE

Merci encore Marc pour toute l'aide que vous m'apportez.

Hors ligne

Pied de page des forums