Tracer une Application LAMP avec les logs Apache Blackbox

Logger avec Apache 2.0

C’est grâce au module Apache mod_logio.c (Logging of input and output bytes per request) que nous allons réaliser des logs de type blackbox.

Liste des modules compilés statiquement:
apache2 -l

Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
prefork.c
http_core.c
mod_so.c

Configuration Apache 2.0

# Blackbox log format
<IfModule mod_logio.c>
LogFormat "%a/%S %X %t \"%r\" %s/%>s %{pid}P/%{tid}P %T/%D %I/%O/%B" blackbox
</IfModule>
<IfModule !mod_logio.c>
LogFormat "%a/%S %X %t \"%r\" %s/%>s %{pid}P/%{tid}P %T/%D 0/0/%B" blackbox
</IfModule>
CustomLog /var/opt/apache2/logs/blackbox blackbox

Si le port source du client ne vous intéresse pas, remplacer %S par 0

Attention!

Pour utiliser pleinement les logs de type BlackBox if va falloir patcher le code source mod_log_config.c ou en créant un module de log dédié. Dans les deux cas, un nouveau format permettra à la directive d’enregistrer le port source de la connexion initiée par le client.

Si vous souhaitez logger le port source du client voici les modifications à opérer.  Pour Apache 2.0 cela se trouve dans les sources modules/loggers/mod_log_config.c

Trouver la fonction définit pour log_remote_address. Ajouter la fonction suivante après elle:

/*
 * log_remote_port patch
 */

static const char *log_remote_port(request_rec *r, char *a)
{
        apr_port_t rport;
        apr_sockaddr_port_get(&rport, r->connection->remote_addr);
        return apr_itoa(r->pool, rport);
}

Trouver une fonction initulée log_pre_config à la fin du fichier et ajouter ce qui suit :

static int log_pre_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp)
{
        .....
        log_pfn_register(p, "s", log_status, 1);
        /* log_remote_port patch */
        log_pfn_register(p, "S", log_remote_port, 0);
    }
    return OK
}

Sauvegarder les modifications, puis recompiler Apache.

Grapher avec Munin

Source: http://www.oreillynet.com/pub/a/apache/2004/04/22/blackbox_logs.html


App

Munin – Ajouter des plugins

munin

C’est simple.

Tous les plugins munin sont contenus dans /usr/share/munin/plugins/
Pour ajouter un plugin il suffit de faire un lien symbolique vers /etc/munin/plugins/

Ajoutons les plugins suivants: apache2*, mysql*.

Apache2

  • apache_accesses
  • apache_processes
  • apache_volume

ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volume

Configurer Apache2:
Activer dans /etc/apache2/apache2.conf :
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1#Plugin Munin Apache2
ExtendedStatus On

a2enmod info

/etc/init.d/apache2 force-reload

Installer la librairie Perl suivante pour que les plugins Apache2 fonctionnent correctement:
apt-get install libwww-perl

Mysql

  • mysql_bytes
  • mysql_isam_space_
  • mysql_queries
  • mysql_slowqueries
  • mysql_threads

ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes
ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries
ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads

Configurer le plugin MySQL pour munin

Pré-requis: créer un utilisateur MySQL.

Dans /etc/munin/plugin-conf.d/munin-node
Remplacer la configuration existante par :

[mysql*]
user root
env.mysqladmin /usr/bin/mysqladmin
env.mysqlopts -u[user] -p[password]

Redémarrer munin-node

/etc/init.d/munin-node restart

Voir les modifications sur les pages Munin:

les catégories Apache et Mysql doivent apparaitre:

Ajouter d’autres plugins Munin

Munin Exchange

Installer les plugins sensors: fan, temp, volt

  1. Installer sensors-detect qui permettra de déterminer quel est le module kernel à charger pour que lm_sensors fonctionne correctement:
    apt-get install lm-sensors
  2. Déterminer le module kernel pour une eeebox:
    sensors-detect

    #—-cut here—-
    # Chip drivers
    w83627ehf
    #—-cut here—-

  3. Charger le module:
    modprobe w83627ehf
  4. Créer les liens symboliques:
  5. Redémmarrer Munin-node:
    /etc/init.d/munin-node restart

Recent Tweets

Catégories