Outils pour utilisateurs

Outils du site


echofish

Echofish

echofishest une solution de supervision des logs. Elle permet, aux moyens de filtres, d'ignorer les messages syslog habituels afin de mettre en valeur les évènements inhabituels.

Ses avantages par rapport à logcheck:

  • interface de consultation plus sexy
  • facilité de création de nouveaux filtres
  • possibilité d'ignorer un ou plusieurs message facilement
  • possibilité de marquer un message comme ayant été traité

Ses inconvénients:

  • Installation encore un peu complexe.
  • Nécessité d'utiliser une base de donnéesmysql
  • Produit encore jeune

Introduction

Prérequis

httpd + mysql-server + php-mysql

Installer https://github.com/mysqludf/lib_mysqludf_preg/:

yum install pcre-devel mysql-devel gcc wget https://github.com/mysqludf/lib_mysqludf_preg/archive/master.zip unzip master.zip cd lib_mysqludf_pgre ./configure && make && sudo make install && sudo make installdb

Installation

Télécharger et décompresser la dernière version:

cd /usr/local
wgethttps://github.com/echothrust/echofish/archive/master.zip
unzip master.zip
mv echofish-master[[:echofish| ]]

Activer le gestionnaire d'évenement mysql ( event_scheduler=on dans la section [mysqld] de /etc/my.cnf )

mysql-u root -p -h sql_server_address

create database[[:echofish| ]]

grant all on echofish.* to fish@'127.0.0.1' identified by 'lost nemo again' ;
exit

mysqlmysql < schema/00_echofish-schema.sql 
mysqlmysql < schema/echofish-dataonly.sql 
mysqlmysql < schema/echofish-functions.sql 
mysqlmysql < schema/echofish-procedures.sql 
mysqlmysql < schema/echofish-triggers.sql 
mysqlmysql < schema/echofish-events.sql

Copier et mettre au point le fichier d'accès à la base de données:

cp htdocs/protected/config/db-sample.php htdocs/protected/config/db[[:php|.]]
vimhtdocs/protected/config/db.php

Mettre au point la configuration du serveur de mail:

vimhtdocs/protected/config/mail.php

Créer le répertoire assets et le rendre accessible en écriture à l'utilisateur apache.

mkdir /usr/local/Echofish/htdocs/assets
chown apache /usr/local/Echofish/htdocs/assets

Configuration syslog

Le principe: on configure syslog pour qu'il enregistre les évenements dans une table (Echofish:archive_bh

yum install rsyslog-mysql

cp contrib/rsyslog-echofish.conf /etc/rsyslog.d/echofish.conf
vim/etc/rsyslog.d/echofish.conf:

# sql + rules for rsyslog integration with[[:echofish| ]]
# Include this into your rsyslog.conf or place under /etc/rsyslog.d/

Changer IP, DBHOST, DB, DBUSER, PASS en fonction de votre configuration.

# Load rsyslog rsyslog plugin
$ModLoad ommysql.so

# Generic template
$template dbFormat,"INSERT INTO archive_bh (host, facility, priority, level, received_ts, program, msg,pid,tag,updated_at) VALUES ( '%fromhost-ip%', '%syslogfacility%', '%syslogpriority%','%syslogseverity%', '%timereported:::date-mysql%', TRIM('%programname%'), TRIM('%msg%'),'', '%syslogtag%', '%timereported:::date-mysql%' );\n",sql

# Specific template for loghost (127.0.0.1)
# To avoid logging as 127.0.0.1 uncomment the following lines and change A.B.C.D to the loghost's IP addr.
$template dbFormatLocal,"INSERT INTO archive_bh (host, facility, priority, level, received_ts, program, msg,pid,tag, updated_at) VALUES ( 'IP', '%syslogfacility%', '%syslogpriority%','%syslogseverity%', '%timereported:::date-mysql%', TRIM('%programname%'), TRIM('%msg%'),'', '%syslogtag%', '%timereported:::date-mysql%' );\n",sql
if $fromhost-ip != '127.0.0.1' then :ommysql:DBHOST,DB,DBUSER,PASS;dbFormat
& ~
if $fromhost-ip == '127.0.0.1' then :ommysql:DBHOST,DB,DBUSER,PASS;dbFormatLocal

# If you enabled loghost template above, comment-out the following line.
*.* :ommysql:DBHOST,DB,DBUSER,PASS;dbFormat

Les élements à adapter sont en MAJUSCULES:

  • DBHOST : adresse du serveur sql
  • DB : base de donnée (echofish dans mon exemple)
  • DBUSER : utilisateur sql, fish dans mon cas
  • PASS : mot de passe utilisateur sql (lost nemo again dans mon cas)
  • IP : adress ip du loghost (la machine sur laquelle est installé echofish)

Configuration apache

Sans m'étendre dans les détails, les fichiers constituant l'interface web d'echofish sont dans le sous répertoire htdocs qui doit être publié par apache.

L'exemple ci-dessous rend l'interface echofish accessible à l'adresse https://serveur/log avec SSL et authentification http, dont la mise en place déborde du cadre de ce document.

Je pars du principe que echofish a été décompressé dans /usr/local/Echofish :

Créer la configuration apache:

include redirect_to_https.conf

Alias /log /usr/local/Echofish/htdocs/

<Directory "/usr/local/Echofish/htdocs/">
   SSLRequireSSL
   AllowOverride None
   Order allow,deny
   Allow from all
   AuthName "echofish Access"
   AuthType Basic
   AuthUserfile passwd
   Require valid-user
</Directory>

Utilisation

Pointez un navigateur sur https://IP/log

Connectez-vous à travers l'authentification http à l'aide du compte défini l'étape ci-dessus.

Connectez-vous ensuite à l'interface à l'aide des informations d'authentification suivante:

  • admin
  • admin

Changez le mot de passe de l'admin

Valider un ou plusieurs messages

Créer un filtre à partir d'un message

Purge des logs

Aller sur la page de consultation des archives : faire un “purge archive”

Pour récupérer de l'espace disque:

  1. arrêter syslog
  2. faire un mysqlcheck –optimize echofish archive (il peut être nécessaire de mettre updated_at à la valeur now() avant -
    mysql echofish -e "update archive set updated_at=now()"
  3. relancer rsyslog

Cela ne marche que si mysql est configuré avec innodb_file_per_table

Remarques diverses

workflow

syslog ajouter les lignes dans la table archive_bh ce qui déclenche des triggers qui vont peupler la table archive après filtrage, peupler syslog et hosts

l'ajout dans la table archive va entraîner la mise à jour de la table archive_unparse et archive_counter.

On a ensuite un évenement mysql qui va parser régulièrement les entrées de la table archive_unparse

db error (1062): Duplicate entry '380' for key 'PRIMARY'

Je pense que ces erreurs sont dues à une non synchro (suite à nettoyage manuel des tables ?) des valeur d'auto_increment des tables syslog et archive.

configuration

L'un des triiger fait référence à la table sysconf et la valeur archive_activated qui semble influer sur le fait qu'on archive ou pas la table.

# vim: set filetype=dokuwiki:

echofish.txt · Dernière modification: 2015/10/06 20:06 (modification externe)