Aller au contenu

logwatch

Surveiller ses journaux applicatifs (ou fichiers de trace) est une activité nécessaire mais bien souvent rébarbative. De nombreux programmes existent pour nous faciliter la tâche, mais le propre de ces programmes est d’être exhaustifs. De plus, ils demandent une action de la part de l’administrateur, à savoir : penser à aller les regarder.

logwatch est une petite application permettant d’analyser les journaux de nombreux services et de produire un rapport synthétique. Le nombre de services connus est impressionnant et il est simple d’en ajouter de nouveaux. logwatch est le plus souvent intégré à votre distribution Linux.

Après installation, il se lancera tous les jours grâce au fichier /etc/cron.daily/00logwatch. Vous recevrez tous les jours par mail les rapports des événements importants détectés dans les logs. Vous pouvez aussi le lancer manuellement comme dans l’exemple qui suit.

Ce qui est intéressant avec cet outil, c’est qu’il synthétise les messages trouvés dans les traces, donne la date/heure de première apparition dans les traces et la période de temps sur laquelle le message s’est reproduit.

La configuration et le script relatifs au traitement des journaux applicatifs de PostgreSQL par logwatch sont à présent intégrés à logwatch.

Exemple d’utilisation

Note

Ce qui suit suppose que les traces (postgresql.log) de PostgreSQL sont redirigées vers /var/log/postgresql/. C’est le défaut pour les paquets Debian, pas pour les paquets Red Hat/Rocky Linux. Au besoin, modifier le paramètre log_directory dans postgresql.conf, ou le paramètre LogFile dans la configuration de logwatch.

sudo /usr/sbin/logwatch --detail Med --service postgresql --range All

L’exécution peut durer un peu s’il y a beaucoup de lignes.

--range All indique que l’on veut un rapport sur tous les fichiers de traces existants. Pour n’avoir de rapport que sur la journée, la valeur devrait être Today. Celle par défaut est Yesterday.

Il est possible de changer le niveau de détail, avec --detail Low. Seuls les messages de type FATAL, PANIC et ERROR seront alors remontés. Avec la valeur Med comme ci-dessus, les messages de type WARNING et HINTS sont ajoutés aux précédents.

Il est aussi possible d’envoyer le rapport par mail et d’avoir un rapport au format HTML :

sudo /usr/sbin/logwatch --detail Med --service postgresql --range Yesterday --output mail --mailto admin@mydom.com --format html

Exemple de résultat :

 ################### Logwatch 7.3.6 (05/19/07) #################### 
        Processing Initiated: Tue Dec 13 12:28:46 2011
        Date Range Processed: all
        Detail Level of Output: 5
        Type of Output/Format: stdout / text
        Logfiles for Host: devel
  ################################################################## 

 --------------------- PostgreSQL Begin ------------------------ 

 Fatals:
 -------

 9 times:
 [2011-12-04 04:28:46 +/-9 day(s)]  password authentication failed for user "postgres"

 8 times:
 [2011-11-21 10:15:01 +/-11 day(s)]  terminating connection due to administrator command

 6 times:
 [2011-11-01 06:38:20 +/-23 hour(s)]  password authentication failed for user "test"

 4 times:
 [2011-10-24 17:26:24 +/-14 seconds]  Ident authentication failed for user "test"
 [2011-11-24 23:22:02 +/-1 day(s)]  database system is shut down

 3 times:
 [2011-12-10 02:49:02 +/-23 day(s)]  database "test" does not exist

 1 times:
 [2011-12-09 17:39:06]  role "test" is not permitted to log in

 Errors:
 -------

 7 times:
 [2011-11-14 12:20:44 +/-58 minute(s)]  relation "COUNTRIES" does not exist

 6 times:
 [2011-11-14 12:19:43 +/-56 minute(s)]  constraint "dept_loc_fk" of relation "departments" does not exist
 [2011-11-14 12:19:43 +/-56 minute(s)]  constraint "loc_c_id_fk" of relation "locations" does not exist
 [2011-11-14 12:19:43 +/-56 minute(s)]  constraint "dept_mgr_fk" of relation "departments" does not exist
 [2011-11-14 12:19:43 +/-56 minute(s)]  constraint "afpr_aft_fk" of relation "flx_properties" does not exist
 [2011-11-14 12:19:43 +/-56 minute(s)]  constraint "jhist_job_fk" of relation "job_history" does not exist
 [2011-11-14 12:19:43 +/-56 minute(s)]  constraint "emp_manager_fk" of relation "employees" does not exist
 [2011-11-14 12:19:43 +/-56 minute(s)]  constraint "emp_dept_fk" of relation "employees" does not exist
 [2011-11-14 12:19:42 +/-56 minute(s)]  syntax error at or near "dbms_lob"
 [2011-11-14 12:19:43 +/-56 minute(s)]  constraint "emp_job_fk" of relation "employees" does not exist
 [2011-11-14 12:19:42 +/-56 minute(s)]  syntax error at or near "NAME"

 5 times:
 [2011-11-14 12:21:24 +/-59 minute(s)]  syntax error at or near "role_permission_view"

 4 times:
 [2011-12-08 20:46:37 +/-16 hour(s)]  conflicting or redundant options
 [2011-11-01 19:10:33 +/-6 minute(s)]  relation "t_test" does not exist

 2 times:
 [2011-11-14 12:30:51 +/-1 minute(s)]  schema "hr" already exists
 [2011-11-14 14:32:15 +/-4 hour(s)]  syntax error at or near "hr"

 Warnings:
 ---------

 55 times:
 [2011-11-18 12:26:39 +/-6 day(s)]  terminating connection because of crash of another server process

 1 times:
 [2011-11-29 09:05:47]  pgstat wait timeout
 [2011-11-14 16:34:03]  nonstandard use of \' in a string literal

 Hints:
 ------

 55 times:
 [2011-11-18 12:26:39 +/-6 day(s)]  In a moment you should be able to reconnect to the database and repeat your command.

 14 times:
 [2011-12-08 09:47:16 +/-19 day(s)]  No function matches the given name and argument types. You might need to add explicit type casts.

 2 times:
 [2011-10-10 17:38:28 +/-3 minute(s)]  No operator matches the given name and argument type(s). You might need to add explicit type casts.
 [2011-10-25 09:18:52 +/-2 seconds]  Consider increasing the configuration parameter "checkpoint_segments".

 1 times:
 [2011-11-15 15:20:50]  Could not choose a best candidate function. You might need to add explicit type casts.
 [2011-11-14 16:34:03]  Use '' to write quotes in strings, or use the escape string syntax (E'...').


 ---------------------- PostgreSQL End ------------------------- 


 ###################### Logwatch End ######################### 

Adaptation de la configuration

La configuration livrée par défaut est dans :

  • /usr/share/logwatch/default.conf/services/postgresql.conf
  • /usr/share/logwatch/default.conf/logfiles/postgresql.conf

L’adaptation de la configuration est décrite dans le fichier /usr/share/doc/logwatch/HOWTO-Customize-LogWatch (compressé en .gz sous Debian) (version en ligne). En résumé, les paramètres modifiés doivent être écrits dans /etc/logwatch/conf/, et ils surchargeront la configuration précédente.

Danger

Ne pas modifier la configuration dans /usr/share/logwatch/default.conf/ !

Références