Opérations (JOCBundle)

De SOS Paris
Aller à : navigation, rechercher
JOC.png
Module JOC
Nom Synchronisation
Version 2.0
Github https://github.com/AriiPortal/JOCBundle

Le module "Opérations" publie les données extraites des JobSchedulers et synchronisées avec une base de données. Le but est d'obtenir une image du contenu des moteurs pour avoir une vision globale.

Installation

Base de données

Contrairement au module de Suivi, les données ne proviennent pas de la base de données du JobScheduler mais d'une base de données dédiée à cet usage. Cette base est actuellement en MySQL/MariaDB, il n'est pour l'instant pas prévu de la porter sur un autre type de base. On notera que cette base de données ne nécessite pas de sauvegarde dans la mesure où il ne s'agit que d'un cache.
En cas de perte de données, le module Focus mettra les tables à jour à la prochaine synchronisation.

Configuration

Le suivi utilise les données envoyées directement par JobScheduler permettant un suivi en temps réel.

Contenu de app/config/parameters.yml:

database_name: Test SOS-Paris
database_dbname: scheduler
database_host: localhost
database_port: 3306
database_user: root
database_password: null
database_driver: mysqli

La ré-écriture Média:du module Focus en Doctrine et son intégration dans JOC permettra de choisir n'importe quel type de base de données supporté par Doctrine.

Synchronisation

La base de données utilisée par JOC doit être synchronisée avec les moteurs JobSchedulers, la synchronisation fonctionne aussi bien en mode réception de messages envoyés par les JobSchedulers qu'en mode interrogation de moteur à partir d'Arii. Généralement, l'utilisation des deux solutions simultanées est optimale. Inversement, il n'est pas possible de descendre la synchronisation en dessous de 5s, toute demande en dessous de cette fréquence ne sera pas prise en compte par le système.

Mode interrogation

Pour interroger un JobScheduler distant, on appellera une url de la forme suivant http://serveur arii/joc/fr/adresse IP/port/get avec:

  • serveur arii: serveur web arii, ce serveur n'est pas obligatoirement le serveur sur lequel les utilisateurs se connectent, on peut tout à fait dédier un serveur web pour la tâche de synchronisation et ainsi laisser les ressources disponibles pour l'interface utilisateurs.
  • Adresse IP et port: paramètres de connexion sur le scheduler distant. Il faudra vérifier que le jobscheduler écoute bien sur cette ip et ce port par la commande netstat -na.

Exemple: http://localhost/app_dev.php/joc/fr/remotescheduler/4444/get

SPOOLER: remotescheduler(remotescheduler:4444)
         NEW !
         +
         + /single
         + /multi
         + JOB /Arii/Report/Import/Update/day
         + PARAM ARII_WEB
         + PARAM ARII_JS
         + PARAM SPOOLER_ATS
         + LOCK USE /Arii/ARII_DB
         + JOB /sos/housekeeping/scheduler_restart

...

         - Periods
         - OrderIdSpaces
    Purge 0.99852085113525s
GLOBAL 8.0827839374542s
success

Mode réception

Dans le mode réception, c'est le jobscheduler qui envoie le contenu de la mémoire vers Arii. La récupération de l'état du moteur dans un fichier et son envoi sur Arii peuvent être réalisés par curl.

Récupération du "show_state" sur le moteur en local:

curl -X POST -d '<show_state what="schedules,job_chain_orders,job_orders,jobs,job_chains,remote_schedulers"/>' http://localhost:4444 > show_state.xml

Envoi du fichier sur l'url de réception (sans protection de l'url):

curl -X POST -d @show_state.xml http://ARII/joc/fr/post

L'url peut être protégé en modifiant le fichier security.yml de Symfony2:

        post:
            pattern:  /post
            anonymous: false
            http_basic:
                realm: "Secured Area"
                provider: fos_userbundle

Un compte est ensuite créé avec la commande arii:user:create, ce compte peut être global pour tous les noeuds ou au contraire limité à une machine en particulier.

Appel de l'url authentifiée par le user remotescheduler avec le mot de passe remote:

curl -X POST -d @show_state.xml http://remotescheduler:remote@ARII/joc/fr/post

Une chaîne JobScheduler est fournie pour synchroniser le noeud local toutes les 30 secondes.

Navigation

JOC-NAV.png

La navigation dans le module se fait depuis cet encart.
il se trouve à gauche de toute les pages du module.


Le menu déroulant Oeil.png permet de passer d'une page à l'autre :

  • Visualisation des ordres
  • Visualisation des traitements indépendants
  • Visualisation des verrous
  • État des éléments du réseau :
    1. Moteurs
    2. Process classes
    3. Moteur distant
    4. Connexion

Les différentes pages et vue sont détaillées au fil du document.

Par défaut, en arrivant dans le module, c'est la page « ordre » qui est chargée.

Afficher et trier les résultats

JOC-NAV2.png

A droite de la navigation est affiché l'encart ci-contre.

Celui-ci est également présent dans toutes les pages du module et permet de définir certains critères de recherche.

Sélectionner une base

La première information dont a besoin le module pour définir quelles exécutions afficher est la base de données concernée.

Pour cela l’icône Bdd.png ouvre un menu déroulant permettant de sélectionner une base parmi celles déclarées précédemment dans le fichier :

app/config/parameters.yml

Prochain rafraîchissement

Le rafraîchissement permet d'afficher les dernières exécutions.

Le temps entre deux rafraîchissements peut être modifié grâce au menu déroulant ci-dessous.

Refresh.png

Cette icône affiche également l'heure du prochain rafraîchissement.

Recherche spécifique

Il est également possible de n'afficher que les exécutions qui se sont finies en erreur, avec le bouton Erreur.png, ou d'afficher les traitements indépendants avec le bouton Chaine.png

Ordres

Par défaut la première page du module est celle dédiée à la visualisation des ordres.
Un ordre est le déclencheur d'une chaîne de traitements.

Le suivi de l'exécution des ordres permet de s’assurer du bon déroulement des chaînes de traitements telles que définies pendant la conception.

Graphique

Un graphique récapitulant l'état des ordres est visible sous l'encart de navigation, cela permet d'avoir rapidement un état du système.

JOC-Graph1.png

Le graphique est cliquable ce qui permet de filtrer facilement les résultats affichés.

État d'un ordre

Au cours de l'exécution d'une chaîne de traitements, un ordre passe par plusieurs états.

Il est impératif de connaître ces états pour pouvoir intervenir si nécessaire.

  • En attente

État d'un ordre en attente de déclenchement, il ne nécessite aucune intervention mais peut être démarré manuellement.

Cet état est caractérisé par un affichage en gris.

Joc-order-waiting.png
  • En cours (Running)

État d'un ordre en cours de traitement, il ne nécessite aucune intervention mais peut être stoppé.
Cet état est caractérisé par un affichage en jaune.

Joc-order-running.png
  • Fini (Done)

État d'un ordre qui a fini son exécution. Il est représenté par son affichage bleu.

Joc-order-done.png
  • En attente (Setback)

État d'un ordre qui a rencontré une erreur lors de son exécution et qui a été programmé pour refaire l'étape en erreur, après un délai décidé par le concepteur.

Il ne nécessite pas d'intervention dans la plupart des cas, mais une certaine vigilance.
Il est caractérisé par son affichage rosé.

Joc-order-setback.png
  • Suspendu (Suspended)

État d'un ordre qui a rencontré une erreur lors de son exécution et qui à été programmé pour attendre une intervention.

Il nécessite une correction de l'erreur avant de le relancer. Il est mis en valeur par un affichage rouge.

Joc-order-suspended.png

Option de visualisation

La liste des ordres est visible au centre de la page.

JOC-Visu.png

Plusieurs options y sont associées :

Icône Nom Description
Joc-sort.png trier par : Permet de trier les ordres par :
  • nom du moteur qui l'a exécuté.
  • nom de la chaîne qu'il a déclenché.
  • date de la dernière exécution.
Joc-moteur.png Afficher moteur Affiche le nom du moteur qui traite l'ordre.
Joc-messages.png Messages Affiche le dernier message reçu durant l'exécution dans la colonne « sortie ».
Joc-info.png Informations Affiche le champ d'information écrit lors de la création de l'ordre dans la colonne « titre ».
Joc-impr.png Format d'impression Affiche le résultat de la recherche en format imprimable.
Rss.png RSS-feed Publie les résultats dans un flux RSS.
Re-fresh.png Actualiser les données Rafraîchit manuellement les résultats.

Des champs de recherche sont également présents au-dessus de chaque colonne.

Vue détaillée

Lorsque l'on sélectionne un ordre, ses informations sont chargées dans les différents onglets en bas de page.

Le premier de ces onglets contient les principales informations sur l'ordre ainsi que plusieurs boutons d'action permettant de planifier un nouveau départ ou de stopper l'exécution en cours.

Joc-details.png

Nous allons détailler les informations qui y sont inscrites :

Dossier Répertoire dans lequel est placé l'ordre.
Nom Nom de l'ordre.
Chaîne Nom de la chaîne exécutée par l'ordre.
Titre Affiche le champ d'information écrit lors de la création de l'ordre.
Démarrer Date et heure du début de l'exécution.
Setback Heure à laquelle sera relancé l'ordre pour les ordres en état « setback ».
Fin Date et heure de la fin de l'exécution.
Sortie Réponse du dernier script.
Priorité Priorité de l'ordre ( 0 = prioritaire ).
Nb. Nombre de relances pour les ordres en état « setback ».
Suivant Prochain départ planifié.
Since Durée depuis laquelle l'ordre est en cours, pour les ordres en état « running ».
Black list
Paramètre Nom des paramètres de l'ordre.
Valeur Valeur de chaque paramètre de l'ordre.

L'onglet suivant contient les champs spécifiques à la dernière exécution.

Joc-details2.png

En voici le détail :

Démarrer Date et heure du début de l'exécution.
Fin Date et heure de la fin de l'exécution.
Erreur Messages d'erreur lors de la dernière exécution.
Cause Cause de l'erreur.
Exit Code retour renvoyé par le dernier script exécuté.
PID Affiche le numéro de processus ( windows ou unix ) du traitement.

Le troisième onglet « schéma » contient une représentation graphique de la chaîne de traitement déclenchée par l'ordre sélectionné.

Joc-details-img.png

Traitements

Le suivi des traitements permet de vérifier le bon fonctionnement des jobs indépendants mais aussi des jobs chaînés avec l'option Chaine.png

Graphique

Un graphique récapitule l'état des ordres.
Il est visible sous l'encart de navigation permettant d'avoir un état du système.

Le graphique est cliquable, ce qui permet de filtrer rapidement les résultats affichés.

JOC-Graph2.png

État d'un traitement

Un traitement peut être dans différents états. Il est impératif de connaître ces états pour pouvoir intervenir si nécessaire.

  • Chargé (Loaded)

État d'un traitement qui est pris en compte par le moteur mais n'a pas de déclencheur. Ses traitements sont affichés en gris

  • En attente (Pending)

État d'un traitement en attente de déclenchement. Ses traitements sont en vert.

Joc-job-pending.png
  • En cours (Running)

État d'un traitement en cours d'exécution. Les traitements en cours sont affichés en jaune.

  • Arrêter (Stopped)

État d'un traitement bloqué, suite à une erreur ou par l'intervention d'un opérateur. Ils sont mis en valeur par un affichage rouge.

Option de visualisation

La liste des traitements est visible au centre de la page.

JOC-Visu2.png


Plusieurs options y sont associées :

Icône Nom Description
Joc-messages.png Messages Affiche le dernier message reçu durant l'exécution dans la colonne « sortie ».
Joc-fin.png Afficher fin Affiche l'heure de fin de l'exécution.
Joc-pclasses.png Process classes Affiche le nom de l'agent qui exécute le traitement.
Joc-impr.png Format d'impression Affiche le résultat de la recherche en format imprimable.
Re-fresh.png Actualiser les données Rafraîchit manuellement les résultats.

Vue détaillée

Lorsque l'on sélectionne un traitement, ses informations sont chargées dans les différents onglets en bas de page.

Le premier de ces onglets contient les principales informations sur la tâche ainsi que plusieurs boutons d'action permettant de planifier un nouveau départ ou de stopper l'exécution en cours.

Joc-details3.png

Nous allons détailler ces informations :

Dossier Répertoire dans lequel est placé l'ordre.
Sortie Réponse du dernier script.
Titre Affiche le champ d'information.
Nom Nom de l'ordre.
État État du traitement sélectionné.
Cible Agent qui doit exécuter le traitement.
Paramètre Nom des paramètres de l'ordre.
Valeur Valeur de chaque paramètre de l'ordre.

Il est également possible de planifier un départ, de stopper un traitement en cours, de débloquer un traitement stoppé ou d’arrêter une exécution.

L'onglet « Tâches » contient la liste des tâches en cours pour ce traitement, dans le cas d'un traitement pouvant avoir plusieurs exécutions simultanées.

Verrous

Les verrous sont des ressources théoriques qui permettent la gestion des contraintes de non-simultanéité entre différents traitements.

Chaque verrou contient un nombre défini de jetons.

Un traitement peut utiliser soit un jeton soit tous les jetons, on parle alors de traitement exclusif.

Joc-lock.png

Réseau

L'état du réseau est présenté dans différentes pages, correspondant à ses différents composants.

Moteurs

L'état des moteurs est représenté graphiquement dans trois onglets, sous l'encart de navigation

Les moteurs sont également listés au centre de la page.

Joc-VJR.png

Les différents états possibles d'un moteur sont :

  • Actif (Running), affiché en vert.
Joc-V.png
  • En Pause (Paused), affiché en jaune.
Joc-J.png
  • En cours d'activation (Waiting), affiché en blanc.
Joc-W.png
  • Perdu (Lost), affiché en rouge.
Joc-R.png

Process classes

Les « process classes » sont des fichiers qui contiennent les informations de connexion à un agent (ou moteur distant).

Pour le moteur ils représentent l'agent et sont utilisés pour soumettre les tâches.

Joc-processclss.png

Ils sont présentés en liste, elle contient les informations suivantes :

Moteur Moteur dans lequel est défini l'agent.
Localisation Chemin d’accès au fichier.
Nom Nom de fichier.
Use Nombre d'exécutions en cours sur cet agent.
Max Nombre maximum d'exécutions simultanées.
Moteur distant Adresse et port de la cible.
Erreur Cocher si la cible n'a pas pu être atteinte.

Moteur distant

Les moteurs distants sont les moteurs qui sont abonnés à un superviseur.

Joc-rmtscheduler.png

Ils sont présentés en liste, celle-ci contient les informations suivantes :

Superviseur Nom de l'instance qui supervise le moteur.
Moteur Nom du moteur.
Nom de l'hôte Nom du serveur sur lequel est installé le moteur.
Adresse IP Adresse IP de l'hôte.
Port Port d'écoute.
Version Version de jobscheduler.

Connexions

Cette page liste les connexions ouvertes vers les moteurs.

Joc-conn.png