Publicado el :
Administración CREACION_INTERNA

Limpieza de Tareas y Registros DMS

Este código también está disponible en: Deutsch English Français
En espera de validación
Attention : Este código requiere privilegios de administrador.
El procedimiento DMSRVADM se utiliza para administrar el DataFlux Data Management Server. Este ejemplo ilustra cómo obtener un informe de las tareas en curso o terminadas y luego cómo usar la información de este informe (específicamente el identificador de tarea 'jobid') para invocar las funciones DMSrvKillJob y DMSrvDeleteLog. Estas funciones son esenciales para liberar recursos y mantener el orden en el servidor deteniendo procesos no deseados y eliminando los rastros de ejecución.
Análisis de datos

Type : CREACION_INTERNA


Los ejemplos generan datos simulados ('work.joblist') para demostrar las llamadas a funciones sin depender de datos externos preexistentes, o utilizan sesiones CAS simuladas para los ejemplos de Viya.

1 Bloque de código
PROC DMSRVADM / DATA _NULL_ Data
Explicación :
Este ejemplo básico muestra cómo usar PROC DMSRVADM para generar un informe de tareas. Luego, un Data Step recorre este informe y simula la llamada a las funciones DMSrvKillJob y DMSrvDeleteLog para cada tarea. Las llamadas reales están comentadas; se utiliza una simple instrucción PUT para la ilustración.
¡Copiado!
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 Bloque de código
PROC DMSRVADM / DATA _NULL_ Data
Explicación :
Este ejemplo extiende el primero añadiendo una lógica de selección. Después de generar el informe de tareas, el Data Step utiliza una condición 'if status = 'RUNNING'' para dirigirse únicamente a las tareas activas. Esto permite una limpieza más controlada, evitando actuar sobre tareas ya terminadas o pendientes.
¡Copiado!
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 Bloque de código
PROC DMSRVADM / DATA _NULL_ Data
Explicación :
Este ejemplo introduce el uso de macrovariables (%let) para definir el host y el puerto del Data Management Server. Esto hace que el código sea más flexible y fácil de mantener, ya que la información de conexión se puede modificar en un solo lugar. La limpieza se extiende a las tareas 'RUNNING' y 'FAILED'.
¡Copiado!
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 Bloque de código
PROC CAS / DATA _NULL_ Data
Explicación :
Este ejemplo propone un escenario en el que se desearía limpiar registros no del DataFlux Data Management Server, sino de sesiones o servicios CAS. Dado que DMSRVADM no es un procedimiento CAS, el ejemplo es conceptual y simula la creación de datos de registros CAS, y luego la llamada hipotética a una acción CAS ('logmanagement.cleanupLogs') que sería responsable de la limpieza de los registros inactivos. Esto demuestra el enfoque y la lógica de gestión de recursos en un entorno Viya/CAS, incluso si las herramientas específicas de limpieza pueden variar.
¡Copiado!
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; */
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved