web-dev-qa-db-fra.com

Comment surveiller le serveur pour une erreur lors de l'établissement d'une connexion à une base de données

Je sais qu’il existe des outils tels que pingdom.com et uptimerobot.com qui surveilleront votre site et vous informeront s’ils sont en panne, mais j’aperçois que mon site WordPress connaît une redoutable "erreur d’établissement" une connexion à la base de données "plus souvent que souhaité, et j'aimerais obtenir une sorte de notification lorsque cela se produit (mais pas sous la forme d'une plainte de l'utilisateur!). Pingdom et Uptimerobot ne considèrent pas cette erreur comme une erreur et ne diffusent donc aucune notification.

Existe-t-il des outils ou des méthodes simples permettant de surveiller mon site pour ce problème spécifique (et peut-être d’autres problèmes?) Qui pourraient ne pas être détectés autrement.

[Edit] 1. Je fais spécifiquement référence à la célèbre erreur WordPress qui se produit souvent pour diverses raisons de connectivité à la base de données. Lorsque l'erreur se produit, visiter le site renvoie la page blanche par défaut avec le texte présenté ci-dessous.

  1. Pour les besoins de cette question, je ne cherche pas à savoir pourquoi cela se produit ni comment y remédier, mais j'aimerais simplement savoir comment le surveiller automatiquement et en être averti . Merci.

 enter image description here 

3
fortuneRice

Vous pouvez réellement utiliser Pingdom pour rechercher ce type d'erreur, plutôt que de rechercher directement une réponse du serveur. Vous pouvez configurer le contrôle pour rechercher une chaîne particulière sur la page. Par exemple, si votre page contient une sorte de texte cohérent sur la page d'accueil, vous pouvez le rechercher.

Ce message Pingdom contient des informations sur la vérification des chaînes:

Tirez le meilleur parti de votre vérification HTTP: bonne pratique pour les paramètres facultatifs

Vous pouvez également vérifier qu’il n’a pas de chaîne particulière. Vous devriez donc pouvoir le signaler comme étant en panne s’il affiche le texte "Erreur lors de l’établissement d’une connexion à une base de données".

2
Rick Curran

Vous pouvez remplacer le message avec un fichier wp-content/db-error.php.

Ensuite, dans ce fichier, vous pouvez enregistrer l’erreur ou envoyer un e-mail pour signaler un problème. Je vous recommande de ne pas envoyer d'e-mail à chaque erreur car vous pouvez recevoir beaucoup d'e-mails en quelques secondes.

2
mmm

Comment vous connectez-vous à la base de données? Ne pourriez-vous pas intercepter une exception qui vous envoie un courrier électronique?

Avec WordPress, je suppose que c'est PHP, alors ...

            try {
                    // connect to database
            } catch(PDOException $ex) {
                    $this->output_error_string .= "$ex";
                    mail(/* send mail */);
            }
1
sdexp

Il y a probablement plusieurs façons externes de le faire qui ne sont pas spécifiques à WordPress, comme faire un http obtenir une fois par minute (ou plus) de la page d'accueil et vérifier son contenu. peut même être fait à partir d’un hôte local ou d’un hôte différent.

La solution de côté de Wordpress, dans une variante de ce que suggère @sdexp, consiste à remplacer la classe wpdb en fournissant sa propre implémentation (dans un fichier wpdb.php placé dans/wp-content), qui diffère de la classe principale par l'action en cours lorsque la connexion échoue. Il s’agit bien entendu d’une fourchette souple de wpdb mais cette classe ne change pas beaucoup et avec une utilisation intelligente des méthodes magiques php call, set et get dans votre implémentation, vous pouvez minimiser encore davantage la possibilité d’un futur échec.

Votre meilleur chemin consiste toujours à utiliser un service externe. La surveillance est étonnamment quelque chose qu'il n'est pas facile de faire correctement si vous ne l'avez pas déjà fait. Quel service? StackOverflow ou ServerFault sont probablement de meilleurs endroits pour poser des questions car ce n’est vraiment pas un problème spécifique à Wordpress.

0
Mark Kaplun