Auftragsabschlussprotokolle in AWS PCS - AWS PCS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Auftragsabschlussprotokolle in AWS PCS

Auftragsabschlussprotokolle enthalten wichtige Informationen zu Ihren AWS Parallel Computing Service (AWS PCS) -Jobs, sobald sie abgeschlossen sind, ohne dass zusätzliche Kosten anfallen. Sie können andere AWS Dienste verwenden, um auf Ihre Protokolldaten zuzugreifen und diese zu verarbeiten, z. B. Amazon CloudWatch Logs, Amazon Simple Storage Service (Amazon S3) und Amazon Data Firehose. AWS PCS zeichnet Metadaten zu Ihren Jobs auf, z. B. die folgenden.

  • Job-ID und Name

  • Benutzer- und Gruppeninformationen

  • Jobstatus (z. B.COMPLETED,FAILED,CANCELLED)

  • Verwendete Partition

  • Zeitlimits

  • Start-, Ende-, Absendezeiten und zulässige Zeiten

  • Liste und Anzahl der Knoten

  • Anzahl Prozessoren

  • Arbeitsverzeichnis

  • Ressourcennutzung (CPU, Arbeitsspeicher)

  • Exit-Codes

  • Knotendetails (Namen, Instanz IDs, Instanztypen)

Voraussetzungen

Der IAM-Prinzipal, der den AWS PCS-Cluster verwaltet, muss die pcs:AllowVendedLogDeliveryForResource Aktion zulassen.

Die folgende Beispiel-IAM-Richtlinie gewährt die erforderlichen Berechtigungen.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PcsAllowVendedLogsDelivery", "Effect": "Allow", "Action": ["pcs:AllowVendedLogDeliveryForResource"], "Resource": [ "arn:aws:pcs:::cluster/*" ] } ] }

Richten Sie Protokolle zum Abschluss von Aufträgen ein

Sie können Auftragsabschlussprotokolle für Ihren AWS PCS-Cluster mit dem AWS Management Console oder einrichten AWS CLI.

AWS Management Console
So richten Sie Auftragsabschlussprotokolle mit der Konsole ein
  1. Öffnen Sie die AWS PCS-Konsole.

  2. Klicken Sie im Navigationsbereich auf Cluster.

  3. Wählen Sie den Cluster aus, dem Sie Auftragsabschlussprotokolle hinzufügen möchten.

  4. Wählen Sie auf der Seite mit den Cluster-Details die Registerkarte Logs aus.

  5. Wählen Sie unter Job Completion Logs die Option Hinzufügen aus, um bis zu 3 Log-Lieferziele aus CloudWatch Logs, Amazon S3 und Firehose hinzuzufügen.

  6. Wählen Sie Protokollzustellungen aktualisieren aus.

AWS CLI
Um Protokolle zum Abschluss von Aufträgen einzurichten, verwenden Sie AWS CLI
  1. Erstellen Sie ein Ziel für die Protokollzustellung:

    aws logs put-delivery-destination --region region \ --name pcs-logs-destination \ --delivery-destination-configuration \ destinationResourceArn=resource-arn

    Ersetze:

    • region— Der AWS-Region Ort, an dem Sie das Ziel erstellen möchten, z. B. us-east-1

    • pcs-logs-destination— Ein Name für das Ziel

    • resource-arn— Der Amazon-Ressourcenname (ARN) einer CloudWatch Logs-Protokollgruppe, eines S3-Buckets oder eines Firehose-Lieferstreams.

    Weitere Informationen finden Sie PutDeliveryDestinationin der Amazon CloudWatch Logs API-Referenz.

  2. Legen Sie den PCS-Cluster als Quelle für die Protokollzustellung fest:

    aws logs put-delivery-source --region region \ --name cluster-logs-source-name \ --resource-arn cluster-arn \ --log-type PCS_JOBCOMP_LOGS

    Ersetze:

    • region— Der AWS-Region Ihres Clusters, wie us-east-1

    • cluster-logs-source-name— Ein Name für die Quelle

    • cluster-arn— der ARN Ihres AWS PCS-Clusters

    Weitere Informationen finden Sie PutDeliverySourcein der Amazon CloudWatch Logs API-Referenz.

  3. Connect die Lieferquelle mit dem Lieferziel:

    aws logs create-delivery --region region \ --delivery-source-name cluster-logs-source \ --delivery-destination-arn destination-arn

    Ersetze:

    • region— Die AWS-Region, wie us-east-1

    • cluster-logs-source— Der Name Ihrer Lieferquelle

    • destination-arn— Die ARN Ihres Lieferziels

    Weitere Informationen finden Sie CreateDeliveryin der Amazon CloudWatch Logs API-Referenz.

Wie finde ich Protokolle zum Abschluss von Aufträgen

Sie können Protokollziele in CloudWatch Logs und Amazon S3 konfigurieren. AWS PCS verwendet die folgenden strukturierten Pfad- und Dateinamen.

CloudWatch Logs

AWS PCS verwendet das folgende Namensformat für den CloudWatch Logs-Stream:

AWSLogs/PCS/cluster-id/jobcomp.log

Beispiel: AWSLogs/PCS/pcs_abc123de45/jobcomp.log

Amazon S3

AWS PCS verwendet das folgende Namensformat für den S3-Pfad:

AWSLogs/account-id/PCS/region/cluster-id/jobcomp/year/month/day/hour/

Beispiel: AWSLogs/111122223333/PCS/us-east-1/pcs_abc123de45/jobcomp/2025/06/19/11/

AWS PCS verwendet das folgende Namensformat für die Protokolldateien:

PCS_jobcomp_year-month-day-hour_cluster-id_random-id.log.gz

Beispiel: PCS_jobcomp_2025-06-19-11_pcs_abc123de45_04be080b.log.gz

Protokollfelder für den Abschluss von Aufträgen

AWS PCS schreibt Protokolldaten zur Auftragsabwicklung als JSON-Objekte. Der JSON-Container jobcomp enthält Jobdetails. In der folgenden Tabelle werden die Felder im jobcomp Container beschrieben. Einige Felder sind nur unter bestimmten Umständen vorhanden, z. B. bei Array-Jobs oder heterogenen Jobs.

Protokollfelder für den Abschluss von Aufträgen
Name Beispielwert Erforderlich Hinweise
job_id 11 Ja Immer mit Wert präsent
user "root" Ja Immer mit Wert präsent
user_id 0 Ja Immer mit Wert präsent
group "root" Ja Immer mit Wert präsent
group_id 0 Ja Immer mit Wert präsent
name "wrap" Ja Immer mit Wert präsent
job_state "COMPLETED" Ja Immer mit Wert präsent
partition "Hydra-MpiQueue-abcdef01-7" Ja Immer mit Wert präsent
time_limit "UNLIMITED" Ja Immer präsent, könnte es aber sein "UNLIMITED"
start_time "2025-06-19T10:58:57" Ja Immer präsent, könnte es aber sein "Unknown"
end_time "2025-06-19T10:58:57" Ja Immer präsent, könnte es aber sein "Unknown"
node_list "Hydra-MpiNG-abcdef01-2345-1" Ja Immer mit Wert präsent
node_cnt 1 Ja Immer mit Wert präsent
proc_cnt 1 Ja Immer mit Wert präsent
work_dir "/root" Ja Immer präsent, könnte es aber sein "Unknown"
reservation_name "weekly_maintenance" Ja Immer vorhanden, könnte aber eine leere Zeichenfolge sein ""
tres.cpu 1 Ja Immer mit Wert präsent
tres.mem.val 600 Ja Immer mit Wert präsent
tres.mem.unit "M" Ja Kann sein "M" oder "bb"
tres.node 1 Ja Immer mit Wert präsent
tres.billing 1 Ja Immer mit Wert präsent
account "finance" Ja Immer vorhanden, kann aber eine leere Zeichenfolge sein ""
qos "normal" Ja Immer vorhanden, könnte aber eine leere Zeichenfolge sein ""
wc_key "project_1" Ja Immer vorhanden, könnte aber eine leere Zeichenfolge sein ""
cluster "unknown" Ja Immer präsent, könnte es aber sein "unknown"
submit_time "2025-06-19T10:55:46" Ja Immer präsent, könnte es aber sein "Unknown"
eligible_time "2025-06-19T10:55:46" Ja Immer präsent, könnte es aber sein "Unknown"
array_job_id 12 Nein Nur vorhanden, wenn es sich bei dem Job um einen Array-Job handelt
array_task_id 1 Nein Nur vorhanden, wenn es sich bei dem Job um einen Array-Job handelt
het_job_id 10 Nein Nur vorhanden, wenn es sich bei dem Job um einen heterogenen Job handelt
het_job_offset 0 Nein Nur vorhanden, wenn es sich bei der Tätigkeit um eine heterogene Tätigkeit handelt
derived_exit_code_status 0 Ja Immer mit Wert präsent
derived_exit_code_signal 0 Ja Immer mit Wert präsent
exit_code_status 0 Ja Immer mit Wert präsent
exit_code_signal 0 Ja Immer mit Wert präsent
node_details[0].name "Hydra-MpiNG-abcdef01-2345-1" Nein Immer präsent, node_details könnte es aber sein "[]"
node_details[0].instance_id "i-0abcdef01234567a" Nein Immer präsent, node_details könnte es aber sein "[]"
node_details[0].instance_type "t4g.micro" Nein Immer präsent, node_details könnte es aber sein "[]"

Beispiele für Protokolle zum Abschluss von Aufträgen

Die folgenden Beispiele zeigen Auftragsabschlussprotokolle für verschiedene Auftragstypen und -status:

{ "jobcomp": { "job_id": 1, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T16:32:57", "end_time": "2025-06-19T16:33:03", "node_list": "Hydra-MpiNG-abcdef01-2345-[1-2]", "node_cnt": 2, "proc_cnt": 2, "work_dir": "/usr/bin", "reservation_name": "", "tres": { "cpu": 2, "mem": { "val": 1944, "unit": "M" }, "node": 2, "billing": 2 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T16:29:40", "eligible_time": "2025-06-19T16:29:41", "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc123def45678", "instance_type": "t4g.micro" }, { "name": "Hydra-MpiNG-abcdef01-2345-2", "instance_id": "i-0def456abc78901", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 2, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T16:33:13", "end_time": "2025-06-19T16:33:14", "node_list": "Hydra-MpiNG-abcdef01-2345-[1-2]", "node_cnt": 2, "proc_cnt": 2, "work_dir": "/usr/bin", "reservation_name": "", "tres": { "cpu": 2, "mem": { "val": 1944, "unit": "M" }, "node": 2, "billing": 2 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T16:33:13", "eligible_time": "2025-06-19T16:33:13", "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc123def45678", "instance_type": "t4g.micro" }, { "name": "Hydra-MpiNG-abcdef01-2345-2", "instance_id": "i-0def456abc78901", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 3, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T22:58:57", "end_time": "2025-06-19T22:58:57", "node_list": "Hydra-MpiNG-abcdef01-2345-1", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 972, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T22:55:46", "eligible_time": "2025-06-19T22:55:46", "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc234def56789", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 4, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "525600", "start_time": "2025-06-19T23:04:27", "end_time": "2025-06-19T23:04:27", "node_list": "Hydra-MpiNG-abcdef01-2345-[1-2]", "node_cnt": 2, "proc_cnt": 2, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 2, "mem": { "val": 1944, "unit": "M" }, "node": 2, "billing": 2 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:01:38", "eligible_time": "2025-06-19T23:01:38", "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc234def56789", "instance_type": "t4g.micro" }, { "name": "Hydra-MpiNG-abcdef01-2345-2", "instance_id": "i-0def345abc67890", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 5, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "FAILED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:09:00", "end_time": "2025-06-19T23:09:00", "node_list": "(null)", "node_cnt": 0, "proc_cnt": 0, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 1, "unit": "G" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:09:00", "eligible_time": "2025-06-19T23:09:00", "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 1, "node_details": [] } } { "jobcomp": { "job_id": 6, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "CANCELLED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:09:36", "end_time": "2025-06-19T23:09:36", "node_list": "(null)", "node_cnt": 0, "proc_cnt": 0, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 400, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:09:35", "eligible_time": "2025-06-19T23:09:36", "het_job_id": 6, "het_job_offset": 0, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 1, "node_details": [] } } { "jobcomp": { "job_id": 7, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "CANCELLED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:10:03", "end_time": "2025-06-19T23:10:03", "node_list": "(null)", "node_cnt": 0, "proc_cnt": 0, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 400, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:10:03", "eligible_time": "2025-06-19T23:10:03", "het_job_id": 7, "het_job_offset": 0, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 1, "node_details": [] } } { "jobcomp": { "job_id": 8, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:11:24", "end_time": "2025-06-19T23:11:24", "node_list": "Hydra-MpiNG-abcdef01-2345-1", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 400, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:11:23", "eligible_time": "2025-06-19T23:11:23", "het_job_id": 8, "het_job_offset": 0, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc234def56789", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 9, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:11:24", "end_time": "2025-06-19T23:11:24", "node_list": "Hydra-MpiNG-abcdef01-2345-2", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 400, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:11:23", "eligible_time": "2025-06-19T23:11:23", "het_job_id": 8, "het_job_offset": 1, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-2", "instance_id": "i-0def345abc67890", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 10, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:12:24", "end_time": "2025-06-19T23:12:24", "node_list":"Hydra-MpiNG-abcdef01-2345-1", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 400, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:12:14", "eligible_time": "2025-06-19T23:12:14", "het_job_id": 10, "het_job_offset": 0, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc234def56789", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 11, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:12:24", "end_time": "2025-06-19T23:12:24", "node_list":"Hydra-MpiNG-abcdef01-2345-2", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 600, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:12:14", "eligible_time": "2025-06-19T23:12:14", "het_job_id": 10, "het_job_offset": 1, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-2", "instance_id": "i-0def345abc67890", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 13, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:47:57", "end_time": "2025-06-19T23:47:58", "node_list":"Hydra-MpiNG-abcdef01-2345-1", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 972, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:43:56", "eligible_time": "2025-06-19T23:43:56" , "array_job_id": 12, "array_task_id": 1, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc345def67890", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 12, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:47:58", "end_time": "2025-06-19T23:47:58", "node_list":"Hydra-MpiNG-abcdef01-2345-1", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 972, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:43:56", "eligible_time": "2025-06-19T23:43:56" , "array_job_id": 12, "array_task_id": 2, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc345def67890", "instance_type": "t4g.micro" } ] } }