Pas Tout A Fait

Aller au contenu | Aller au menu | Aller à la recherche

Analyser les logs de NGinx avec LogWatch

Dernière mise à jour le 18 octobre 2012

LogWatch est un excellent outil pour obtenir un rapport quotidien de l'activité d'un serveur. Il dispose d'une configuration par défaut pour le serveur web Apache, mais rien pour les autres serveurs web, comme NGinx. Nous allons donc faire le tour des quelques modifications à effectuer pour lui permettre d'analyser correctement les logs de NGinx.

nginx.jpg

Préparer NGinx

Pour que les modifications effectuées plus loin à LogWatch soient fonctionnelles, il faut d'abord s'assurer que Nginx enregistre bien les logs d'accès au format "Combined Log Format". Ce format est une extension du "Common Log Format", il contient deux champs supplémentaires, "referer" et "useragent". Consultez la documentation d'Apache pour plus d'informations sur le format des logs d'accès.

Pour bien enregistrer dans le bon format, il suffit, dans le fichier de configuration du VHost de NGinx, de s'assurer de la présence du mot "combined" dans la déclaration du chemin du fichier de log, comme ci-dessous :

access_log /var/log/nginx/www.domain.tld_access.log combined;

Avec une telle ligne, c'est bon ! Plus d'informations sur les logs avec Nginx dans la documentation.

À propos de LogWatch

La configuration de LogWatch est un peu particulière. Le répertoire "/etc/logwatch/conf" est d'abord analysé à la recherche de fichiers avec le même nom et la même location par rapport au répertoire "/usr/share/logwatch/default.conf". Les variables déclarées dans "/etc/logwatch/conf/" écrasent celles par défauts.

Par exemple, si le fichier "/etc/logwatch/conf/logwatch.conf" contient uniquement la ligne :

MailTo = mail@domaine.tld

Alors l'adresse de destination d'un rapport sera "mail@domain.tld" au lieu de celle par défaut. Toutes les autres variables du fichier "logwatch.conf" seront celles par défaut.

Pour compliquer l'affaire, il est également possible d'utiliser un fichier "/etc/logwatch/conf/override.conf", avec une syntaxe particulière. Je ne rentre pas dans les détails.


Modification de LogWatch

Adapter LogWatch à NGinx s'effectue en trois étapes.

Étape 1

On commence par créer un fichier nginx.conf dans le répertoire "/usr/share/logwatch/default.conf/logfiles/", en prenant comme modèle le fichier par défaut pour un serveur web.

cd /usr/share/logwatch/default.conf/logfiles/
cp  httpd.conf nginx.conf

Éditons maintenant ce fichier nginx.conf pour indiquer le chemin vers les fichiers de logs de NGinx.
Attention aux chemins absolus, qui posent parfois problèmes, chez moi LogWatch ne fonctionne pas si un chemin absolu est indiqué...

Par défaut, la variable "LogDir" est "/var/log". Les chemins à indiquer sont relatifs à ce répertoire.
Si certains de vos fichiers de logs se trouvent hors de "/var/log", le plus simple est de créer un lien symbolique dans "/var/log/" vers chacun de ces fichiers.

Par exemple, pour un fichier localisé dans "/var/log/nginx/domain.tld_access.log", vous pouvez indiquer "LogFile = nginx/domain.tld_access.log".

C'est ce que fait l'exemple ci-dessous, en indiquant tous les fichiers se terminant par "access.log" dans le répertoire "/var/log/nginx".

########################################################
# Define log file group for nginx
########################################################

# What actual file? Defaults to LogPath if not absolute path….
LogFile = nginx/*access.log

# If the archives are searched, here is one or more line
# (optionally containing wildcards) that tell where they are…
#If you use a “-” in naming add that as well -mgt
Archive = nginx/*access.log*

# Expand the repeats (actually just removes them now)
*ExpandRepeats

# Keep only the lines in the proper date range…
*ApplyhttpDate

# vi: shiftwidth=3 tabstop=3 et
Étape 2

On commence de la même façon que l'étape précédente, mais cette fois ci dans le répertoire "/usr/share/logwatch/default.conf/services/"

cd /usr/share/logwatch/default.conf/services/
cp  httpd.conf nginx.conf

Éditez ce nouveau fichier nginx.conf pour obtenir ceci au début du fichier :

###########################################################################
# Configuration file for nginx filter
###########################################################################

Title = “nginx”

# Which logfile group…
LogFile = nginx
Étape 3

C'est la dernière, et elle est encore plus simple (oui c'est possible !) :

Il suffit de créer un fichier "nginx" identique au fichier "http" dans le répertoire "/usr/share/logwatch/scripts/services" :

cd /usr/share/logwatch/scripts/services
cp http nginx

Et voilà, rien à modifier dans ce fichier.

Vous pouvez maintenant lancer un petit test avec :

logwatch --output stdout --format text --detail high --service nginx --range today

logwatch-show.png

Si tout est ok, il ne reste plus qu'à lancer LogWatch régulièrement avec Cron, et il analysera correctement vos logs NGinx !

Sources : http://8bitpipe.com/ et http://www.stellarcore.net

Matthieu Patout

Auteur: Matthieu Patout

Restez au courant de l'actualité et abonnez-vous au Flux RSS

Les commentaires sont fermés


aucune annexe



Voir Aussi

gitlist-logo.png

Installation et configuration de GitList

Les interfaces web pour consulter les dépôts Git ne manquent pas. Un nouveau venu plutôt sympathique...

Lire la suite

v6day-logo1.png

Activer le support IPv6 de NGinx

Voici un très court billet pour se souvenir de comment activer IPv6 avec NGinx, et pour régler le...

Lire la suite