Partage : petit script d'affichage des noeuds d'allocation des shards

Je trouvai qu'il manquait dans le monitoring de kibana une vue globale permettant d'afficher les noeuds d'allocation des shards de tous mes index. Je vous partage ce petit script shell qui affiche cela. Il est optimisable, je l'ai réalisé très rapidement mais il fait le taf, remplacer mes_index par vos index et localhost par l'ip de votre elasticsearch (si vous connaissez un outil graphique gratuit qui fait la même chose je suis preneur) :

res=/tmp/res_shard
res_node=/tmp/res_node
> $res_node
idx=""
node=""
node_p=""
curl -XGET "http://localhost:9200/_cat/shards/mes_index*" | sort -n > $res
echo ""
echo "Index                   noeuds d'allocation des shards"
while read ligne
do
    idx=`echo $ligne | cut -d " " -f1`
    node=`echo $ligne | cut -d " " -f8 `
    #node=`echo $ligne | cut -d " " -f8 | cut -c9-10 `

    if [ "$idx" != "$idx_p" ]
    then
            for i in `cat $res_node|sort -n|uniq`
            do
                    node_p="$node_p $i"
            done
            echo "$idx_p $node_p"
            node_p=""
            > $res_node
    fi

    #echo $ligne

    idx_p=$idx
    echo $node >> $res_node
    #node_p="$node_p $node"
done < $res

            for i in `cat $res_node|sort -n|uniq`
            do
                    node_p="$node_p $i"
            done
            echo "$idx_p $node_p"

Quand tu vas dans la vue par index, tu as en bas les shards affichés

Tu cherches une vue globale, c'est ça ?

Oui ça manque d'une vue globale donnant la liste des noeuds où sont les shards de TOUS LES INDEX. C'est un peu fatiguant de devoir cliquer sur chaque index pour voir où sont les shards je trouve (surtout dans une architecture hot warm) :slight_smile:

Je comprends. Je pense qu'on ne le fait pas car beaucoup d'utilisateurs ont des milliers de shards, certains ont des 100aines de noeuds.

@tlrx tu sais si c'est prévu de faire une vue de ce type ?

Aucune idée @dadoonet .

Les index passent sur une page avec 1 index par ligne, avec pagination comme c'est fait dans Kibana. Effectivement ça peut devenir encombrant pour afficher les shards par index au niveau des colonnes au delà d'un certain nombre. Une idée serait de réduire l'écriture :

Exemple :
l'index 1 a ses shards sur les noeuds ES-Data-1, ES-Data-2, ..., ES-Data-500
l'index 2 a ses shards sur les noeuds ES-Ingest-1, ES-Ingest-2, ..., ES-Ingest-100, ES-Data-1, ES-Data-2, ..., ES-Data-500

Index1 ES-Data-[1-500]
Index1 ES-Data-[1-500] ES-Ingest-[1-100]

Après ça marche si les noeuds ont des noms qui respectent une certaine règle d'écriture avec incrémentation du numéro de la machine, sinon ça met la pagaille sur une IHM. Avec un script shell c'est assez sympa.

Ou alors il faut reprendre une partie du projet elasticsearch head, qui étai bien pratique sur les premières versions d'elasticsearch :slight_smile:
Je crois que ça a arrêté de suivre les versions à partir de la 5...

1 Like

Exact