使用 AWS PCS Amazon 監控實例 CloudWatch - AWS PCS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS PCS Amazon 監控實例 CloudWatch

AWSPCS視需要啟動 Amazon EC2 執行個體,以符合PCS運算節點群組中定義的擴展需求。您可以在這些執行個體使用 Amazon 執行時監控這些執行個體 CloudWatch。您可以登入執行個體並使用互動式命令列工具,來檢查執行中執行個體的記錄。不過,根據預設, CloudWatch 指標資料只會在執行個體終止後保留一段有限的時間,而執行個體記錄檔通常會與支援執行個體的EBS磁碟區一起刪除。若要在終止執行個體PCS之後保留指標或記錄資料,您可以使用EC2啟動範本在執行個體上設定 CloudWatch 代理程式。本主題提供監控執行中執行個體的概觀,並提供如何設定持續性執行個體指標和記錄的範例。

監視執行中執行

尋找AWSPCS實例

若要監視由啟動的執行個體PCS,請尋找與叢集或計算節點群組關聯的執行中執行個體。然後,在指定執行個體的EC2主控台中,檢查 [狀態] 和 [警示] 和 [監視] 區段。如果為這些執行個體設定了登入存取權,您可以連線到這些執行個體,並檢查執行個體上的各種記錄檔。如需識別哪些執行個體受管理的詳細資訊PCS,請參閱尋找運算節點群組執行個體 AWS PCS

啟用詳細指標

根據預設,每隔 5 分鐘收集執行個體測量結果。若要以一分鐘間隔收集指標,請在計算節點群組啟動範本中啟用詳細 CloudWatch 監控。如需詳細資訊,請參閱開啟詳細 CloudWatch監控

設定持續執行個體指標和記錄

您可以在執行個體上安裝和設定 Amazon CloudWatch 代理程式,以保留執行個體的指標和日誌。這包括三個主要步驟:

  1. 建立 CloudWatch 代理程式組態。

  2. 將組態儲存在PCS執行處理可擷取的位置。

  3. 撰寫可安裝 CloudWatch 代理程式軟體、擷取組態並使用組態EC2啟動 CloudWatch 代理程式的啟動範本。

如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的使用 CloudWatch 代理程式收集指標、日誌和追蹤使用 Amazon EC2 啟動模板 AWS PCS

建立 CloudWatch 代理程式組態

在執行個體上部署 CloudWatch 代理程式之前,您必須產生JSON組態檔,以指定要收集的指標、記錄檔和追蹤。您可以使用精靈或使用文字編輯器手動建立組態檔案。此示範將手動建立組態檔案。

在已AWSCLI安裝的電腦上,建立名為 config.json 的 CloudWatch 組態檔案,其中包含下列內容。您也可以使用URL以下命令下載文件的副本。

https://aws-hpc-recipes.s3.amazonaws.com/main/recipes/pcs/cloudwatch/assets/config.json
備註
  • 範例檔案中的日誌路徑適用於 Amazon Linux 2。如果您的執行個體將使用不同的基礎作業系統,請視需要變更路徑。

  • 若要擷取其他記錄,請在下方新增其他項目collect_list

  • 中的值{brackets}是範本化變數。如需支援變數的完整清單,請參閱 Amazon CloudWatch 使用者指南的手動建立或編輯 CloudWatch 代理程式組態檔案

  • 您可以選擇省略,logs或者metrics如果您不想收集這些資訊類型。

{ "agent": { "metrics_collection_interval": 60 }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/cloud-init.log", "log_group_class": "STANDARD", "log_group_name": "/PCSLogs/instances", "log_stream_name": "{instance_id}.cloud-init.log", "retention_in_days": 30 }, { "file_path": "/var/log/cloud-init-output.log", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.cloud-init-output.log", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/amazon/pcs/bootstrap.log", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.bootstrap.log", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/slurmd.log", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.slurmd.log", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/messages", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.messages", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 }, { "file_path": "/var/log/secure", "log_group_class": "STANDARD", "log_stream_name": "{instance_id}.secure", "log_group_name": "/PCSLogs/instances", "retention_in_days": 30 } ] } } }, "metrics": { "aggregation_dimensions": [ [ "InstanceId" ] ], "append_dimensions": { "AutoScalingGroupName": "${aws:AutoScalingGroupName}", "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}" }, "metrics_collected": { "cpu": { "measurement": [ "cpu_usage_idle", "cpu_usage_iowait", "cpu_usage_user", "cpu_usage_system" ], "metrics_collection_interval": 60, "resources": [ "*" ], "totalcpu": false }, "disk": { "measurement": [ "used_percent", "inodes_free" ], "metrics_collection_interval": 60, "resources": [ "*" ] }, "diskio": { "measurement": [ "io_time" ], "metrics_collection_interval": 60, "resources": [ "*" ] }, "mem": { "measurement": [ "mem_used_percent" ], "metrics_collection_interval": 60 }, "swap": { "measurement": [ "swap_used_percent" ], "metrics_collection_interval": 60 } } } }

此檔案會指示 CloudWatch 代理程式監視數個檔案,這些檔案有助於診斷執行個體啟動安裝、驗證和登入,以及其他疑難排解網域中的錯誤。其中包含:

  • /var/log/cloud-init.log— 執行個體組態初始階段的輸出

  • /var/log/cloud-init-output.log— 執行個體組態期間執行的命令輸出

  • /var/log/amazon/pcs/bootstrap.log— 執行個體組態期間執行的PCS特定作業的輸出

  • /var/log/slurmd.log— 從 Slurm 工作負載管理器的守護進程 slurmd 輸出

  • /var/log/messages— 來自核心、系統服務和應用程式的系統訊息

  • /var/log/secure— 與驗證嘗試相關的記錄,例如 SSH sudo 和其他安全事件

記錄檔會傳送至名為的 CloudWatch 記錄群組/PCSLogs/instances。日誌串流是執行處理 ID 和日誌檔基礎名稱的組合。記錄群組的保留時間為 30 天。

此外,檔案還會指示 CloudWatch 代理程式收集數個常用指標,並依執行個體 ID 彙總它們。

儲存組態

CloudWatch 代理程式組態檔必須儲存在可供PCS運算節點執行個體存取的位置。有兩種常見的方法可以做到這一點。您可以將其上傳到運算節點群組執行個體可透過其執行個體設定檔存取的 Amazon S3 儲存貯體,或者,也可以將其作為SSM參數存放在 Amazon Systems Manager 參數存放區中。

上傳到 S3 儲存貯體

若要將檔案存放在 S3 中,請使用下列AWSCLI命令。執行指令之前,請進行下列取代項目:

  • Replace (取代) DOC-EXAMPLE-BUCKET 使用您自己的 S3 存儲桶名稱

首先,(如果您有現有存儲桶,這是可選的),請創建一個存儲桶來保存您的配置文件。

aws s3 mb s3://DOC-EXAMPLE-BUCKET

接下來,將文件上傳到存儲桶。

aws s3 cp ./config.json s3://DOC-EXAMPLE-BUCKET/

儲存為SSM參數

若要將檔案儲存為SSM參數,請使用下列指令。執行指令之前,請進行下列取代項目:

  • Replace (取代) region-code 與您正在使用的AWS地區AWSPCS。

  • (選擇性) 取代 AmazonCloudWatch-PCS 使用您自己的參數名稱。請注意,如果您變更名稱的前置詞,則需要在節點群組執行個體設定檔中特別新增對SSM參數的讀取存取權限。AmazonCloudWatch-

aws ssm put-parameter \ --region region-code \ --name "AmazonCloudWatch-PCS" \ --type String \ --value file://config.json

撰寫EC2啟動範本

啟動範本的特定詳細資料取決於您的組態檔案是儲存在 S3 還是SSM。

使用存放在 S3 中的組態

此指令碼會安裝 CloudWatch 代理程式、從 S3 儲存貯體匯入組態檔案,然後使用它啟動 CloudWatch 代理程式。以您自己的詳細資料取代此指令碼中的下列值:

  • DOC-EXAMPLE-BUCKET — 您的帳戶可以讀取的 S3 儲存貯體名稱

  • /config.json — 相對於存放組態之 S3 儲存貯體根目錄的路徑

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" packages: - amazon-cloudwatch-agent runcmd: - aws s3 cp s3://DOC-EXAMPLE-BUCKET/config.json /etc/s3-cw-config.json - /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file://etc/s3-cw-config.json --==MYBOUNDARY==--

節點群組的IAM執行個體設定檔必須具有儲存貯體的存取權。以下是上述使用者資料指令碼中儲存貯體的範例IAM政策。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] } ] }

另請注意,執行個體必須允許傳出流量到 S3 和 CloudWatch端點。這可以使用安全組或VPC端點來完成,具體取決於您的叢集架構。

使用儲存於中的組態 SSM

此指令碼會安裝 CloudWatch 代理程式、從SSM參數匯入組態檔,然後隨之啟動 CloudWatch 代理程式。以您自己的詳細資料取代此指令碼中的下列值:

  • (選擇性) 取代 AmazonCloudWatch-PCS 使用您自己的參數名稱。

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" packages: - amazon-cloudwatch-agent runcmd: - /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:AmazonCloudWatch-PCS --==MYBOUNDARY==--

節點群組的IAM執行個體原則必須已CloudWatchAgentServerPolicy附加。

如果您的參數名稱不是以開AmazonCloudWatch-頭,則需要在節點群組執行個體設定檔中特別新增對SSM參數的讀取存取權限。這是一個示例IAM策略,說明了前綴 DOC-EXAMPLE-PREFIX.

{ "Version" : "2012-10-17", "Statement" : [ { "Sid" : "CustomCwSsmMParamReadOnly", "Effect" : "Allow", "Action" : [ "ssm:GetParameter" ], "Resource" : "arn:aws:ssm:*:*:parameter/DOC-EXAMPLE-PREFIX*" } ] }

另請注意,執行個體必須允許輸出流量傳送至SSM和 CloudWatch端點。這可以使用安全組或VPC端點來完成,具體取決於您的叢集架構。