Publié le :

Interrogation des jobs de SAS Workload Orchestrator via API

Ce code est également disponible en : Deutsch English Español Français
En attente de validation
Attention : Ce code nécessite des droits administrateur.
Le script utilise PROC HTTP pour s'authentifier auprès de SAS© Workload Orchestrator et obtenir un cookie d'authentification. Ensuite, il soumet une requête authentifiée à l'API des jobs pour récupérer la liste de tous les jobs non archivés. La réponse, au format JSON, est lue à l'aide d'une bibliothèque (libname) de type JSON. Enfin, une étape PROC SQL est utilisée pour joindre les différentes parties des données JSON en une seule table SAS©, qui est ensuite affichée.
Analyse des données

Type : EXTERNE


Les données sont récupérées dynamiquement via un appel à l'API REST de SAS Workload Orchestrator. Le script ne dépend pas de fichiers de données préexistants ou de tables SASHELP.

1 Bloc de code
PROC HTTP
Explication :
Ce bloc définit les paramètres de connexion (utilisateur, mot de passe, URL de base) et initialise des fichiers temporaires. Il effectue ensuite un premier appel PROC HTTP avec la méthode POST pour s'authentifier sur l'interface de SAS Grid et récupérer un cookie d'authentification dans le fichier temporaire 'headout'.
Copié !
1/* Provide connection information. */
2%let username = sas;
3%let pw = password;
4%let baseURL = http://sgmg-master.demo.sas.com:8901;
5 
6/* Initialize temporary files to capture HTTP response body and headers. */
7 
8filename body temp;
9filename headout temp;
10 
11/* Authenticate and get an auth cookie. */
12 
13PROC HTTP URL="&baseURL/sasgrid/index.html" method="post"
14out=body headerout=headout headerout_overwrite
15in="username=&username%nrstr(&password)=&pw";
16headers "ContentType"="application/x-www-form-urlencoded";
17RUN;
2 Bloc de code
PROC HTTP Data
Explication :
Ce second appel PROC HTTP utilise l'authentification obtenue précédemment pour interroger l'API des jobs. Il envoie une requête GET pour obtenir tous les jobs non archivés ('state=ALL'). La réponse de l'API, qui est au format JSON, est écrite dans le fichier temporaire 'body'.
Copié !
1/* Submit an authenticated query against the jobs API */
2/* requesting jobs with a state of "ALL" e.g. any non-archived jobs. */
3 
4PROC HTTP URL="&baseURL/sasgrid/api/jobs?state=ALL"
5out=body headerout=headout headerout_overwrite;
6headers "Accept"="application/vnd.sas.sasgrid.jobs;version=1;charset=utf-8";
7RUN;
3 Bloc de code
LIBNAME Data
Explication :
Ce bloc utilise le moteur LIBNAME JSON pour interpréter le contenu du fichier 'body'. Il crée une bibliothèque SAS virtuelle nommée 'jobinfo' dont les tables correspondent aux objets trouvés dans la structure du fichier JSON.
Copié !
1/* Deassign the jobinfo libname. */
2LIBNAME jobinfo;
3 
4/* Read in the job info. */
5LIBNAME jobinfo json fileref=body;
4 Bloc de code
PROC SQL Data
Explication :
Cette procédure SQL crée une table SAS nommée 'jobs' dans la bibliothèque WORK. Elle effectue une jointure sur les tables générées à partir du JSON ('jobinfo.jobs', 'jobinfo.jobs_processinginfo', 'jobinfo.jobs_request') pour consolider les informations pertinentes sur chaque job en une seule table plate.
Copié !
1/* Create a single table with items of interest. */
2PROC SQL;
3create TABLE jobs as
4 select
5 a.id,
6 b.state, b.queue, b.submitTime, b.startTime,
7 b.endTime, b.processId, b.executionHost, b.exitCode,
8 c.name, c.user, c.cmd
9 from
10 jobinfo.jobs a,
11 jobinfo.jobs_processinginfo b,
12 jobinfo.jobs_request c
13 where
14 a.ordinal_jobs = b.ordinal_jobs and
15 b.ordinal_jobs = c.ordinal_jobs
16 order BY a.id;
17QUIT;
5 Bloc de code
PROC PRINT
Explication :
Affiche le contenu de la table 'work.jobs' qui a été créée à l'étape précédente, présentant ainsi le rapport final des jobs.
Copié !
1/* Print it. */
2PROC PRINT DATA=work.jobs; RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Author: Greg Wootton Date: 30AUG2019


Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« L'utilisation de PROC HTTP pour interroger directement les micro-services de SAS Workload Orchestrator (SWO) est une approche moderne qui permet de s'affranchir des interfaces graphiques pour un monitoring programmatique. Ce script transforme votre session SAS en une console d'administration capable d'extraire en temps réel l'état de la file d'attente (Queues) et la charge des nœuds du cluster. »