Accès log apache "error.log" avec kimsufi
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
Question

Accès log apache "error.log" avec kimsufi

by
AlineR
Created on 2017-02-25 11:27:17 (edited on 2024-09-04 11:22:17) in Hébergements Web

Bonjour,
J'ai souscrit à l'offre d'hébergement mutualisé "kimsufi" (sans accès ssh donc!). J'essaie de faire quelque chose qui semble très simple mais qui s'avère mission impossible!
Je précise que j'ai bien lu la doc en ligne https://docs.ovh.com/fr/fr/web/hosting/mutualise-consulter-les-statistiques-et-les-logs-de-mon-site/ mais ça ne répond pas à ma question.
Voilà mon problème: je souhaite accéder au log apache error.log qui est généralement présent sous /var/log/apache2/error.log sur les serveurs unix (configuré par "ErrorLog ${APACHE_LOG_DIR}/error.log" dans /etc/apache2/sites-available/000-default.conf)
L'interface d'accès aux logs fournie par ovh n'affiche pas ces logs d'erreur (même dans "OVH speed log" section "error" où on s'attendrait à les trouver)
Par exemple: j'ai du code php qui fait une requête dans une BDD mysql. Pour tester j'ai volontairement changé le nom d'une colonne. Voilà le log que j'aimerais voir apparaitre quelque part:
`[Fri Feb 24 08:20:07.213058 2017] [:error] [pid 4258] [client 127.0.0.1:49466] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'e.iddd' in 'field list'' in /var/www/html/fetch-data.php:59\nStack trace:\n#0 /var/www/html/fetch-data.php(59): PDO->query('? SELE...')\n#1 {main}\n thrown in /var/www/html/fetch-data.php on line 59, referer: http://localhost/zones.html`

J'ai un serveur de test en local où ce log apparait dans /var/log/apache2/error.log mais impossible de trouver ce log sur OVH.
Voilà les divers contournements que j'ai tenté: tous fonctionnent sur mon serveur local mais aucun sur l'hébergement mutualisé:

- Ajout d'un .htaccess dans le répertoire qui contient le php avec notamment "php_value error_log PHP_errors.log"
J'obtiens dans le "OVH speed log/error" :
`Invalid command 'php_flag', perhaps misspelled or defined by a module not included in the server configuration`

- Configuration du error_log dans le code php (j'ai anonymisé le chemin mais je suis sur qu'il est correct, je l'ai trouvé dans un des logs du "speed log"):
`ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
ini_set('error_log', "/homez.xx/xxx/www/demo/php_errors.log");`

J'ai aussi tenté
`ini_set('error_log', "syslog");`
et
`ini_set('error_log', "/home/xxx/www/php_errors.log");`
(où /home/xxx est le "Home directory path:" trouvé dans la section "FTP-SSH" de l'interface d'administration)
mais ça n'apparait pas dans le log configuré ni dans le "speed log / error" où aucun log n'apparait.

Dans tous les cas la seule information que j'ai est le code 500 dans la section web du "speed log" (ce qui correspond au fichier /var/log/apache2/access.log)

Je commence à arriver à court d'idée. Je ne comprends pas comment on peut maintenir un site en production sans pouvoir accéder aux logs d'erreur, il doit bien y avoir un moyen??

Je précise que le site est configuré avec php 7.0:
engine : php
mode: production
application firewall: deactivated.

Merci pour votre aide


16 Replies ( Latest reply on 2024-09-04 14:25:10 by
janus57
)

Tu es sur un cluster, l'exécution de ton site est reparti aléatoirement sur des centaines de serveurs...
Chaque serveur envoit donc les logs sur un serveur de logo qui se chargent de les agréger.
Je ne pense pas que tu puisses y accéder depuis ton serveur. Tu dois passer par logs.ovh.net comme c'est indiqué dans la documentation...

Bonjour Buddy,
Merci pour cette information. Cependant il semble que seuls les logs "access.log" de apache sont agrégés, pas les logs "error.log" ce qui pose de gros soucis de supervision: en cas d'incident, impossible de savoir ce qui s'est passé. Il n 'y a donc aucun moyen d'accéder aux logs d'erreur php sur les serveurs mutualisés ovh? Il faudrait une offre de niveau "pro" pour pouvoir accéder aux logs d'erreur php?

Bonjour,

d'après la doc :

Logs Web : trouvez ici les différents logs de consultation de votre site, ainsi que les différentes actions réalisées à partir de votre site. Cela vous permet par exemple de repérer des tentatives de hacks.
Logs FTP : les différentes connexions FTP seront enregistrées et conservées dans ces logs.
Logs erreur : les différentes erreurs générées par votre site.
Logs CGI : les différents appels aux scripts cgi.bin qui ont été réalisés.
Logs out : les statistiques de votre hébergement sur les différents appels externes réalisés.
Logs SSH : ces logs indiquent les différentes connexions réalisées avec le protocole SSH.
Logs cron : le résultat de l’exécution de vos tâches planifiées (http://guides.ovh.com/MutualiseCron)

Cf : https://docs.ovh.com/fr/fr/web/hosting/mutualise-consulter-les-statistiques-et-les-logs-de-mon-site/#logs-bruts

Donc normalement il y a bien les logs d'erreurs qui sont remontés.

Cordialement, janus57


Logs erreur : les différentes erreurs générées par votre site.


Janus,
Oui oui, j'ai bien lu la documentation et j'ai bien regardé tous les logs. Le log "erreur" ne contient malheureusement pas les logs php provenant des erreurs non catchées. Ces erreurs qui apparaissent habituellement dans le log apache "/var/log/apache2/error.log" n'apparaissent nul part dans les logs OVH.

Si quelqu'un veut reproduire c'est très simple:
- mettre php en mode "production" dans la console d'administration OVH (en mode "développement" l'erreur est affichée directement dans la page servie): Hostings / General information / Global PHP version / Modify configuration / Modify the current configuration
- faire une page test_erreur.php avec le contenu suivant:
` $db = new PDO(
'mysql:host=host;port=1000;dbname=db;charset=utf8',
"username",
"pwd",
array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$stmt = $db->query('select current_date;');
?>`

- Accéder à la page.
- Attendre 5mn (temps de mis à jour des logs OVH)
- Consulter les logs OVH: l'erreur n'apparait nul part.

En revanche, déposer le même fichier php sur n'importe quel serveur apache avec la configuration par défaut, vous trouverez dans le /var/log/apache2/error.log:
`[Sat Feb 25 21:06:05.567629 2017] [:error] [pid 7397] [client 127.0.0.1:44650] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2005] Unknown MySQL server host 'host' (20)' in /var/www/html/test_erreur.php:8\nStack trace:\n#0 /var/www/html/test_erreur.php(8): PDO->__construct('mysql:host=host...', 'username', 'pwd', Array)\n#1 {main}\n thrown in /var/www/html/test_erreur.php on line 8
`

Si quelqu'un trouve bien cette erreur quelque part dans les logs OVH sur un hébergement mutualisé kimsufi ça m'intéresse! Il y a peut-être un souci dans la configuration de mon hébergement.

Merci


Il y a peut-être un souci dans la configuration de mon hébergement.

Bonjour @AlineR
Absolument pas.
Aucun hébergement mutualisé n'a actuellement d'accès aux logs apache.
Tu devras traiter ces erreurs dans tes scripts ou bien prendre un serveur Kimsufi ou VPS géré par tes soins.

Bonjour,

pourtant j'ai déjà aidé des personnes qui sont en mutu OVH et ils ont réussit à me fournir les logs apache (access et error).

Cordialement, janus57

Oui, ceux-là :


Logs Web : trouvez ici les différents logs de consultation de votre site, ainsi que les différentes actions réalisées à partir de votre site. Cela vous permet par exemple de repérer des tentatives de hacks.
Logs erreur : les différentes erreurs générées par votre site.

Mais pas ceux reflétant les erreurs PHP.

Bonjour,

pour afficher les erreurs php, il faut créer un OVH config avec le code suivant (qui utilise php 7.0)

app.engine=php
app.engine.version=7.0
http.firewall=none
environment=development
container.image=stable

Puis pour remettre le serveur en mode "normal" sans afficher les erreurs phps à tout le monde,
> app.engine=php
> app.engine.version=7.0
> http.firewall=none
> environment=production
> container.image=stable

Buddy,
C'est vrai, c'est une façon de faire pendant qu'on fait les développements. Cependant le mode développement n'est pas optimisé pour la production. Lorsqu'on passe en mode production, il n'y a dès lors plus de moyen de connaitre la source d'un éventuel incident si ça vient d'une erreur php (ou n'importe quelle erreur liée à la base de données si on y accède en PHP comme dans mon exemple).
Pour le code que j'ai fait en spécifique j'ai adressé le problème en catchant toutes les exceptions au niveau php et en loggant l'erreur manuellement:
` try {
...
catch (Exception $e) {
$logFile = fopen("phpError.log", "a") or die("Unable to open file!");
$logMessage = date('Y-m-d_H:i:s') . " ERROR " . $e . "\n";
fwrite($logFile, $logMessage);
fclose($logFile);
}
?>
`

Cependant j'utilise aussi un CMS (joomla) et je ne suis pas persuadé que toutes les exceptions PHP sont systématiquement catchées

Si tu modifiés un code c'est que tu fais du développement non ?

Je pense que c'est comme ça que ovh le voit.

Quand j'ai un script qui bug, je me mets 5 à 10 min en développement puis je remets production une fois debuggué

Pas en phase non :).
On peut avoir du code stable qui tourne pendant des mois en production, puis un jour il y a un incident pas forcément lié au code d'ailleurs: filesystem full au hasard, tablespace plein ou pire: un problème aléatoire qui ne se reproduit pas systématiquement, et si tu n'as pas de logs, aucun moyen de savoir ce qui s'est passé à part mettre le site en mode développement jusqu'à ce que ça veuille bien se reproduire.
Dans le pire des cas, ton problème se produit en mode production mais pas en mode développement (ça s'est déjà vu...). Bref si la question c'est "est-ce qu'on a besoin de logs en mode production" je crois que la réponse est évidente.
Je pense plutôt qu'il y a une limitation technique au niveau du format des logs du "error.log" qui fait qu'OVH ne sait pas à quel site chaque log appartient, mais il y a peut-être un contournement. J'ai ouvert un ticket, je mettrai la réponse dans ce thread.


Je pense plutôt qu'il y a une limitation technique au niveau du format des logs du "error.log" qui fait qu'OVH ne sait pas à quel site chaque log appartient, mais il y a peut-être un contournement. J'ai ouvert un ticket, je mettrai la réponse dans ce thread.


Si c'était résolu ce serait une excellente nouvelle !

C'est mort, le support m'invite à souscrire à une offre serveur dédié ou VPS :)


Je pense plutôt qu'il y a une limitation technique au niveau du format des logs du "error.log" qui fait qu'OVH ne sait pas à quel site chaque log appartient, mais il y a peut-être un contournement. J'ai ouvert un ticket, je mettrai la réponse dans ce thread.


Euh, non, nos error_log fonctionnent trés bien :slight_smile:

Encore une fake news ! Ca n'arrête pas en ce moment :stuck_out_tongue:

Ah non vcasse c'est pas fake. y'a effectivement quelques messages d'erreur qui se balladent dans le log d'erreur accéssible via l'interface web, comme les messages "request failed: error reading the headers" et "(22)Invalid argument: Cannot fix environment variables for container, continue anyway." qu'il semble raisonnable d'ignorer. Par contre il n'y a pas les erreurs php non catchées. As-tu tenté de reproduire mon problème avec le code que j'ai donné?
J'ai ouvert le ticket 5209880138 à ce sujet et voilà ce que le technicien m'a répondu:
> Suite à une vérification interne , il s'avère
> en effet que
> votre offre mutualisé ne permet malheureusement pas d'accéder à l'ensemble des
> logs comme pour une offre VPS ou serveur dédié.

puis:
> je précise que pour les offres d'hébergement mutualisé , les ressources de ce
> serveur sont donc partagé par plusieurs milliers de clients,
> d'où l'existence ce certaines restrictions.
> Si vous souhaitez plus de disponibilité, je vous invite à souscrire à une
> offre serveur dédié ou VPS.
> Nous proposons des serveur dédié ou VPS sur lequel vous aurez accès
> administrateur pour installer et configurer tous les outils dont vous aurez
> besoin :
> http://www.ovh.com/fr/vps/
> http://www.ovh.com/fr/dedie/

Je suis sur l'offre kimsufi perso2014 . Quelle offre as-tu?