Veröffentlicht am :
Verwaltung CREATION_INTERNE

Bereinigung von DMS-Aufgaben und -Protokollen

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Das DMSRVADM-Verfahren wird zur Verwaltung des DataFlux Data Management Servers verwendet. Dieses Beispiel veranschaulicht, wie man einen Bericht über laufende oder abgeschlossene Aufgaben erhält und dann die Informationen aus diesem Bericht (insbesondere die Aufgabenkennung 'jobid') verwendet, um die Funktionen DMSrvKillJob und DMSrvDeleteLog aufzurufen. Diese Funktionen sind entscheidend, um Ressourcen freizugeben und die Ordnung auf dem Server aufrechtzuerhalten, indem unerwünschte Prozesse gestoppt und Ausführungsprotokolle gelöscht werden.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele generieren simulierte Daten ('work.joblist'), um Funktionsaufrufe zu demonstrieren, ohne von externen, bereits vorhandenen Daten abhängig zu sein, oder verwenden simulierte CAS-Sitzungen für Viya-Beispiele.

1 Codeblock
PROC DMSRVADM / DATA _NULL_ Data
Erklärung :
Dieses grundlegende Beispiel zeigt, wie PROC DMSRVADM verwendet wird, um einen Aufgabenbericht zu generieren. Anschließend durchläuft ein Data Step diesen Bericht und simuliert den Aufruf der Funktionen DMSrvKillJob und DMSrvDeleteLog für jede Aufgabe. Die tatsächlichen Aufrufe sind auskommentiert, eine einfache PUT-Anweisung dient der Veranschaulichung.
Kopiert!
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 Codeblock
PROC DMSRVADM / DATA _NULL_ Data
Erklärung :
Dieses Beispiel erweitert das erste durch das Hinzufügen einer Auswahllogik. Nach dem Generieren des Aufgabenberichts verwendet der Data Step eine Bedingung 'if status = 'RUNNING'', um nur aktive Aufgaben zu gezielt. Dies ermöglicht eine kontrolliertere Bereinigung, indem vermieden wird, auf bereits abgeschlossene oder ausstehende Aufgaben zu reagieren.
Kopiert!
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 Codeblock
PROC DMSRVADM / DATA _NULL_ Data
Erklärung :
Dieses Beispiel führt die Verwendung von Makrovariablen (%let) zur Definition des Hosts und Ports des Data Management Servers ein. Dies macht den Code flexibler und leichter zu warten, da Verbindungsinformationen an einer einzigen Stelle geändert werden können. Die Bereinigung wird auf 'RUNNING'- und 'FAILED'-Aufgaben ausgedehnt.
Kopiert!
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 Codeblock
PROC CAS / DATA _NULL_ Data
Erklärung :
Dieses Beispiel schlägt ein Szenario vor, in dem man Protokolle nicht vom DataFlux Data Management Server, sondern von CAS-Sitzungen oder -Diensten bereinigen möchte. Da DMSRVADM kein CAS-Verfahren ist, ist das Beispiel konzeptionell und simuliert die Erstellung von CAS-Protokolldaten und den hypothetischen Aufruf einer CAS-Aktion ('logmanagement.cleanupLogs'), die für die Bereinigung inaktiver Protokolle verantwortlich wäre. Dies demonstriert den Ansatz und die Logik der Ressourcenverwaltung in einer Viya/CAS-Umgebung, auch wenn die spezifischen Bereinigungstools variieren können.
Kopiert!
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; */
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : Copyright © SAS Institute Inc. All Rights Reserved