Petit rappel de ce qu’est CFT
CFT (Cross File Transfer) est un logiciel d’entreprise publié par Axway qui permet de gérer de manière sécurisée les transferts de fichiers entre plusieurs clients/serveurs.
Bien qu’il existe des alternatives libres pour réaliser des choses similaires (notamment Waarp), CFT est un des seuls logiciels sur le marché Français permettant de communiquer avec le protocole PESIT (entre autres) et il n’est pas rare de le retrouver dans de grandes entreprises Françaises qui ont un historique difficile à migrer.
Il y a un court article sur Wikipedia qui parle de CFT et de Pesit.
Quand on utilise CFT, il existe une notion de catalogue. Au-delà du simple logiciel de transfert de fichier, CFT est aussi appelé moniteur de transfert car il permet de visualiser l’état des transferts avec un historique et une gestion des erreurs.
Pourquoi un script pour surveiller le catalogue ?
Il se trouve que ce catalogue est limité en taille via le fichier de configuration de CFT. Sauf erreur de ma part, on ne peut pas aller au-delà de 30000 comme taille de catalogue dans la configuration.
Quand on approche de cette limite fatidique, vous pouvez soit purger le catalogue, soit faire une rotation du catalogue (le remplacer par un catalogue vide). Si vous ne le faites pas, CFT se bloquera et refusera tous les traitements futurs (en entrée ou en sortie).
Il est donc important de garder cette limite en visibilité en supervision ;-) .
Installation
Le script que je vous met à disposition sur github est très simple, il ne repose que sur sh et cftutil (l’utilitaire de CLI de CFT).
- La version française est disponible ici
- La version anglaise est disponible ici
Configuration
On utilise la commande de la façon suivante :
/usr/local/nagios/libexec/check_cft_listcat.sh [warning] [critical]
Là encore, tout est très simple. Comme cftutil est présent par défaut sur les serveurs CFT, le plus simple est de passer par NRPE pour exécuter le script directement sur la machine CFT.
cat /etc/nagios/nrpe.cfg [...] command[check_cft_listcat]=/usr/local/nagios/libexec/check_cft_listcat.sh $ARG1$ $ARG2$
Voici les codes retours que vous pouvez récupérer (le script gère les perfdata et génère donc des graphes si votre supervision le supporte) :
./check_cft_listcat 25000 28000 OK: 1977 transfers in catalog. | nbre=1977;25000;28000;; ./check_cft_listcat 250 2800 WARNING: 1977 transfers in catalog. CFT will stop at 30000 !! | nbre=1977;250;2800;; ./check_cft_listcat 250 280 CRITICAL: 1977 transfers in catalog. CFT will stop at 30000 !! | nbre=1977;250;280;;
Bonus : event handler
Alerter c’est bien, mais réagir automatiquement, dans certains cas, c’est bien aussi.
Parfois, il peut être acceptable de réaliser automatiquement la rotation ou la purge du catalogue plutôt que de risquer le plantage de CFT. Pour se faire, vous pouvez utiliser les events handlers de nagios (ou autres outils compatibles) pour exécuter, via une commande cftutil qui va déclencher l’action au moment de l’alerte.
Exemple de purge du catalogue
Côté Centreon, dans la configuration du service :
Côté Centreon, la commande handler :
Côté Centreon, la commande qui exécute un SSH si le seuil est CRITICAL :
#!/bin/bash #Script permettant la purge du catalogue CFT via Nagios #$1 => IP de l'hote, variable $HOSTNAME$ #$2 => Status cote Nagios, variable $SERVICESTATE$ echo "`date` : appel du script automatique de purge cft avec les parametres '$1' et '$2'" >> /tmp/event_handler if [[ $2 == 'CRITICAL' ]] || [[ $2 == 'WARNING' ]] ; then echo "PURGE!" >> /tmp/event_handler ssh cft@$1 '/home/cft/purge_transfert.sh 1>/dev/null 2>&1 && echo "`date` : purge declanchee suite au passage a letat critical" >> /tmp/event_handler' echo "CODE RETOUR $?" >> /tmp/event_handler fi exit 0
Côté serveur CFT
#!/bin/bash . ~/.bash_profile moment=`date '+%H'` exec 1>/tmp/purge_transfert_${moment}.log exec 2>>/tmp/purge_transfert_${moment}.log #Purge du catalogue" cftutil listcat content=full,state=CD CFTUTIL DELETE IDT=* ,PART=*, STATE=T cftutil listcat content=full,state=CD
Comme d’habitude avec mes plugins « Nagios compatibles », les sources sont disponibles sur Github à l’adresse suivante :
Le lien pour Nagios Exchange est également disponible ici !
Mes autres plugins sont également disponibles sur le Github :
Merci camarade collègue Admin, c’est cool de pouvoir trouver des infos « précieuses » par moment.
j’ai besoin de lire ce script
#!/bin/ksh
###################################################################
Projet ULIS
ulis_qualip01.sh
Auteur : T.COURTOIS
Date de creation : 07/05/2009
Date de derniere modification : 23/09/2009
20070201 HTG : Modifications :
– Chemin d’acc▒s ▒ CFT
Descriptif:
Script qui permet le transfert du fichier r▒sultant du shell
ulis_qualiparc.sh via CFT
Parametres :
#
Historique des dernieres modification :
#
###################################################################
LOGFILE=$ULIS_LOG/ulis_qualip01.log
Affiche= ». $ULIS_SH/ulis_ptd_affiche.sh $LOGFILE »
$Affiche D « Execution du script ulis_qualip01.sh »
$Affiche D « Transfert du fichier Qualiparc »
#. /tools/list/cft/V264/runtime/profile
CFTUTIL send part=QUALIP01,idf=QUAPDIL1
#RetCodeCFT=$?
RetCodeCFT=CFTUTIL listcat idf=QUAPDIL1 | grep -v CFTU00I | grep QUAPDIL1|tail -1| awk ‘{print $2}’
sleep 60
$Affiche D « Verification du transfert CFT. »
/usr/bin/cat /tools/list/cft/user/log/cftalog | grep QUAPDIL1 >> $ULIS_LOG/ulis_qualip01.log
/usr/bin/cat /tools/list/cft/user/log/cftalog | grep QUAPDIL1 | grep CFTT58I
if [ $RetCodeCFT = « SFT » ]
then
$Affiche D « OK Le transfert CFT s’est bien deroule. »
fi
if [ $RetCodeCFT = « SFH » ]
then
$Affiche E « ERREUR Transfert CFT termine en erreur. »;exit 1
fi
$Affiche D « Fin OK du script ulis_qualip01.sh »