Outils pour utilisateurs

Outils du site


echofish

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

echofish [2015/10/06 20:06] (Version actuelle)
Ligne 1: Ligne 1:
 +
 +===== Echofish =====
 +
 +[[:​echofish]]est 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ées[[:​mysql| ]]
 +  * 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:
 +
 +<​code>​
 +cd /usr/local
 +wgethttps://​github.com/​echothrust/​echofish/​archive/​master.zip
 +unzip master.zip
 +mv echofish-master[[:​echofish| ]]
 +</​code>​
 +
 +Activer le gestionnaire d'​évenement [[:​mysql|mysql]] ( event_scheduler=on dans la section **[mysqld]** de // /etc/my.cnf //)
 +<​code>​
 +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
 +</​code>​
 +
 +Copier et mettre au point le fichier d'​accès à la base de données:
 +<​code>​
 +cp htdocs/​protected/​config/​db-sample.php htdocs/​protected/​config/​db[[:​php|.]]
 +vimhtdocs/​protected/​config/​db.php
 +</​code>​
 +
 +Mettre au point la configuration du serveur de mail:
 +<​code>​
 +vimhtdocs/​protected/​config/​mail.php
 +</​code>​
 +
 +Créer le répertoire assets et le rendre accessible en écriture à l'​utilisateur //apache//.
 +
 +<​code>​
 +mkdir /​usr/​local/​Echofish/​htdocs/​assets
 +chown apache /​usr/​local/​Echofish/​htdocs/​assets
 +</​code>​
 +
 +==== Configuration syslog ====
 +
 +Le principe: on configure syslog pour qu'il enregistre les évenements dans une table ([[:​Echofish]]:​archive_bh
 +
 +<​code>​
 +yum install rsyslog-mysql
 +
 +cp contrib/​rsyslog-echofish.conf /​etc/​rsyslog.d/​echofish.conf
 +vim/​etc/​rsyslog.d/​echofish.conf:​
 +
 +
 +</​code>​
 +
 +
 +<​code>​
 +# 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
 +</​code>​
 +
 +Les élements à adapter sont en MAJUSCULES:
 +  * DBHOST : adresse du serveur sql
 +  * DB : base de donnée ([[:​echofish]] dans mon exemple)
 +  * DBUSER : utilisateur sql, [[:​fish|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|apache]].
 +
 +L'​exemple ci-dessous rend l'​interface [[:​fish|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|apache]]:​
 +<​code>​
 +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>​
 +</​code>​
 +
 +==== 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:
 +  - arrêter syslog
 +  - faire un mysqlcheck --optimize echofish archive (il peut être nécessaire de mettre updated_at à la valeur now() avant - <​code>​mysql echofish -e "​update archive set updated_at=now()"</​code>​
 +  - 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)