Nous allons voir comment lire le statut HTTP d’un site internet avec Google Sheets et envoyer un email automatique en cas d’anomalie.
J’ai rencontré des soucis (non résolus 10 jours après mon premier signalement…) avec mon hébergement Plesk. Il arrive que la base de données de l’hébergement soit en panne et on n’a aucun moyen de le savoir sans essayer d’accéder à l’un des sites de l’hébergement. Les systèmes habituels de vérification par « ping » ne donne pas satisfaction car les sites répondent à un ping mais sont inaccessible depuis un navigateur (le code HTTP n’est pas 200). Comme mon fournisseur d’hébergement se montre incapable d’accepter qu’il y a un problème ou au moins de générer une alerte automatique en cas de panne de la base de données, j’ai décidé de créer un système d’alerte automatique.
Obtenir le code HTTP de réponse d’un site avec Google Sheets
J’ai créé un fichier Google Sheets dans lequel j’ai placé le tableau suivant :
site
url
statut
parcours-P
parcours-performance.com
=VALUE(HTTPResponse(B3))
knowledge PP
knowledge.parcours-performance.com
=VALUE(HTTPResponse(B4))
Ce qui donne ce qui suit dans Google Sheets :
Google Sheets : surveiller le code httpde sites
Avec l’éditeur de scripts (menu « Outils »), j’ai créé la fonction HTTPResponse .
/*****************************************************************
* check websites for http response
*****************************************************************/
function HTTPResponse( uri )
{
/* source https://atulhost.com/how-to-pull-an-http-response-code-in-google-sheet */
var response_code ;
try {
response_code = UrlFetchApp .fetch( uri ) .getResponseCode() .toString() ;
}
catch( error ) {
response_code = error .toString() .match( / returned code (\d\d\d)\./ )[1] ;
}
finally {
return response_code ;
}
}
J’ai ensuite cliqué sur « enregistrer ».
Lorsque je retourne dans ma feuille de calcul, si les sites fonctionnent, je vois « 200 » dans la troisième colonne de mon tableau, celle qui contient =VALUE(HTTPResponse(Bx)) .
Régler la fréquence de vérification
Je veux vérifier au moins toutes les heures que les sites sont opérationnels.
Dans l’éditeur de scripts, je sélectionne (A) la fonction HTTPResponse puis je clique sur le bouton « déclencheur du projet actuel » (B). Ensuite, je régle le déclenhement pour que le script s’exécute à chaque heure :
Régler le déclencheur d’un script Google Sheets
Déclencher un script Google Sheets toutes les heures
Générer un mail automatique en cas d’anomalie avec Google Sheets
Dans l’éditeur de script, j’ai placé la fonction checkStatut() :
/*****************************************************************
* Send an alert if somme http responses are not 200 OK
*****************************************************************/
function checkStatut() {
/* source https://www.withoutthesarcasm.com/automating-google-spreadsheets-email-reminders/ */
// get the spreadsheet object
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// set the first sheet as active
SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
// fetch this sheet
var sheet = spreadsheet.getActiveSheet();
// figure out what the last row is
var lastRow = sheet.getLastRow();
// the rows are indexed starting at 1, and the second row
// is the headers, so start with row 3
var startRow = 3;
// grab column 3 (the 'statut' column)
// getRange(row, column, numRows, numColumns)
var range = sheet.getRange(startRow, 3,lastRow-startRow+1,1 );
var numRows = range.getNumRows();
var statut_values = range.getValues();
// Now, grab the site name column (2)
range = sheet.getRange(startRow, 2, lastRow-startRow+1, 1);
var site_name_values = range.getValues();
var warning_count = 0;
var msg = "";
// Loop over statut values
for (var i = 0; i <= numRows - 1; i++) {
var statut = statut_values[i][0];
if(statut != 200) {
var site_name = site_name_values[i][0];
msg = msg + "Site : "+site_name+" ne fonctionne pas HTTP code "+statut+" .\n";
warning_count++;
}
}
if(warning_count) {
MailApp.sendEmail("mail@parcours-performance.com",
"Des sites en panne", msg);
}
};
Cette fonction identifie le bon onglet (0) de la feuille de calcul puis lit toutes les données de statut. Lorsqu’un statut n’est pas égal à 200 (OK), la fonction lit le nom du site correspondant. La fonction crée un message (msg) avec tous les dysfonctionnements puis, s’il y a des alertes, m’envoie un mail pour m’en informer.
Le déclencheur de la fonction est un changement dans la feuille de calcul (lorsque HTTPResponse se déclenche et indique une réponse différente de ce qui précédait) :
Déclencher un script Google Sheets lorsque la feuille change
J’ai vérifié que ça fonctionne en placant « 404 » dans l’une des cellules de statut et je reçois bien un mail d’alerte.
Et maintenant
Je suis en train de regarder comment changer d’hébergeur mais je dispose maintenant d’un système d’alerte des anomalies. Si je reçois un mail, je me connecte à mon interface client et je redémarre le VPS. En quelques minutes tous mes sites fonctionnent de nouveau.
Je n’ai plus de VPS Plesk depuis un bout de temps. Je laisse cet article en ligne pour information mais je ne pourrai pas répondre aux questions éventuelles.
Nous avons déjà vu comment transformer un site http en site https dans l’article migration d’un site WordPress en http vers https (SSL). Ici nous allons voir comment faire dans un hébergement Plesk VPS Classic de chez OVH. Il y a de petites différences avec un site d’un hébergement mutualisé OVH.
L’intérêt de passer en https
J’invite tous les anglophones à lire attentivement cet article de Wired. Il explique bien pourquoi tous les propriétaires de site devraient immédiatement chercher à passer leurs sites en https. Mais il va plus loin en montrant l’importance de l’interface utilisateur pour que les internautes comprennent les risques pris lorsqu’ils intéragissent avec un site non crypté. Le témoignage de l’Iranien est particulièrement édifiant.
La documentation de Plesk est incomplète sur ce sujet, mais le processus est très simple.
Il suffit de cliquer sur le lien « Let’s Encrypt » :
Pour les réglages, je coche « inclure www.domaine.com » même si je redirige www sur la version sans préfixe (attention ça n’est pas coché dans la copie d’écran ci-dessous mais il faut le faire) :
Une fois qu’on a cliqué sur « installer », on a au bout de quelques secondes un message en vert disant que le certificat est installé.
le contenu à ajouter dans .htaccess fonctionne aussi dans Plesk.
Et maintenant ?
Il faut vérifier que les redirections fonctionnent correctement. Un internaute doit pouvoir taper les url suivantes et être dirigé vers le site https://mon-domaine.com :
www.mon-domaine.com
mon-domaine.com
http://mon-domaine.com
mon-domaine.com/wp-login.php (ou wp-admin.php)
Une fois ces vérifications faites, ça y est, on a un site moderne et sécurisé.
Dans un article précédent (Cron Job sur un hébergement mutualisé OVH), j’ai expliqué comment exécuter un script périodiquement, et automatiquement, dans un hébergement mutualisé OVH pro. Nous allons voir comment le faire sur un serveur mutualisé Plesk (Offre VPS Classic d’OVH).
J’utilise le fichier /domicile.mon-domaine.com/cron-suivi-pi.php. Son contenu est semblable à celui de l’article précédent. Ce fichier m’envoie un mail lorsqu’il s’exécute et que certaines conditions sont réunies.
Je l’ai vérifié en plaçant http://domicile.mon-domaine.com/cron-suivi-pi.php dans un navigateur. Il n’y a pas d’erreurs et les « echo » s’affichent sur la page.
Nota : on a intérêt à activer l’affichage des erreurs : en étant administrateur, aller dans paramètres PHP et mettre display_errors sur « on ».
Réglage des tâches planifiées
Dans l’interface Plesk, Sites Web & Domaines > tâches planifiées, on peut régler le fuseau horaire des taches planifiées :
Plesk, tâche planifiée : régler le fuseau horaire
Planifier la tache
C’est incroyablement simple, ça se passe de commentaires !
La seule chose qui peut être compliquée, c’est si on veut planifier « cron style », comme ici. Pour définir l’heure, on peut alors s’aider de ce générateur de commande cron ou cet autre générateur.
Plesk, régler une tâche planifiée (cron)
Vérifier
Dans la liste des tâches planifiées, cliquer sur « exécuter maintenant ».
Plesk, exécuter maintenant un cron
Si tout s’est bien passé : un message sur fond vert dans Plesk et pas de mail d’erreur reçu et le mail prévu s’est envoyé (si les conditions sont réunies).
Et voilà, encore une nouvelle manip dans Plesk qui est maîtrisée ! Pour tout savoir sur la prise en main de Plesk, lire les autres articles de cette série Démarrer avec un hébergement VPS Plesk d’OVH.
J’hébergeais sur OVH un site assez simple, qui suit le bon fonctionnement de mes Raspberry Pi. Comme j’ai migré l’hébergement OVH sur un VPS OVH avec Plesk, j’ai également dû déplacer ce site.
J’explique donc ici comment installer un site composé de fichiers php et css dans un hébergement Plesk. Ce site n’a pas de base de données et n’utilise pas de gestionnaire de contenus type WordPress.
Créer un sous-domaine et y transférer les fichiers
J’ai ajouté un sous-domaine dans mon compte Plesk, par exemple domicile.mon-domaine.com.
J’y ai transféré les fichiers de l’hébergement initial en ftp. J’ai placé les fichiers dans un répertoire temporaire ‘temp-al’.
Placer les fichiers au bon endroit
Dans Plesk, tel qu’il est paramétré, les fichiers doivent être rangés comme suit :
css dans le répertoire domicile.mon-domaine.com/css
php ou html directement dans domicile.mon-domaine.com/
favicon.ico à la racine (image 256x256px)
NOTA : mon VPS Plesk étant sous linux, les fichiers doivent tous être avec des fins de ligne en mode linux, et pas windows. Sinon ça ne fonctionne pas.
Donner l’accès au site
Lorsque le sous-domaine a été créé, Plesk y a placé un fichier index.html. Pour que ce soit index.php qui soit exécuté, il suffit de supprimer le fichier index.html.
Et maintenant, dans un navigateur, http://domicile.mon-domaine.com ouvre bien sur un site défini par le contenu de index.php.
Afficher les erreurs
En tant qu’administrateur, on peut modifier les paramètres PHP du sous-domaine et régler « display_error » sur « on ».
Nous allons voir ici comment se connecter en FTP à un hébergement Plesk, avec des outils comme net2ftp ou filezilla. La documentation Plesk (Accès FTP au site Web) est complète, j’indique juste ici quels sont les paramètres de connexion dans net2ftp ou Filezilla.
Utiliser net2ftp
Attention, il ne faut utiliser que des net2ftp sécurisés et fiables, comme ceux qui sont proposés par les hébergements OVH (ou aussi par un hébergement Plesk si on actionne le service).
Les identifiants et mots de passe FTP des hébergements Plesk sont définis comme indiqué dans ce document Plesk. Le serveur est simplement le nom de domaine concerné sans rien devant (domaine1.com par exemple)
Utiliser Filezilla
Voici le paramétrage (plesk-id et le mot de passe ont été définis dans comptes FTP du domaine mon-domaine.com) :
Commentaires récents