Automic Workload Automation

Expand all | Collapse all

Identifier via script que l'agent ou l'AE local est actif

Jump to Best Answer
  • 1.  Identifier via script que l'agent ou l'AE local est actif

    Posted 03-22-2018 06:26 AM
    Bonjour,

    Je souhaite développer un script shell (ksh) testant si l'agent ou l'AE local (V12.0.1) n'est pas en train de travailler, avant de le tuer.

    Quelle serait la meilleure façon de faire cela?

    Concernant l'activité d'un agent, j'ai remarqué que durant l'exécution d'un job sur cet agent un fichier [racineAgent]/agent/out/OAA*.TXT  et un [racineAgent]/agent/temp/JAA*.TXT sont provisoirement créés. Puis-je me baser dessus?

    Un event file à l'écoute via l'agent local ne crée pas de fichier (ni dans out ni temp), mais j'imagine que tuer un agent sur lequel un event file est à l'écoute ne constitue pas un risque particulier.

    Enfin concernant l'activité de l'AE, je n'ai pas trouvé de méthode fiable. Je pourrai tester si une des logs (smgr, cp, wp) a été modifiée depuis moins d'une minute (ou X minutes) mais cela ne constitue aucune garantie.

    Auriez-vous une autre suggestion?

    Cordialement


    PS: j'ai lu https://docs.automic.com/documentation/webhelp/french/ALL/components/AE/11/All%20Guides/help.htm#ucacmt.htm  , mais ca ne correspond pas à mon besoin.




  • 2.  Identifier via script que l'agent ou l'AE local est actif

    Posted 03-22-2018 06:58 AM
    Bonjour Pierre_BOUTEILLON_9365

    Quel est le besoin fonctionnel derrière l'arrêt de l'agent ?

    Les fichiers O*.Txt et J*.txt correspondent respectivement au rapport d'exécution d'un job et au JCL (le script envoyé localement par le serveur sur l'agent). Ils sont supprimés automatiquement à la fin de l'exécution du job, sauf si ce dernier est configuré pour garder une copie locale du rapport d'exécution ou qu'il y a un souci lors de l'exécution. Voir ce post pour plus de détails.

    Cette méthode n'est donc pas forcément idéale. Pourquoi ne pas envisager de terminer l'agent directement depuis le serveur ?

    Cordialement,
    Antoine


  • 3.  Identifier via script que l'agent ou l'AE local est actif

    Posted 03-22-2018 08:26 AM
    Bonjour,

    Le script en question (déjà existant) permet de démarrer/arrêter un agent et/ou AE, et d'afficher le status (démarré, arrêté, AE démarré en mode dégradé)

    La procédure actuelle est effectivement de stopper tous les traitements, depuis l'IHM, avant d'arrêter l'agent ou l'AE.

    Nous souhaiterions ajouter un contrôle supplémentaire, par précaution, dans le script tuant l'agent ou l'AE (ce script étant exécuté depuis le serveur hébergeant l'agent ou l'AE), afin d'interdire l'arrêt de l'agent si un job est en cours (au cas ou un administrateur peu consciencieux, cherche à tuer l'agent sans vérification préalable des jobs en cours). Un paramètre distinct permettra de forcer l'arrêt malgré le traitement en cours.

    Cordialement


  • 4.  Identifier via script que l'agent ou l'AE local est actif

    Posted 03-23-2018 12:38 PM
    Merci pour votre retour.

    Il existe certainement plusieurs méthodes. Une qui me vient à l'esprit serait de chercher des correspondances dans la table des activités (EH) pour vérifier s'il n'y a pas de job en cours sur l'agent concerné.

    La requête ne remonterait que les agents dont les tâches ont un code retour supérieur ou égal à '1800' - en d'autres termes les activités pour cet agent sont terminées.

    Petit exemple de requête dont vous pouvez vous inspirer:
    SELECT DISTINCT EH_HOSTDST
    FROM EH
    WHERE EH_OTYPE IN ('JOBS','JOBF')
    AND EH_STATUS >= '1800';


    Cordialement,
    Antoine


  • 5.  Identifier via script que l'agent ou l'AE local est actif

    Posted 03-27-2018 05:08 AM
    Merci beaucoup pour l'astuce.

    La piste de la requête sql est effectivement une bonne approche pour le test d'activité d'un AE.

    En revanche, concernant l'activité d'un agent, le problème est que les serveurs cible n'ont pas forcément de client Oracle. Or j'ai besoin d'un test réalisable directement depuis le serveur hébergeant l'agent

    A quelles autres solutions possibles pensez-vous

    Cdlt


  • 6.  Identifier via script que l'agent ou l'AE local est actif
    Best Answer

    Posted 03-28-2018 04:51 AM
    Bonjour,

    Vous pouvez lancer directement cette requête depuis le serveur Automation Engine en utilisant une VARA.SQLI (SQL interne).
    Ce type d'objet permet de lancer des requêtes sur la base de l'AE sans passer par un client externe.

    Il faut cependant autoriser son utilisation dans UC_SYSTEM_SETTINGS en passant la valeur de la clé 'SQL_VAR_INTERNAL' à 'YES'. La modification est immédiate et ne nécessite pas de redémarrage du serveur.


    Cordialement,
    Antoine