B2PWeb/Services/Monitoring/TopClient
Installation
Engine
Le moteur est situé sur sql2-cogent dans le répertoire <path>/root/scripts/monitoring/topclient</path>. Il est lancé par un cron.
# crontab -l | grep -i 'top\s*client'
# Monitoring - Top client engine */15 8-20 * * 1-5 /root/scripts/monitoring/topclient/engine-topclient.php 1>>/var/log/monitoring-engine-topclient.log 2>&1
En éditant le fichier <path>/root/scripts/monitoring/topclient/vars.php</path>, on peut voir le nom du fichier de lock utilisé: <path>/var/lock/b2p/topclient.lock</path>, ainsi que la définition de chaque client et autres paramètres.
- Pour chaque client, on définit dans le tableau CUSTOMER_LIST
- Les paramètres obligatoires
- order: Paramètre déprécié.
- name: Le nom du client correspondant à l'identifiant. Le préfixe (P) est automatiquement ajouté, de même que le suffixe (DED) si la requète est exécuter sur un serveur dédié.
- ID: L'identifiant unique
- level: Correspond à différentes méthodes d’interrogation des bases de données. Paramètre déprécié.
- Les paramètres facultatifs
- dbhost: Correspond à la cible définit dans le fichier <path>/home/common/Bdf/config/db.ini</path> pour les paramètres de la base de données.
Si celui-ci est absent ou vide, c'est MONITORING_LOG qui sera utilisé (c.a.d. la base B2P_LOG sur le serveur stats ). - timeperiods: définit la la plage horaire pendant laquelle l'envoi d'email d'alerte est autorisé pour ce customer. Si ce champs est absent ou vide, c'est la période de temps par défaut qui est prise en compte. La syntaxe est la même que DEFAULT_TIMEPERIOD.
- dbhost: Correspond à la cible définit dans le fichier <path>/home/common/Bdf/config/db.ini</path> pour les paramètres de la base de données.
- Les paramètres obligatoires
- LOCK_FILE: Le fichier de lock afin de prévenir plusieurs démarrage d'instance de ce même script.
- ALERT_RECEIVERS: Définition de toutes les adresses email réceptrices des alertes.
- DEFAULT_TIMEPERIOD: Définition de la plage horaire par défaut où l'envoi de mail d'alerte est autorisé. Le nombre correspond au nombre de secondes depuis minuit. Les plages horaires sont cumulatives ( OU et non pas ET ).
- ALERT_SUBJECT: Sujet de l'email d'alerte
- ALERT_MESSAGE: Corps du message d'alerte
- DEPOSIT_PERIOD: Période de temps durant laquelle le nombre d'offre déposées est comptabilisé, en secondes.
- ALERT_PERIOD: Période minimum entre deux alertes par email, en secondes.
- DEBUG: les logs contiennent des traces de debug si ce paramètre est fixé à true.
- VERBOSE: Les logs sont plus bavards si ce paramètre est fixé à true.
<?php
/*
* dbhost: must be MONITORING_LOG for sending request on public platform
*/
$CUSTOMER_LIST = array (
array ( 'order'=>'1', 'name'=>'ALLOIN', 'ID'=>'400100', 'level'=>'2', 'dbhost'=>'MONITORING_ALLOIN' ),
array ( 'order'=>'1', 'name'=>'BREGER', 'ID'=>'401780', 'level'=>'2', 'dbhost'=>'MONITORING_BREGER' ),
array ( 'order'=>'1', 'name'=>'GEFCO', 'ID'=>'401307', 'level'=>'2', ),
array ( 'order'=>'1', 'name'=>'GEODIS BM', 'ID'=>'401664', 'level'=>'2', 'dbhost'=>'MONITORING_GEODIS' ),
array ( 'order'=>'1', 'name'=>'GEODIS CALBERSON', 'ID'=>'401663', 'level'=>'2', 'dbhost'=>'MONITORING_GEODIS' ),
array ( 'order'=>'1', 'name'=>'HEPPNER', 'ID'=>'401263', 'level'=>'2', ),
array ( 'order'=>'1', 'name'=>'JUNG', 'ID'=>'407455', 'level'=>'2', ),
array ( 'order'=>'1', 'name'=>'LEROY', 'ID'=>'406067', 'level'=>'2', 'dbhost'=>'MONITORING_LEROY' ),
array ( 'order'=>'1', 'name'=>'MAUFFREY', 'ID'=>'401274', 'level'=>'2', ),
array ( 'order'=>'1', 'name'=>'MTA', 'ID'=>'406615', 'level'=>'2', ),
array ( 'order'=>'1', 'name'=>'SCHENCKER JOYAU', 'ID'=>'400101', 'level'=>'2', ),
array ( 'order'=>'1', 'name'=>'STEF', 'ID'=>'403522', 'level'=>'2', 'dbhost'=>'MONITORING_STEF' ),
array ( 'order'=>'1', 'name'=>'TRANSALLIANCE', 'ID'=>'404010', 'level'=>'2', ),
array ( 'order'=>'1', 'name'=>'ZIEGLER', 'ID'=>'410838', 'level'=>'2', 'dbhost'=>'MONITORING_ZIEGLER' ),
);
$LOCK_FILE = "/var/lock/b2p/topclient.lock";
$DEBUG = false;
$VERBOSE = true;
$ALERT_RECEIVERS = array(
'dfabert@b2pweb.com',
);
/* Number of seconds elapsed after midnight */
$DEFAULT_TIMEPERIOD = array(
array( 'begin' => 28800, 'end' => 43200 ), // 08h00 - 12h00
array( 'begin' => 50400, 'end' => 64800 ), // 14h00 - 18h00
);
$ALERT_SUBJECT = 'TopClient Passerelle alert - Customer %1';
$ALERT_MESSAGE = 'Deposit from customer %1 not found in last 30 minutes !!!';
// Period about last deposit in seconds. 1800 = 30 minutes
$DEPOSIT_PERIOD = 1800;
// Period about alert in seconds. 3600 = 1hour
$ALERT_PERIOD = 3600;
?>
Le fichier de log est spécifié dans le crontab : <path>/var/log/monitoring-engine-topclient.log</path>
La base de données monitoring est placé sur sql2-cogent.
DROP TABLE IF EXISTS `topclient`;
CREATE TABLE `topclient` (
`client_id` int(11) NOT NULL,
`client_name` varchar(50) NOT NULL,
`cur_hour_act` int(11) DEFAULT NULL,
`cur_day_act` int(11) DEFAULT NULL,
`last_week_day_act` int(11) DEFAULT NULL,
`last_check` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`client_id`),
KEY `last_check` (`last_check`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Webservice
Le moteur est situé sur tous les WSR dans le répertoire <path>/home/b2pweb.com/services.b2pweb.com/monitoring</path>
monitoring
|-- class
| |-- bdd.class.php
| |-- fault.class.php
| `-- monitoring.class.php
|-- conf
| `-- config.conf.php
|-- include
| `-- fonctions.php
|-- index.php
`-- wsdl
`-- monitoring.wsdl
Client
Le client est situé sur les virtual machine monitoring ( ns1 et ns2 ) du LAN. Il est installé via un paquet RPM dans le répertoire <path>/usr/share/webservice-monitoring/client/</path>.
De plus le fichier de configuration pour Apache est <path>/etc/httpd/conf.d/webservice-monitoring-client.conf</path>
Fonctionnement
- La partie Engine : Sur stats, un script enrichit la base de données, moteur qui est lancé via un cron tous les quart d'heure.
- Requêtes mysql sur stats
- Mise en base des résultats synthétisés
- La partie serveur du topclient est installé sur tous les WSR et interroge la base monitoring
- La partie cliente fait une requête HTTP sur le webservice http://services.b2pweb.com/monitoring des WSR.
Interface
La date de dernière mise à jour apparait au survol de la souris sur le champs ClientID.
- Lorsque le champs ClientID est vert, les informations sont à jour.
- Lorsque le champs ClientID est orange, les informations commence à être obsolètes ( entre 15 et 20 minutes ).
- Lorsque le champs ClientID est rouge, les informations sont obsolètes ( supérieures à 20 minutes ).
F.A.Q.
Le top client ne se met plus à jour !
- Si la dernière ligne du fichier de log contient:
Previous process is still running!
- C'est qu'une exécution antérieure ne s'est pas bien terminée et que le fichier de lock est encore présent. Il suffit juste de supprimer ce fichier
rm -f /var/lock/b2p/topclient.lock
- L'engine a planté suite à une erreur
Fatal error: Uncaught exception 'Bdf_Db_Exception' with message 'Erreur d'execution' in /home/common/Bdf/Bdf/Db/Adapter/MySQLi.class.php:99
Il faut augmenter les paramètres wait_timeout et interactive_wait_timeout dans le fichier <path>/etc/my.cnf</path> et relancer MySQL.
- C'est qu'une exécution antérieure ne s'est pas bien terminée et que le fichier de lock est encore présent. Il suffit juste de supprimer ce fichier
