Publié le :
Administration CREATION_INTERNE

Nettoyage des Tâches et Journaux DMS

Ce code est également disponible en : Deutsch English Español
En attente de validation
Attention : Ce code nécessite des droits administrateur.
La procédure DMSRVADM est utilisée pour administrer le DataFlux Data Management Server. Cet exemple illustre comment obtenir un rapport des tâches en cours ou terminées, puis comment se servir des informations de ce rapport (spécifiquement l'identifiant de tâche 'jobid') pour invoquer les fonctions DMSrvKillJob et DMSrvDeleteLog. Ces fonctions sont essentielles pour libérer des ressources et maintenir l'ordre sur le serveur en stoppant les processus indésirables et en effaçant les traces d'exécution.
Analyse des données

Type : CREATION_INTERNE


Les exemples génèrent des données simulées ('work.joblist') pour démonstrer les appels de fonction sans dépendre de données externes préexistantes, ou utilisent des sessions CAS simulées pour les exemples Viya.

1 Bloc de code
PROC DMSRVADM / DATA _NULL_ Data
Explication :
Cet exemple de base montre comment utiliser PROC DMSRVADM pour générer un rapport de tâches. Ensuite, un Data Step parcourt ce rapport et simule l'appel des fonctions DMSrvKillJob et DMSrvDeleteLog pour chaque tâche. Les appels réels sont commentés, une simple instruction PUT est utilisée pour l'illustration.
Copié !
1DATA work.joblist;
2 LENGTH jobid $16. STATUS $10.;
3 INPUT jobid $ STATUS $;
4 DATALINES;
5JOB001 RUNNING
6JOB002 COMPLETED
7JOB003 FAILED
8JOB004 RUNNING
9;
10RUN;
11 
12PROC DMSRVADM
13 out=work.jobReport
14 host='http://myhost.unx.com' port=50001;
15RUN;
16 
17DATA _null_;
18 SET work.joblist;
19 put 'Simulating kill and delete for JobID: ' jobid;
20 /* Dans un environnement réel, ces fonctions seraient appelées. Ici, nous les simulons. */
21 /* kjrc=dmsrvkilljob (jobid, 'http://myhost.unx.com' , 50001); */
22 /* dlrc=dmsrvdeletelog (jobid, 'http://myhost.unx.com' , 50001); */
23 IF STATUS = 'RUNNING' THEN put ' ACTION: Tentative d''arrêt de la tâche ' jobid;
24 put ' ACTION: Tentative de suppression du journal pour la tâche ' jobid;
25RUN;
2 Bloc de code
PROC DMSRVADM / DATA _NULL_ Data
Explication :
Cet exemple étend le premier en ajoutant une logique de sélection. Après avoir généré le rapport de tâches, le Data Step utilise une condition 'if status = 'RUNNING'' pour cibler uniquement les tâches actives. Cela permet un nettoyage plus contrôlé, en évitant d'agir sur des tâches déjà terminées ou en attente.
Copié !
1DATA work.joblist;
2 LENGTH jobid $16. STATUS $10. description $30.;
3 INPUT jobid $ STATUS $ description $;
4 DATALINES;
5JOB001 RUNNING 'Analyse quotidienne'
6JOB002 COMPLETED 'Rapport mensuel'
7JOB003 FAILED 'Importation de données'
8JOB004 RUNNING 'Traitement de nuit'
9JOB005 PENDING 'Mise à jour'
10;
11RUN;
12 
13PROC DMSRVADM
14 out=work.jobReport
15 host='http://myhost.unx.com' port=50001;
16RUN;
17 
18DATA _null_;
19 SET work.jobReport;
20 IF STATUS = 'RUNNING' THEN DO;
21 put 'Arrêt et suppression des logs pour la tâche ' jobid ' (Status: ' STATUS ', Description: ' description ')';
22 /* Ici, dmsrvkilljob et dmsrvdeletelog seraient appelés pour les tâches 'RUNNING' */
23 /* kjrc=dmsrvkilljob (jobid, 'http://myhost.unx.com' , 50001); */
24 /* dlrc=dmsrvdeletelog (jobid, 'http://myhost.unx.com' , 50001); */
25 END;
26 ELSE DO;
27 put 'Ignoré la tâche ' jobid ' (Status: ' STATUS ')';
28 END;
29RUN;
3 Bloc de code
PROC DMSRVADM / DATA _NULL_ Data
Explication :
Cet exemple introduit l'utilisation de macro-variables (%let) pour définir l'hôte et le port du Data Management Server. Cela rend le code plus flexible et facile à maintenir, car les informations de connexion peuvent être modifiées à un seul endroit. Le nettoyage est étendu aux tâches 'RUNNING' et 'FAILED'.
Copié !
1/* Définition des macro-variables pour l'hôte et le port */
2%let DMS_HOST = http://myhost.unx.com;
3%let DMS_PORT = 50001;
4 
5DATA work.joblist;
6 LENGTH jobid $16. STATUS $10. description $30.;
7 INPUT jobid $ STATUS $ description $;
8 DATALINES;
9JOB001 RUNNING 'Analyse quotidienne'
10JOB002 COMPLETED 'Rapport mensuel'
11JOB003 FAILED 'Importation de données'
12JOB004 RUNNING 'Traitement de nuit'
13JOB005 PENDING 'Mise à jour'
14;
15RUN;
16 
17PROC DMSRVADM
18 out=work.jobReport
19 host="&DMS_HOST."
20 port=&DMS_PORT.;
21RUN;
22 
23DATA _null_;
24 SET work.jobReport;
25 IF STATUS in ('RUNNING', 'FAILED') THEN DO;
26 put 'Traitement de la tâche ' jobid ' (Status: ' STATUS ') sur &DMS_HOST.:&DMS_PORT.';
27 /* Utilisation des macro-variables dans les fonctions simulées */
28 /* kjrc=dmsrvkilljob (jobid, "&DMS_HOST." , &DMS_PORT.); */
29 /* dlrc=dmsrvdeletelog (jobid, "&DMS_HOST." , &DMS_PORT.); */
30 END;
31RUN;
32 
33%mend;
4 Bloc de code
PROC CAS / DATA _NULL_ Data
Explication :
Cet exemple propose un scénario où l'on souhaiterait nettoyer des journaux non pas du DataFlux Data Management Server, mais de sessions ou services CAS. Puisque DMSRVADM n'est pas une procédure CAS, l'exemple est conceptuel et simule la création de données de journaux CAS, puis l'appel hypothétique d'une action CAS ('logmanagement.cleanupLogs') qui serait responsable du nettoyage des journaux inactifs. Cela démontre l'approche et la logique de gestion des ressources dans un environnement Viya/CAS même si les outils spécifiques de nettoyage peuvent varier.
Copié !
1/* Cet exemple est conceptuel et simule une approche de gestion des journaux */
2/* dans un environnement SAS Viya/CAS, bien que DMSrvAdmin soit spécifique à DataFlux. */
3/* Il illustre l'idée de nettoyer des ressources via des actions CAS si un service */
4/* de nettoyage des journaux CAS était disponible ou pouvait être orchestré. */
5 
6/* Connexion à une session CAS (si non déjà connectée) */
7/* options casopts=(cascertpath="/opt/sas/viya/config/etc/certs/trustedcerts.pem"); */
8/* cas casauto; */
9 
10/* Création d'une table simulée de journaux CAS */
11DATA casuser.caslogs;
12 LENGTH logname $50. logsize num STATUS $10.;
13 INPUT logname $ logsize STATUS $;
14 DATALINES;
15/cas/logs/session1.log 1024 ACTIVE
16/cas/logs/session2.log 2048 INACTIVE
17/cas/logs/old/session3.log 512 INACTIVE
18/cas/logs/corrupted.log 0 ERROR
19;
20RUN;
21 
22/* Utilisation de PROC CAS pour appeler une action simulant le nettoyage */
23/* Imaginez une action CAS 'logmanagement.cleanupLogs' */
24PROC CASUTIL;
25 load DATA=casuser.caslogs outcaslib="casuser" replace;
26RUN;
27 
28PROC CAS;
29 /* Simulation d'une action CAS pour nettoyer les journaux inactifs */
30 /* work.logmanagement.cleanupLogs / details=casuser.caslogs filter='status="INACTIVE"' */
31 /* output table=casuser.cleanedlogs; */
32 
33 PRINT 'Simulating CAS log cleanup for INACTIVE logs from casuser.caslogs...';
34 ACTION TABLE.fetch / TABLE={name='caslogs', caslib='casuser'} sortBy={'logname'};
35 RUN;
36 
37DATA _null_;
38 SET casuser.caslogs;
39 IF STATUS = 'INACTIVE' THEN
40 put 'ACTION CAS (simulé): Suppression du journal inactif ' logname;
41RUN;
42 
43/* Terminer la session CAS si elle a été démarrée ici */
44/* cas term; */
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 : Copyright © SAS Institute Inc. All Rights Reserved