Déterminer si l'ordonnancement est viable dans un scheduler

En phase de debug du Scheduler, on peut être amené à vérifier si les ordonnancement de checks sont corrects, et surtout bien étalés dans le temps. Si nous avons des pics d'ordonnancement, c'est très dangereux pour la stabilité de la plateforme.

Pour cela, nous allons extraire des informations issues de la commande shinken-scheduler-export-data afin d'avoir:

  • le nombre de checks par seconde sur une grande période

Pour cela, nous allons avoir besoin d'un dump de données avec en option une prévision de la charge sur une période, disons par exemple 1 heure. Il suffit alors de lancer la commande comme ceci:

shinken-scheduler-export-data --full --expand-on-period=3600

Cette simulation ne prend pas en compte les période de vérification et les intervalle de nouvelles tentatives de confirmations d'état ( retry_interval ) donc les valeurs donnée par cette simulation ne seront pas exacte.

Avec ce lancement les noms (hôte, check, commandes et royaumes) seront présents dans l'export. Il est tout à fait possible de faire l'analyse sur un export en "anonyme" ( sans l'option --full ), des hash des noms des royaumes seront utilisés au lieu des noms finaux.

Pour retrouver le nom des royaumes, le client pourra prendre l'UUID d'un hôte qui a ce royaume, et trouver son nom via l'interface de visualisation ou de configuration, comme indiqué sur la page TIPS - Récupérer l'UUID d'un élément ( Cluster / Hôte / Check )

L'importation du fichier .csv généré est décrit dans FOR SHINKEN TEAM - shinken-scheduler-export-data : export des données du Scheduler

A noter également: c'est une limitation connue que pour l'instant le Scheduler fait un ordonnancement basés sur le nombre de checks et NON sur leur temps CPU consommé. Il peux être donc utile de faire une représentation basé sur le temps CPU consommé, mais pour l'instant ( février 2023 ) le Scheduler n'a pas de moyen de jouer sur cet ordonnancement là.


Création d'un graphique du nombre de checks par secondes

Précision du champ scheduled_date une fois importé dans Excel

Nous allons avoir besoin d'une consolidation de données pour avoir le nombres de checks par secondes. Pour l'instant, avec le chargement standard de Excel, on remarque que le champ scheduled_date est affiché en minute, ce qui est trop large pour notre analyse.

Modifier le format de la colonne scheduled_date

Pour modifier le format de la colonne scheduled_date, il faut sélectionner la colonne et choisir "Format de cellule" dans le menu déroulant

Passage d'une précision à la minute à une précision à la seconde

Le format Date étant trop limité, on doit:

  • passer sur une catégorie "Personnalisée"
  • choisir l'option "jj/mm/aaaa hh:mm"
  • et la modifier dans "Type" en "jj/mm/aaaa hh:mm:ss"
  • puis valider

On obtient bien l'affichage souhaité:


Création d'un tableau croisé dynamique

Une fois que nos colonnes sont valides, on passe à la création proprement dite du tableau croisé dynamique, par "Insertion → Tableau croisé dynamique"

Rajout de la première colonne: scheduled_date

Dans notre consolidation, nous avons besoin d'avoir par seconde le nombre de checks.

Le champ scheduled_date sera donc notre première colonne:

Rajout de la seconde colonne: nombre de checks par secondes

Puis on rajoute pour chaque seconde le nombre de checks qu'il y avait à cette seconde.

Donc ça sera notre seconde colonne: le nombres de fois où on a eu les valeurs de scheduled_date

Création d'un graphique du nombre de checks par secondes

Le tableau est prêt, on passe à la création du graphique:

  • on sélectionne nos deux colonnes
  • on passe ensuite par "Insertion→Histogramme 2d"

On obtient alors notre diagramme final: