Surveillance générique pour Dollar Universe

La mise en place de la surveillance est extrêmement simple à réaliser dans la mesure où les fichiers nécessaires sont déjà dans le répertoire des binaires.
Voici les etapes :
Arrêt $U (non obligatoire)
on utilise la bibliothèque libuxspv_com.so au lieu de libuxspv.com dans uxexe/lib (on aurait pu tout aussi bien utiliser la surveillance patrol, tng, tivoli...)
on crée un fichier d’environnement uxsetenv_com dans $UXMGR
Modifications des liens
Connectez vous sur le noeud $U
Aller dans uxexe
Lister les bibliothèques de supervision :
cd $UXEXE/lib
ls -rtl /libuxspv*Ce qui nous donne :
-rwxr-xr-x 1 root other 6684 Dec 13 2005 libuxspv.so
-r-xr-xr-x 1 root other 6684 Dec 13 2005 libuxspv.so_model
-rwxr-xr-x 1 root other 10892 Dec 13 2005 libuxspv_tiv.so
-rwxr-xr-x 1 root other 16016 Dec 13 2005 libuxspv_ito.so
-rwxr-xr-x 1 root other 1560888 Dec 13 2005 libuxspv_pat.so
-r-xr-xr-x 1 root other 13784 Dec 13 2005 libuxspv_com.so
-rwxr-xr-x 1 root other 8360 Dec 13 2005 libuxspv_tv.so
-r-xr-xr-x 1 root other 14204 Dec 13 2005 libuxspv_tng.so$U appelle systématiquement libuxspv.so, le but du jeu est donc de remplacer cette bibliothèque par celle qui permettra de renvoyer les informations vers son outil de supervision.
Dans notre cas, on utilisera libuxspv_com.so qui correspond à la surveillance générique. Le changement peut être fait par simple copie ou par création d’un lien symbolique.
Exemple avec une création de lien :
rm libuxspv.so
ln -s libuxspv_com.so libuxspv.soVariables d’environnement
La configuration de la surveillance se fait à travers des variables d’environnement qui l’on stockera dans le fichier uxsetenv_com.
Contenu du fichier uxsetenv_com :
#!/bin/ksh
#set -vx
# -----------------------------------------------------------------
# uxsetenv_com ? Environnement pour la supervision generique
# -----------------------------------------------------------------
# Description : Ce script positionne l'environnement necessaire au
# fonctionnement de la supervision applicative generique de
# Dollar Universe Non Stop Services.
# -----------------------------------------------------------------
export U_COM_SND_T=YES
export U_COM_SND_I=YES
export U_COM_SND_O=YES
export U_COM_SND_W=NO
export U_COM_SND_R=YES
export U_COM_SND_E=NO
export U_COM_WORD_R=Refuse
export U_COM_WORD_E=Demarre
export U_COM_WORD_W=Attente
export U_COM_WORD_O=Horaire depasse
export U_COM_WORD_I=Incidente
export U_COM_WORD_T=Termine
export U_COM_TRACE=n
export UXSPV_MSGJOB=$UXMGR/U_SPV_JOBDans ce fichier d’exemple, on ne traitera pas les évènements des uprocs en cours de démarrage et celles en attente. Suivant vos besoins, vous pouvez ajoutez ou supprimer d’autres types d’évènements.
Le mode TRACE permettra de suivre la communication entre le $U et votre script de surveillance.
La prise en compte de ces variables se fera à travers l’uxsetenv puisque ce dernier est systématiquement chargé.
Fin du fichier uxsetenv :
# Ajout de la supervision generique
. $UXMGR/uxsetenv_comScript de supervision
Le script de surveillance proprement dit est indiqué par la variable globale UXSPV_MSGJOB.
Pour effectuer un minimum de modification sur les fichiers d’origine, j’ai simplement inclus un appel vers mon script Perl.
Contenu du fichier U_SPV_JOB :
#!/bin/ksh
#set -vx
# -----------------------------------------------------------------
# U_SPV_JOB ? Supervision generique
# -----------------------------------------------------------------
# Description : This script receives a message each time a status
# transition is detected for a Dollar Universe job. This script
# sends the incoming message to your supervision tool.
# -----------------------------------------------------------------
# -----------------------------------------------------------------
# Positionnement de l'environnement Dollar Universe
. $UXMGR/uxsetenv
# Environnement TNG
AGENTWORKS_DIR=MON_AGENT_TNG
export AGENTWORKS_DIR
if [ -f ${AGENTWORKS_DIR}/scripts/envset ]
then
. $AGENTWORKS_DIR/scripts/envset
fi
# Positionnement de variables, eventuellement en fonction du contexte
echo ---------------------------------------------------------------->>$UXLOG/u_spv_job.log
echo $1 >> $UXLOG/u_spv_job.log
exec $UXMGR/spv2tng.pl "$1" >>$UXLOG/u_spv_job.log
# -----------------------------------------------------------------Dans cet exemple, j’utilise l’exécutable awtrap fournit par CA, cet outil se trouve dans un répertoire "MON_AGENT_TNG", cela peut être un autre outil (ou bien un envoi de mail sur des jobs critiques ou la création d’un log particulier...), dans tous les cas on profite de ce script pour initialiser l’environnement.
Script de connexion
Le script perl se charge de traiter l’information fournie par le SPV pour l’envoyer en trap. Le script perl recupère les infirmations, puis fais un uxlst ctl qu’il envoie sous forme de trap. Quel est l’interet de refaire un uxlst ctl ? Simplement pour avoir l’ensemble des informations (jalon, noeud, user...).
Les 2 méthodes renvoient la même chaîne de caractères, mise à part que la deuxième complète les espaces avec les données du suivi d’exploitation.
L’aspect performance est discutable et la mise en place déconseillé pour les noeuds chargés mais dans l’exemple est intéressant dans la mesure où l’on souhaite remonter nu maximum d’informations.
Script spv2tng.pl :
#!/usr/bin/perl
@Infos = split(" ",$ARGV[0]);
# 2 formats : avec ou sans uproc
if ($#Infos==11) {
($dummy, $status, $job, $ses, $upr, $mu, $date, $time, $nupr, $nses, $soc, $s) = @Infos;
}
else {
($dummy, $status, $job, $upr, $mu, $date, $time, $nupr, $nses, $soc, $s) = @Infos;
}
# On en fait une ligne de suivi d'exploitation
# BIRJGPSG BIRGPSG T_BIR01 TERMINE 20070413 1100 20070413 1100
birexptt SYS_BATCH 2107 100 0009018 0016326 20070413 birexplo 000 000 99 00162
21
# Methode 1 : sprintf. probleme : il manque des infos (reprise, jalon...)
#$res = "sprintf(" %10s %10s %10s %21s %10s %4s %10s %4s %10s %31s %6s %03d %07d %07d %1
0s %12s %03d %03d %02d %07d");
# Methode 2 : on refait un uxlst
$uxlst = `$ENV{UXEXE}/uxlst ctl full ses=$ses upr=$upr mu=$mu nupr=$nupr nsess=$nses`;
@UX = split("\n",$uxlst);
$line = $UX[4];
##########################################################
# Envoi de trap
$host = 'DESTINATAIRE DES TRAPS';
print STDERR "$line\t$host\n";
`awtrap -h $host -p 162 -c public 1.3.6.1.4.1.311 6 . 1.3.6.1.4.1.311 -s "$line"` ;Du côté serveur, on devrait récpetionner des messages de ce type :
%CATD_I_060, SNMPTRAP: -c public 311 IP_SOURCE MACHINE 6 0 11:56:52 2 OID: 1.3.6.1.4.1.311 .iso.org.dod.internet.private.enterprises.microsoft VALUE: IU_TEST TEST T_IU INCIDENTE 13/04/2007 1743 13/04/2007 1743 global SYS_BATCH 0067 100 0000271 0000303 13/04/2007 uniexp_a 000 000 00 0000313 OID: 1.3.6.1.3.1057.1 .iso.org.dod.internet.experimental.1057.1 VALUE: IP_SOURCE
Article
La remontée d’informations vers un outil de surveillance de surveillance se fait à travers des bibliothèques dynamiques, chaque connecteur est dédié à un outil de surveillance (HP openview, TNG, Patrol...) mais le connecteur le plus intéressant est certainement celui de la supervision générique car il va permettre la mise en place d’une surveillance personnalisée.
| Mise à jour : | 21 janvier 2010 |
| Visites : | 2997 |
| Auteur : | E. Angenault |
| Site : | Angenault.net |
$U peut être connecté à différents outils de supervision mais aussi à des systèmes génériques tels que l’envoi de trap SNMP ou l’exécution de script maisons.
Liens commerciaux
Accès rapide
Dossier
$U peut être connecté à différents outils de supervision mais aussi à des systèmes génériques tels que l’envoi de trap SNMP ou l’exécution de script maisons.
Téléchargement
- Supervison générique
PDF | 4 juillet 2008 | 16.6 ko
