WEB-d Développement Web

PHP, SQL, HTML5, CSS3, Javascript, Mootools, Référencement, SEO, CMS, e-commerce, Apache, Linux, Ubuntu, ...

Installer l'analyseur de logs Graylog2 sur Ubuntu 12.04

Graylog2 est un système puissant d'analyse des messages de logs.

Screenshot de Graylog2

Il se compose de 2 parties: le graylog2-server qui reçoit les messages syslogs, éventuellement de plusieurs serveurs, et les stocke dans une base de données MongoDB. La deuxième partie, graylog2-web, permet de visionner et d'analyser les messages logs depuis son navigateur.

Installation de graylog2-server

Mick Pollard a créé un repository qui permet d'installer Graylog2 avec apt-get. Il suffit donc d'ajouter le repository, puis d'installer Graylog2 et ses dépendances (MongoDB et Elasticsearch):


echo 'deb http://ppa.lunix.com.au/ubuntu/ precise main' | sudo tee /etc/apt/sources.list.d/aussielunix.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv D77A4DCC
sudo apt-get update
sudo apt-get install mongodb elasticsearch graylog2-server graylog2-web

Si nécessaire, les fichiers de configuration de Graylog2 et de Elasticsearch sont les suivants:

On peut ensuite les démarrer:


sudo service elasticsearch start
sudo service mongodb start
sudo service graylog2-server start

Pour que syslog envoie ses messages à Graylog2, il faut créer un fichier /etc/rsyslog.d/32-graylog2.conf contenant la ligne suivante:

*.*     @localhost

Il faut ensuite redémarrer le serveur syslog:

sudo service rsyslog restart

Graylog2-web avec Apache

Graylog2-web est une application web RubyOnRails. Pour qu'elle fonctionne au-dessus d'un serveur web Apache, il faut d'abord installer le module Phusion Passenger.

Phusion Passenger

Phusion Passenger

Phusion Passenger s'installe grâce à RubyGem:


sudo apt-get install apache2-dev gem libcurl4-openssl-dev
sudo gem install passenger
sudo passenger-install-apache2-module

Pour charger et configurer le module Passenger, créer le fichier /etc/apache2/mods-available/passenger.load:

LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-3.0.18/ext/apache2/mod_passenger.so

Puis le fichier /etc/apache2/mods-available/passenger.conf:
<IfModule mod_passenger.c>
   PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.18
   PassengerRuby /usr/bin/ruby1.8
</IfModule>

Puis activer le module Passenger, et redémarrer Apache:


sudo a2enmod passenger
sudo service apache2 restart

Graylog2-web

Par défaut, l'application web graylog2-web est installée dans le répertoire /usr/share/graylog2-web, alors que le VirtualHost par défaut de Apache se trouve dans /var/www.

Pour installer graylog2-web dans un sous-répertoire (par exemple pour y accéder grâce à l'URL http://mon.serveur.com/graylog2), il faut donc d'abord créer un lien symbolique:

ln -s /usr/share/graylog2-web/public /var/www/graylog2

Il faut ensuite configurer ce VirtualHost, dans /etc/apache2/sites-enabled/000-default:


# Indique que le chemin /graylog2 est une application RubyOnRails
RailsBaseURI /graylog2

<Directory /var/www/graylog2>
    # Pour que l'application fonctionne,
    # il faut désactiver l'option MultiViews
    Options -MultiViews
</Directory>

Envoyer les erreurs Apache vers syslog

Pour que Apache envoie ses messages logs vers syslog, au lieu de les écrire lui-même dans error.log, il faut modifier /etc/apache2/apache2.conf, et le fichier de chaque VirtualHost, situés dans /etc/apache2/sites-enabled/:

ErrorLog syslog:local7

"local7" est le "facility" utilisé. Il existe plusieurs possibilités. La liste est disponible sur la page Rsyslog de Gentoo-Wiki.

Bug de Graylog2-web dans un sous-dossier

Si comme moi ci-dessus vous installez graylog2-web dans un sous-dossier, et pas sur son propre VirtualHost, vous devrez corriger les lignes 180 et 189 du fichier /var/www/graylog2/javascripts/application.js: $.post( relative_url_root + "/health/..."

Niveau de gravité des logs PHP

Lorsqu'on dirige les erreurs PHP vers Apache, celui-ci donne à tous les messages le niveau "Error", qu'il s'agisse d'un "Warnging", "Notice", ou d'un véritable "Error". Pour leur redonner leur véritable niveau de gravité, il va falloir ajouter des règles dans graylog2. Il faut d'abord modifier le fichier /etc/graylog2.conf:

rules_file = /etc/graylog2.d/rules/graylog2.drl

Puis créer le répertoire des règles:

sudo mkdir -p /etc/graylog2.d/rules

Et enfin créer le fichier des règles, /etc/graylog2.d/rules/graylog2.drl:


import org.graylog2.messagehandlers.gelf.GELFMessage

rule "PHP Fatal error"
        when
                m : GELFMessage( fullMessage matches ".*PHP Fatal error.*" )
        then
                m.setLevel(3);
end

rule "PHP Warning"
        when
                m : GELFMessage( fullMessage matches ".*PHP Warning.*" )
        then
                m.setLevel(4);
end

rule "PHP Notice"
        when
                m : GELFMessage( fullMessage matches ".*PHP Notice.*" )
        then
                m.setLevel(5);
end

Vous pouvez finalement analyser vos logs en temps réel en utilisant votre navigateur à la page http://mon.serveur.com/graylog2

Articles similaires