DSI
Monitoring SMS (script PHP) : mettre en place en 20 minutes un système de suivi efficace
by Rom's on 01 mai 2009, under Architecture, DSI
Voici le système que j’utilise aujourd’hui pour le suivi de mes serveurs dédiés. Il s’agit d’un système très simple composé des briques suivantes :
- Dernière version de PHPWatch (voir le site)
- API SMS - Bêta - By Orange (Accéder à l’API Manager - voir notamment le lien dans le menu de gauche API SMS)
- Quelques modifications sur le cron pour l’envoi d’e-mails.
De base, cela ne monitore que si les services Apache (si on regarde le port 80 / http) sont up ou down et non si les pages sont fonctionnelles (on ne verra pas les erreurs PHP mais on va pouvoir trouver des solutions pour cela.. bientôt)
Chaque SMS envoyé coûtera 10 centimes débités sur le compte. Soit le prix d’un SMS que vous envoyez avec n’importe quel mobile.
0. Allez sur l’interface API SMS d’Orange, inscrivez-vous, créditez votre compte de 10€ pour le test (cochez éventuellement la case renouvellement automatique) et dans l’onglet “key”, notez bien votre clé API.
1. Mettez en ligne le script (cliquez ici pour télécharger) sur un serveur autre que celui que vous souhaitez monitorer et allez à son adresse en ajoutant /install/ à la fin et suivez les instructions (attention, il n’y a pas d’espaces de nom sur les tables…)
2. Allez dans la table “logs” et ajoutez une colonne “message”. Elle servira à reccueillir lors d’un problème un arrêté de l’e-mail envoyé. Cela peut toujours servir.
3. Ouvrez le fichier cron.php qui se trouve à la racine du répertoire PHPWatch et insérez le code suivant en lieu et place de l’existant :
<?php
// A qui on envoie des SMS en cas de problème ?
$contactsMonitoringSMS=Array(
‘RomainMobile’=>’33679241180′,
‘CollegueMobile’=>’336XXXXXX’,);
// A qui on envoie un mail en cas de problème ? (en parallèle)
$contactsMonitoringEMAIL=Array(
‘RomainPerso’=>’monemail@gmail.com’
,’ServiceInformatique’=>’monemailpro@maboite.com’
);define(’PATH_TO’, ‘./’);
require_once(PATH_TO . ‘common.php’);$all = ServiceChecker::getReport();
foreach($all as $monitors)
{
foreach($monitors as $monitor)
{
$monitor['derniereFoisOffline']=date(”d/m/Y H:i:s”,$monitor['last_offline']);
// print_r($monitor);
if(!$monitor['online'])
{
$message = $monitor['host'] . ‘ HORS LIGNE. NOTIFICATIONS ENVOYEES. (/!\\ PHASE DE TEST, A VOIR SI C FIABLE)’;
echo $message;foreach($contactsMonitoringSMS as $prenom=>$numero) {
$phone_number = $numero;
$contactsEmail=”"; foreach($contactsMonitoringEMAIL as $prenom=>$email) $contactsEmail.=” [".$prenom."] “;
$contactsSMS=”"; foreach($contactsMonitoringSMS as $prenom=>$numero) $contactsSMS.=” [".$prenom."] “;// attention, on coupe le message à 155 caractères
$sms=$monitor['host'].” HS - SMS : “.$contactsSMS.” - @ : “.$contactsEmail;
if(strlen($sms)>159) $sms=substr($sms,0,154).’[...]‘;
$text_message = urlencode($sms);
$api_access_key = ‘dexxxx5ac’; // Mettez votre clé API - disponible sur l’API Manager
$url = “http://sms.alpha.orange-api.net/sms/sendSMS.xml?id=$api_access_key&to=$phone_number&content=$text_message”;
$response = file_get_contents($url);
$xml = simplexml_load_string($response);
echo “Status: “,$xml->status->status_msg;}
foreach($contactsMonitoringEMAIL as $prenom=>$email) {
$to = $email;
$subject = $message;
ob_start();
echo $message;
echo “\nE-mails envoyes a :\n”;
print_r($contactsMonitoringEMAIL);
echo “\nSMS envoyes a :\n”;
print_r($contactsMonitoringSMS);
echo “\nDetails Erreur :\n”;
print_r($monitor);
$msg=ob_get_contents();
ob_end_clean();
$headers = ‘From: Roms Monitoring‘.”\r\n”;
//$headers .= ‘Bcc: Moi; lui ‘.”\r\n”;
$headers .= “\r\n”;
mail($to, $subject, $msg, $headers);
}
NotificationHandler::sendNotifications($monitor);
}$requete=’INSERT INTO logs (monitor, timestamp, online, message) VALUES
(’ . $monitor['id'] . ‘, ‘ . time() . ‘, ‘ . ($monitor['online'] ? 1 : 0) . ‘, \”.addslashes($msg).’\')’;
$GLOBALS['PW_DB']->query($requete);
}
}
?>
4. Créez le cron qui va bien dans le crontab si vous avez un serveur dédié (autre que celui monitoré évidemment - en faisant un wget http://www.monsite.com/repertoirePHPWatch/cron.php).
Si vous avez un mutualisé chez OVH (type 60gp, 90plan,…), vous pouvez aller dans votre manager OVH, rubrique “Mutualisé” > “Hébergement” > Planificateur de tâches et créer une tâche qui lance le fichier cron.php chaque heure.
Si vous n’avez ni l’un ni l’autre, vous avez toujours WebCron.org ou ça..
Ou bien, si vous avez des amis qui ont un dédié, c’est le moment de les solliciter, c’est pas bien méchant un cron..
Réserves : attention, il s’agit d’une première version de développement, tous les composants sont en phase bêta. Vous aurez remarqué également que lorsqu’on dit dans le message envoyé “NOTIFICATIONS ENVOYEES”, on n’a pas vérifié que c’était effectivement le cas… Par ailleurs, on peut imaginer monitorer l’état réel d’un script en jouant avec les entêtes renvoyées ou avec des contenus de la page. Pour l’instant, cette version me convient.
Tous retours d’expérience bienvenus pour compléter ce tutoriel.
Exemple de modèle de données pour un site Internet multilingue
by Rom's on 31 mar 2009, under DSI
http://www.codeproject.com/KB/aspnet/LocalizedSamplePart2.aspx#databasedesign
Bien penser son moteur de recherche
by Rom's on 13 jan 2009, under DSI, Développement Web
Excellent article lu sur JDNet via Compario : Les axes de performance du moteur de recherche dans le secteur du e-commerce
L’auteur y explique les techniques actuelles pour répondre au mieux à toute requête d’un prospect sur un moteur de recherche type “one box”.
Morceaux choisis :
“Un chercheur transforme deux fois plus qu’un visiteur”
“73% des visiteurs de site e-commerce quittent le site au bout de deux minutes”
“40% des visiteurs d’un site marchand vont utiliser le moteur de recherche interne”
“lorsque l’internaute recherche TV, il s’attend à avoir la liste des télévisions disponibles sur le site en priorité et bien plus tard ou en marge, les accessoires qui se branchent sur la Télévision”
“[La navigation à facettes] s’appuie sur une recherche simple, sans mention de critères. En réponse, le moteur va présenter une vue de la répartition de l’ensemble des réponses selon diverses catégories ainsi que le nombre d’occurences. L’internaute choisit alors la facette qui l’intéresse, et va ainsi restreindre les résultats à ceux qui correspondent à son choix.”
“es sources d’erreur dans la recherche d’un article ou d’un produit sont multiples (faute d’orthographe, recherche de référence mal saisie…) et leurs effets sur l’acte d’achat sont en général rédhibitoires” (lire à ce sujet notre article sur la distance de levenshtein)
“La question de l’intégration d’un module de langage naturel doit se poser lorsque l’on se trouve sur un service présentant une offre dont plus de 3 caractéristiques semblent indispensables à la définition des produits : ex : l’immobilier ou l’achat de véhicule. L’internaute va recherche un appartement de 100m2 avec terrasse et 3 chambres.”
“Le principe [de la suggestion orthographique] est donc de proposer en lien, une orthographe approchante de celle saisie par l’internaute, en reformulant exactement la recherche avec les termes corrigés.”
“[L'autocomplétion] permet de compléter en live la saisie de l’internaute dans la boîte de recherche. Cela permet de lui suggérer des recherches avant même qu’il ait terminé de l’exprimer”
“il faudra plutôt envisager la suggestion d’articles au sein des réponses afin de compléter l’offre et d’enrichir le panier. “
Task Coach : un gestionnaire de tâches intelligent
by Rom's on 30 déc 2008, under DSI
A découvrir sur Framasoft :
Task Coach est un gestionnaire de tâches permettant d’organiser facilement son travail en le découpant en tâches et sous-tâches. Les tâches peuvent être classées par catégorie et un outil permet de comptabiliser le temps passé sur chaque tâche.
En savoir plus sur : http://www.framasoft.net/article4805.html
A noter que c’est compatible avec Funambol (voir le précédent billet)
EVOLUTION : le logiciel messagerie Windows et Mac compatible Exchange
by Rom's on 29 déc 2008, under DSI
Découverte intéressante faite ce jour.
Le client de messagerie Evolution (Novell), principalement utilisé sous Linux existe également en version Windows (ça date de 2005) :

Contrairement à Thunderbird, ce logiciel est full compatible et ne se contente pas de récupérer les e-mails en IMAP.
Le site du projet : http://projects.gnome.org/evolution/
Le site de téléchargement de la version Windows : http://www.dipconsultants.com/evolution/
La description sur Wikipédia : http://fr.wikipedia.org/wiki/Novell_Evolution
Existe également pour Mac : http://forge.novell.com/modules/xfcontent/downloads.php/evolution/builds/osx-evolution-2.6/
Il n’est pas encore répertorié chez Framasoft mais on en parle sur leur forum.
A noter qu’il y a un des gars de chez Novell qui a planché sur ce projet qui avait bossé sur The Gimp il y a quelques temps..
Synchronisation via SyncML - Carnet d’adresses, Calendrier, …
by Rom's on 29 déc 2008, under DSI
Présentation selon ubuntu-fr.org
Funambol est une suite logicielle permettant la synchronisation de données telles qu’un carnet d’adresses, un calendrier ou des emails, entre plusieurs ordinateurs et/ou périphériques portables (PocketPC, Smartphone, iPod, …). Il fait donc partie des logiciels de type PIM (Personal Information Manager), acronyme qui désigne par extension les données personnelles gérées. … [Lire la suite]
Le site officiel est là : https://www.forge.funambol.org/download/
Voir aussi : ScheduleWorld
Trouver son fichier de configuration PHP.ini
by rjanot on 19 déc 2008, under Architecture, DSI, Développement Web
Petite astuce pour les personnes recherchant leur fichier PHP.INI, en général sur les serveurs dédiés. Si vous n’êtes pas très ami avec la syntaxe de Tux, cette commande va vous aider:
php -i | grep php.ini
En espérant vous avoir aidé !
Quelques commandes SSH utiles / Serveurs dédiés
by Rom's on 15 déc 2008, under Architecture, DSI, Développement Web
Quelques commandes SSH utiles pour tout adminstrateur de serveurs dédiés :
Pour utiliser SSH, utilisez Putty sur Windows, ou le terminal sur Mac et Linux; Sur le terminal, entrez la commande “ssh userSSH@ipServeur” ce qui vous invitera à entrer le mot de passe de l’utilisateur “userSSH”.
top
=> indique les processus appelés
=> pendant l’exécution, taper “A” pour avoir des informations sur les tâches, “U” pour classer les processus par %CPU
=> faire ctrl+C (même sur Mac) pour en sortir
time wget URL
=> vous indique le temps pris pour exécuter telle URL
ps aux
affiche des informations sur les processus en cours
==> ps aux | grep ssh vous permet d’afficher les utilisateurs SSH connectés
NB : Cet article va être complété au fur et à mesure du temps et des besoins, n’hésitez pas à proposer des commandes en commentaires
Alsacreations a mis pas mal de commandes utiles aussi, voir ici : http://www.alsacreations.com/tuto/lire/613-Monitoring-serveur.html
Tableau blanc, n’est-ce pas le bonheur ?
by Rom's on 05 déc 2008, under DSI
http://www.speechi.net/fr/index.php/home/tableau-interactif/tableau-interactif-ebeam-projection/
Être au tableau et interagir avec son ordinateur sur la projection.. n’est-ce pas le rêve de tous les conférenciers ?
Mettre sur papier les processes d’une organisation
by Rom's on 05 déc 2008, under DSI
Process
Process, une chaîne éditoriale pour la diffusion des processus de fonctionnement d’une organisation
La chaîne éditoriale Process : qu’est-ce que c’est ?La chaîne éditoriale Process, dédiée à la diffusion des processus, permet d’inscrire la qualité dans l’activité quotidienne des acteurs.
Objectifs* Capitaliser les documents qualité en stockant les contenus dans un format (xml).
* Avoir une vision globale du fonctionnement de la structure.
* Accéder à la description précise des activités en navigant graphiquement dans les procesus.
* Visualiser sa propre activité et la positionner par rapport aux activités des autres acteurs.
* Accéder aux documents et aux modèles de documents qui leur permettront de mener à bien leur activité.
A lire sur : http://scenari-platform.org/projects/process/fr/pres/co/
Et pour la documentation logicielle : http://scenari-platform.org/projects/dokielguide/fr/pres/co/