Monitoring | Superviser vos jobs rundeck
Article publiée le 6 Septembre 2017
I) Configuration de Rundeck
Suites aux précédents tutos sur rundeck: https://journaldunadminlinux.fr/tuto-installez-et-configurez-rundeck-ordonnanceur-opensource/ et https://journaldunadminlinux.fr/tuto-sauvegardez-vos-instances-rundeck/, je continue dans ma lancée en vous fournissant un petit script (très simpliste) vous permettant de monitorer vos jobs via un outil de supervision (zabbix, nagios, etc...)
Dans un premier temps, il est nécessaire de désactiver le délai d'expiration du token permettant de taper sur l'API de rundeck:
- Éditez le fichier /etc/rundeck/rundeck-config.properties et ajoutez la ligne suivante:
rundeck.api.tokens.duration.max=0
- Redémarrez Rundeck
service rundeckd restart
Authentifiez vous avec un compte admin et cliquez sur le bouton "profil" en haut à droite de la page:
Créez ensuite un nouveau token en laissant à 0 le champs "Expiration in".
II) Script
Ci-dessous le script qui vous permettra de renvoyer un code erreur de votre job à votre outil de supervision en fonction de son statuts:
#!/bin/bash
URL="<URL de votre instance RUNDECK"
TOKEN="<le token généré>"
FLUX=$2
PROJECT=$1
function getLastStatus {
curl -s -H "Accept: application/json" -X GET "$URL/api/20/project/$PROJECT/executions?authtoken=$TOKEN"|jq '.|[ .executions[]|select(.job.name != null)|select(.job.name|contains("'"$FLUX"'"))]|sort_by(.id)|reverse |.[0]|.status'|sed 's/"//g'
}
# get the token for quering rundeck
# get the last status of $1
STATUS=$(getLastStatus)case "$STATUS" in
'aborted')
echo -1
;;
'failed')
echo -1
;;
'succeeded')
echo 0
;;
*) echo 0
esac
exit 0
Pour tester il vous suffit de lancer ce script avec de bons arguments:
./checkJobRundeck.sh <nom du projet rundeck> <nom du job>
Il ne vous reste plus qu'à paramétrer votre outil de supervision.
Très intéressant,
Pour ma part, lorsque ma CI par exemple lance un job Rundeck via l’API, je fais un boucle for qui check le status du Job jusqu’à qu’il soit Success (ou Failed).
En tout cas Rundeck est un super outil !
Bonjour , merci pour toutes les informations sur rundeck
je ne comprend pas très bien l’utilisation de : *) echo 0 à la fin du script.
merci de tes réponses
A l’époque ce script a été ecrit pour être interfacé avec du Zabbix qui attendait une valeur précise pour déclencher une alerte. Rien ne t’empêche de réadapter ton script avec des retours de code erreur (exit 0, etc…)
ok je vois , merci beaucoup