Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Make by tools (01.00.01) - action=same_as_next_version
Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue
Panel
titleSommaire

Table of Contents
stylenone

Intérêt global de la commande

Sur les grands environnements, la majorité de la charge CPU va être consommées consommée par les sondes de supervision. Quand elles sont nombreuses et qu'elles sont ordonnancées avec des intervalles de temps différents, il peut être difficile :

  • Dd'extrapoler, par rapport au nombre d'hôtes déjà présentprésents, de combien de CPU CPUs sur ses Pollers une infrastructure a à besoin.
  • Sur de savoir, sur une infrastructure, savoir qu'elles sont les sondes les plus consommatrices en termes de CPU :
    • une fois identifiéeidentifiées, il est intéressant de passer du temps pour optimiser ces sondes afin de diminuer le nombre de CPU nécessaires.

C'est pour répondre à ces problématiques que nous avons crée la commande shinken-scheduler-export-data.


Vous trouverez des exemples d'analyses de résultat de la commande dans les pages suivantes : 


Cette commande interroge les Schedulers, car ce sont eux qui centralisent les informations de temps d'exécution des sondes de supervision exécutées par les Pollers.

  • Le fichier de résultat est un fichier .csv qui contient une ligne par check exécuté par les Pollers, avec suivant les options des données différentes.
    • Ces données seront les données constatées par les Pollers.
  • Vous pouvez aussi simuler la génération des lignes de check sur une période.
    • L’intérêt est que si certains checks sont exécutés toutes les heures, ils n'auront pas le même poids dans vos besoins en ressource qu'un check exécuté toutes les minutes.

Fonctionnement général de la commande

Récupération des données des checks auprès des

Schedulers

schedulers

La commande "shinken-scheduler-export-data" est seulement utilisable sur depuis le serveur de l'Arbiter.

  • En effet, elle se connecte sur tous les Schedulers, et c'est le seul démon habilité à cela.


La commande va lire la configuration depuis /etc/shinken et va pouvoir se connecter sur tous les Schedulers qui sont définis dans l'architecture. La récupération peut se faire de deux manières différentes :Le fichier de résultat peut être :

  • soit ANONYME ( aucun nom d'hôte, royaume, etc, ne sera présent anonyme ( aucun nom ne sera renseigné dans le fichier généré ), avec les noms des éléments ( voir l'option --fullanonymous ),
    • L'extraction sera anonymisée ( seule un hash des noms sera lisible
) sauf si l'argument : --full est ajoutée à la commande.
    • )
  • soit NORMAL, donc avec les noms des éléments ( par défaut )
    • Un mot de passe vous sera systématiquement demandé pour générer ce fichier
    • Le mot de passe est celui défini dans le fichier de configuration de Shinken ( /etc/shinken/shinken.cfg ) dans la clé : daemon__export_data__password
.
    • (
Voir

Il est possible de désactiver l'extraction pour un Scheduler via l'option défini définie dans son fichier de configuration dans la clé avec le paramètre : scheduler__export_data__enabled. ( Voir voir la page Le Scheduler ) .

Lancement

Options de la commande

La commande accepte les options suivantes :

Nom

Type

Unité

Défaut

Commentaire

Code Block
languagetext
themeEmacs
--export-
timeout

Entier

sec

10

Permets de configurer le temps d'attente acceptée sur les appels des Schedulers avant de retourner une erreur.

Code Block
--full

Booléen

---

False

type

Texte

--

--

Cette option permet de choisir quel type de donnée sera exportées.

Les valeurs possibles de cette option sont : 

  • sizing-pollers: Export les données pour le dimensionnement des Poller.
  • identify-most-consuming-checks: Export les données pour identifier les sondes les plus consommatrices.


Code Block
languagetext
themeEmacs
--export-type=sizing-pollers
Code Block
languagetext
themeEmacs
--anonymous

--

--

--

Cette option permet d'avoir un export

L'export se fait de façon

anonyme, c'est-à-dire que les noms des éléments ne seront pas

visibles.Si activé, l'export demandera également les noms des éléments ( Pour ce faire, il utilisera la variable scheduler__export_data__password qui devra être configurée dans les .cfg des Schedulers, voir la page Le Scheduler ).

présents.

  • Cela vous permettra d'exporter les données dans les situations où la confidentialité est nécessaire.
  • Par exemple, mettre à disposition ces données a votre support Shinken sans que les noms de vos machines ne soient diffusés

Code Block
languagetext
themeEmacs
--anonymous
Code Block
languagetext
themeEmacs
--scheduler-timeout

Entier

sec

10

Permets de configurer le temps d'attente acceptée sur les appels des Schedulers avant de retourner une erreur.

Code Block
languagetext
themeEmacs
--scheduler--timeout=30
Code Block
languagetext
themeEmacs
--
Code Block--
realm-filter

Texte

--

--

Prends le nom du royaume que l'on souhaite utiliser comme filtre afin de n'avoir que des Schedulers de ce royaume dans notre extraction de données.

( on ne peut mettre qu'un seul royaume dans le filtre )

Code Block
language
--simulation-extra-period

Entier

sec

0

text
themeEmacs
--realm-filter=France
Code Block
languagetext
themeEmacs
--dont-stop-on-scheduler-error

Booléen

--

 --

Si activé, la commande ne s’arrêtera plus si un ou plusieurs Scheduler est éteint/mal configuré, ou s'il ne répond pas ( timeout ).

A noter que dans ce cas les données extraites risquent d'être partielles avec des éléments manquants.

De plus, les Schedulers spare inactifs sont automatiquement passés, il n'est pas nécessaire d'utiliser cette option pour ces derniers.

Code Block
languagetext
themeEmacs
--dont-stop-on-scheduler-error
Code Block
languagetext
themeEmacs
--debug

--

--

--

Option permettant d'avoir plus d'affichage sur le fonctionnement interne de la commande.

Pour le support uniquement.

Code Block
languagetext
themeEmacs
--debug

Options de la commande pour les extractions de types sizing-pollers et identify-most-consuming-checks

Nom

Type

Unité

Défaut

Commentaire

Code Block
languagetext
themeEmacs
--simulate-scheduling-for-X-seconds

Entier

sec

0

Cette option permet, de simuler une activité normale des checks, en rajoutant leurs données après chaque intervalle de vérification spécifique à chaque check.

  • Une ligne de donnée sera donc ajoutée pour chaque exécution simulée.
  • Par exemple: avec simulate-scheduling-for-X-seconds=3600, un check avec un intervalle de vérification à une minute générera 60 lignes

Si un temps est défini, dans cette option, la commande rajoutera aux données actuelles, les données des checks qu'elle a pu simuler pour la période donnée.

Par ex pour 3600 : on simule les checks sur 1h dans le futur, en prenant check_interval secondes des checks entre chaque lancement
  • .



Warning

Cette simulation ne prend pas en compte :

  • les p
ériode
  • ériodes de vérification
et
  • ( prévu pour une futur version ),
  • les i
ntervalle
  • ntervalles de nouvelles tentatives de confirmations d'état ( retry_interval )
donc les valeurs donnée
  • => Difficile de définir de manière pertinente combien d'incidents futurs pourraient apparaître et engendrer une activité supplémentaire sur les Pollers à cause de ces sur-vérifications de confirmation.

Donc les valeurs données par cette simulation ne seront pas

exacte

forcément parfaitement alignées avec la réalité du futur.

Code Block
--skip-errors

Booléen

---

False

si activé la commande ne s’arrêtera plus si un Scheduler est éteint/mal configuré, ou s'il ne répond pas ( timeout ) sauf si cette option est activée.

Code Block
--debug

---

---

---

Rajout des données exportées dans le terminal.

languagetext
themeEmacs
--simulate-scheduling-for-X-seconds=3600

Résultat du lancement sur le terminal

Le lancerment lancement de la commande fera deux choses :

  • un retour dans le terminal pour voir le retour global de la commande,
  • la génération d'un fichier .csv avec l'ensemble des données.
    • Les lignes du fichier csv représente chaque occurrence d'exécution de chaque check.

Deux exemple exemples seront fourni fournis pour agrémenter illustrer la documentation:

  • Exemple 1 : exécution avec toutes les données ( --full Exécution sécurisée des données pour le dimensionnement des Pollers ( --export-type=sizing-pollers ) et sans simulation dans le futur.

    Code Block
    languagetext
    themeEmacs
    shinken-scheduler-export-data --export-type=sizing-fullpollers
  • Exemple 2 : exécution anonyme Exécution des données pour identifier les sondes qui consomme le plus de CPU sur les Pollers ( --export-type=identify-most-consuming-checks  ) avec une demande de simulation d'une heure supplémentaire ( --simulation-extra-period=3600 )simulate-scheduling-for-X-seconds=3600 ) , de manière anonyme ( --anonymous ) pour ne pas avoir les noms des hôtes.

    code
    Code Block
    languagetext
    themeEmacs
    shinken-scheduler-export-data --export-type=identify--simulation-extra-period=3600most-consuming-checks --simulate-scheduling-for-X-seconds=3600 --anonymous

Le retour du terminal

Le retour donne :

  • la liste des Schedulers,
  • l'adresse du fichier ou le CSV a été généré,
  • le nombre de lignes générées ( qui correspond aux nombres d'éléments écrit ( et simulé si l'option --simulate-scheduling-simulationfor-extraX-period seconds  a été  été utilisé )


Panel
titleExemple 1

Image RemovedImage Added

Panel
titleExemple 2

Image RemovedImage Added


À noter que dans l'exemple 2, le nombre de lignes est bien plus élevée élevées à causes des nombreuses lignes de la simulation (5161   530 au lieu de 109 26 dans notre exemple ).

CSV des données

Elle va générer un fichier csv dans le répertoire /tmp du serveur dont le nom va dépendre des options utilisées :

  • Exemple 1 :

/tmp/dump-schedulers--not-expandedsizing-pollers--no-simulate-scheduling--with-names--2023-0104-3124-14h32m54s10h04m05s.csv

  • Exemple 2 :

/tmp/dump-schedulers--identify-most-consuming-checks--simulate-scheduling-for-expanded3600-3600sseconds--anonymous--2023-0104-3124-14h31m32s10h05m29s.csv


Contenu du fichier csv généré

Dans le fichier CSV, on a les données suivantes :



host_uuid

: Uuid

UUID de l'hôte.

host_name

:

Nom de l'hôte (

présent

Vide si l'option --

full

anonymous est défini dans la commande  ).

  • host_name_anonymous_hash : Hash du nom pour l'identifier sur un export sans l'option --full.
  • check_uuid

    : Uuid

    UUID du check.

    check_name

    :

    Nom du check (

    présent

    Vide si l'option --

    full

    anonymous est défini dans la commande   )

    .check_name_anonymous_hash : Hash du nom pour l'identifier sur un export sans l'option --full.

    ;

    • vide si la vérification porte sur un hôte

    command_name

    :

    Nom de la commande (

    présent

    Vide si l'option --

    full

    anonymous est défini dans la commande

     

    ) .

    command_name_anonymous_hash

    :

    Hash du nom pour l'identifier sur un export

    sans

    avec l'option --

    full

    anonymous.

    realm

    :

    Nom du royaume (

    présent

    Vide si l'option --

    full

    anonymous est défini dans la commande

     

    ) .

    realm_anonymous_hash

    :

    Hash du nom du royaume pour l'identifier sur un export

    sans

    avec l'option --

    full

    anonymous.

    check_interval

    :

    Intervalle entre les vérifications.

    retry_interval

    :

    Intervalle de nouvelles tentatives de confirmations d'état.

    cpu_time

    :

    Temps CPU utilisé par

    la sonde.

    le check :

    • Format chaine de caractère représentant un nombre flottant ( float avec un "."
    • À bien faire attention quand on charge dans un
    excel
    • Excel français, il faut changer le séparateur de "," à "."


    scheduled_epoch

    : seconde

    Seconde où le check est planifié ( en epoch, depuis le 1er janvier 1970 ).

    scheduled_date

    :

    Format YYYY-MM-DD hh:mm:ss

    :
  • Exemple : 2023-01-31 10:49:1.
  • Importable dans Excel :
    Il faut juste penser à lui demander d'afficher les secondes sur la colonne.

    is_simulated

    :

    Booléen permettant de savoir si le check est issu d'une vraie exécution prévue dans le Scheduler, ou s'il est issu d'une simulation du check dans le futur ( via l'option --simulate-scheduling-for-X-seconds )

     last_reference_epoch

    Seconde où le check s'est exécuté pour la dernière fois et que son état a été confirmé ( "HARD" ) ( en epoch, depuis le 1er janvier 1970 ).

    Chargement et analyse des données

    Chargement du fichier csv

    Les fichiers CSV générés peuvent être importés dans un tableur comme Excel.

    • L'import dans ce dernier se fait simplement, dans les autres tableurs l'import suivra un mécanisme similaire.
    • Depuis un tableur vide, il faut passer par Données→Fichier texte.

    Panel


    Vu que le fichier a une première ligne avec la description des champs, il faut bien activer "Mes données ont des en-têtes".


    Panel

    Sur la phase suivante, il faut bien placer le séparateur sur "Virgule".

    • L'Aperçu de données permet de s’apercevoir que la séparation des champs est bien prise en compte.


    Panel

    Si la majorité des champs sont des formats simples ( chaines de caractères ou entier ), deux colonnes sont particulières et on doit indiquer à Excel comment les interpréter :

    • cpu_time : Il faut lui indiquer via "Avancé" que le séparateur de décimale n'est pas   ","   mais   "."   (   à faire que dans un Excel en Français, car dans le Excel en Anglais le séparateur par défaut est déjà le point   ).

    Panel


    • scheduled_date : Il faut lui indiquer que le champ est un format Date.
    Panel


    Excel nous demande alors où charger ces données. Il est plus simple et lisible de le charger dans une "Nouvelle feuille de calcul" que l'on pourra renommer facilement.

    Panel


    Voici un exemple de ce qu'on obtient finalement :

    Panel

    Analyse des données

    L'analyse des données issues du script va être répartie en deux grandes catégories :

    Erreurs possibles

    La commande est lancée depuis un serveur autre que l'Arbiter

    La commande échange avec les Schedulers de la même manière que l'Arbiter. Elle a donc besoin d'avoir les accès réseaux. C'est pour cela que le lancement de la commande n'est autorisé que sur le serveur de l'Arbiter, car c'est le seul à avoir tous les accès vers les démons.

    Dans le cas où la commande est lancée depuis un serveur qui n'est pas Arbiter, elle retourne l'erreur suivante :

    Code Block
    languagetext
    themeEmacs
    ERROR: command must be launched on the Arbiter server

    Problème de paramétrage du mot de passe d'accès ( daemon__export_data__password dans /etc/shinken/shinken.cfg )

    Par défaut, la commande va extraire les données avec les noms des éléments inclus ( désactivé avec la paramètre --anonymous ). Vu que le nom des éléments est une information sensible à protéger, l'accès à ces informations est protégée par un système de mot de passe ( paramètre daemon__export_data__password dans /etc/shinken/shinken.cfg ).

    Le mot de passe est vide ou non configuré dans le fichier /etc/shinken/shinken.cfg

    Dans le cas où le mot de passe est vide ou non paramétré ( le paramètre daemon__export_data__password dans le fichier /etc/shinken/shinken.cfg ) vous aurez l'erreur suivante :

    Code Block
    languagetext
    themeEmacs
    Cannot fetch SCHEDULER     : The "daemon__export_data__password" parameter is missing or void, that is forbidden for not anonymous request


    Le mot de passe fourni par l'utilisateur est incorrect

    Dans le cas où le mot de passe rentré lors du lancement de la commande est incorrect, la commande retourne l'erreur suivante :

    Code Block
    languagetext
    themeEmacs
    Cannot fetch SCHEDULER     : The password is not matching "daemon__export_data__password" parameter

    Problème de paramétrage de la désactivation de l'export des données des démons ( scheduler__export_data__enabled parameter dans le .cfg du Scheduler )

    Il est possible de désactiver entièrement l'export de donnée sur un Scheduler ( depuis le paramètre scheduler__export_data__enabled dans le fichier de configuration du Scheduler ).

    Dans le cas où on tente de communiquer avec un Scheduler avec cette configuration, la commande va retourner une erreur :

    Code Block
    languagetext
    themeEmacs
    Cannot fetch SCHEDULER     : The Scheduler configuration disabled data export with the "scheduler__export_data__enabled" parameter.

    Problèmes avec le réseaux ou l'état du Scheduler

    Le Scheduler n'est pas accessible ( éteint ou problème réseau )

    Dans le cas où le Scheduler est éteint ou s'il y a des problèmes réseaux entre le serveur de l'Arbiter et de dernier, l'erreur réseau de connexion sera retournée :

    Code Block
    languagetext
    themeEmacs
    Cannot fetch SCHEDULER : ERREUR RESEAU ( connexion refusée, nom d'hôte inconnu, temps écoulé, ... )

    Le Scheduler n'a pas encore reçu de configuration de l'Arbiter

    Si le Scheduler n'a pas encore reçu de configuration de l'Arbiter:

    • il n'a aucun éléments supervisés
    • et il n'a pas reçu le mot de passe de vérification.

    Dans le cas où la commande tente de se connecter au Scheduler avant qu'il ait reçu une communication, l'erreur suivante sera retournée :

    Code Block
    languagetext
    themeEmacs
    Cannot fetch SCHEDULER     : The Scheduler does not have any configuration

    Passer les erreurs et travailler avec des données partielles

    Toutes les erreurs concernant les Schedulers sont par défaut bloquantes pour la commande afin d'être sûr d'avoir l'ensemble des données. Si un seul des Schedulers a une erreur, alors la commande sort en erreur et ne génère pas de fichier d'export csv.

    Il est cependant possible, via le paramètre --dont-stop-on-scheduler-error, de signaler à la commande qu'on accepte les données partielles et que les erreurs sur les Schedulers ne sont que des avertissements et pas des erreurs bloquantes.

    Dans le cas par défaut où on ne mets pas le paramètre, la commande indique qu'il est possible de les passer avec le message suivant :

    Code Block
    languagetext
    themeEmacs
    There was some errors, cannot continue. Use --dont-stop-on-scheduler-error to allow partial results


    Si on utilise le paramètre et qu'il y a eu des erreurs qu'on considère comme non bloquantes, alors :
    • Les erreurs seront transformées en WARNING au niveau des Schedulers.
    • La commande averti tout de même que les données risques d'être partielles avec le message suivant :

    Code Block
    languagetext
    themeEmacs
    WARNING: The results may be partial because some schedulers were in errors:  SCHEDULERS