Suivi Apache / Mysql

2016janv.12

Si régulièrement, vous souhaitez faire la correspondance entre les requêtes de votre serveur web Apache et les requêtes réalisées sur votre base de données Mysql, cela peut rapidement être pénible du fait du grand nombre de connexion, de l’horodatage des logs Mysql…

Ci-dessous un petit code tout simple vous permettant de réaliser le parallèle entre les 2 fichiers de logs facilement :

Code à insérer sur votre site internet :

<?php
   if(function_exists('apache_note'))
      apache_note('mysqlID', $thread_id);
?>

Le paramètres « thread_id » est disponible sur les connecteurs :

  • mysqli : $db_connecteur->thread_id
  • pdo : $db_connecteur->query(‘SELECT CONNECTION_ID()’)->fetch(PDO::FETCH_ASSOC)

Une fois ce paramètre envoyé à apache, vous devrait, pour le retrouver, modifier le paramètre LogFormat de votre serveur Apache en y ajoutant le paramètre ci-dessous :

  • « %{mysqlID}n »

puis redémarrer votre serveur apache…

Une fois la manipulation effectuée, vous pourrez retrouver votre correspondance, par exemple :

#fichier log apache
46.105.XX.XX - - [12/Jan/2016:12:42:44 +0100] "GET XXXX HTTP/1.0" 200 3351 "-" "-" "1219828"
#fichier log mysql
1219828 Connect XXX@localhost on 
1219828 Init DB XXXX
1219828 Query SHOW CHARACTER SET
1219828 Query SET NAMES 'utf8'
1219828 Query SELECT count(*) FROM XXXX

Cette modification doit également être possible si vous utilisez un serveur NGinx.

Commentaires

 Clément Levallois
 18000 Bourges
 SIRET : 81783887300021