SLURM - Watch Nodes

Un script en bash pour surveiller vos noeuds sous SLURM, le script vérifie si les noeuds tombent en drain ou drng et les relance automatiquement, il récupère ensuite les logs d’erreurs de SLURM sur le noeud et les place dans LOG_EXPORT_REPOSITORY.

Le script est à lancer avec la commande watch :

# watch -n <IntervaleSecondes> <CheminScript>

Ou dans un cron :

# crontab –e
*/5 * * * * /root/scripts/Watchnode_SLURM.sh >> /var/log/slurm/custom/nodes.log 2>> /var/log/slurm/custom/nodes.err

Le script :

#! /bin/bash

DATETIME=$(date "+%Y-%m-%dT%H:%M:%S")
NODES[0]="node40"
NODES[1]="node41"
NODES[2]="node42"
LOG_EXPORT_REPOSITORY="/var/logs/slurm/custom"

echo -e "\n\n\e[1;32;40m-----------------------------------------------------------------------------\e[0;37;40m"
echo -e "\n\e[1;32;40m--- ${DATETIME} --- SUPERVISON DES NOEUDS SOUS SLURM ---------------- \e[0;37;40m"
echo -e "\n\e[1;32;40m-----------------------------------------------------------------------------\e[0;37;40m"

echo "Etat des noeuds sous SLURM :"
sinfo --Node | grep -E "${NODES[0]}|${NODES[1]}"
echo -e "----------------------------------------------------------------------------- \n"

# Verification erreur noeuds
for node in ${NODES[*]}
do
if [[ $(sinfo --Node | grep $node) =~ (drain|drng) ]]
then

echo -e "\n\e[4;31;40mERREUR SUR LE NOEUD $node\e[0;37;40m"
echo "Export des journaux du noeud $node vers ${LOG_EXPORT_REPOSITORY}"
ssh $node "cp /var/log/slurm/slurmd.log ${LOG_EXPORT_REPOSITORY}/${DATETIME}_${node}.log"

echo -e "\n\e[1:32:40mReactivation du noeud $node \e[0;37;40m"
scontrol update node=$node state=resume reason="Activation ${DATETIME}"

echo -e "\n\e[4;31;40mRAPPORT SLURM \e[0;37;40m"
scontrol show node $node

echo -e "---------------------------------------------------------------"
fi
done

> Partager <