Amazon を使用したインスタンスのモニタリング AWS PCS CloudWatch - AWS PCS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon を使用したインスタンスのモニタリング AWS PCS CloudWatch

AWS PCS は、PCSコンピューティングノードグループで定義されているスケーリング要件を満たすために、必要に応じて Amazon EC2インスタンスを起動します。これらのインスタンスは、Amazon を使用して実行中にモニタリングできます CloudWatch。実行中のインスタンスのログは、ログインしてインタラクティブなコマンドラインツールを使用して検査できます。ただし、デフォルトでは、 CloudWatch メトリクスデータはインスタンスが終了すると一定期間のみ保持され、通常、インスタンスログはインスタンスをバックアップするEBSボリュームとともに削除されます。によって起動されたインスタンスのメトリクスまたはログ記録データが終了したPCS後に保持するには、EC2起動テンプレートを使用してインスタンスで CloudWatch エージェントを設定できます。このトピックでは、実行中のインスタンスのモニタリングの概要と、永続インスタンスのメトリクスとログを設定する方法の例を示します。

実行中のインスタンスのモニタリング

AWS PCS インスタンスの検索

によって起動されたインスタンスをモニタリングするにはPCS、クラスターまたはコンピューティングノードグループに関連付けられている実行中のインスタンスを見つけます。次に、特定のインスタンスのEC2コンソールで、ステータスとアラームモニタリングセクションを検査します。これらのインスタンスのログインアクセスが設定されている場合は、インスタンスに接続して、インスタンス上のさまざまなログファイルを検査できます。によって管理されるインスタンスを特定する方法の詳細については、PCS「」を参照してくださいでのコンピューティングノードグループインスタンスの検索 AWS PCS

詳細メトリクスの有効化

デフォルトでは、インスタンスメトリクスは 5 分間隔で収集されます。1 分間隔でメトリクスを収集するには、コンピューティングノードグループの起動テンプレートで詳細 CloudWatch モニタリングを有効にします。詳細については、「詳細 CloudWatchモニタリングを有効にする」を参照してください。

永続インスタンスのメトリクスとログの設定

インスタンスに Amazon CloudWatch エージェントをインストールして設定することで、インスタンスのメトリクスとログを保持できます。これは主に 3 つのステップで構成されています。

  1. CloudWatch エージェント設定を作成します。

  2. PCS インスタンスで取得できる設定を保存します。

  3. CloudWatch エージェントソフトウェアをインストールし、設定を取得し、設定を使用して CloudWatch エージェントを起動するEC2起動テンプレートを作成します。

詳細については、「Amazon ユーザーガイド」の CloudWatch 「 エージェントを使用してメトリクス、ログ、トレースを収集する」、および「」を参照してくださいでの Amazon EC2起動テンプレートの使用 AWS PCS CloudWatch

CloudWatch エージェント設定を作成する

インスタンスに CloudWatch エージェントをデプロイする前に、収集するメトリクス、ログ、トレースを指定するJSON設定ファイルを生成する必要があります。設定ファイルは、ウィザードを使用して作成することも、テキストエディタを使用して手動で作成することもできます。設定ファイルは、このデモンストレーション用に手動で作成されます。

AWS CLI がインストールされているコンピュータで、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 「エージェント設定ファイルを手動で作成または編集する」を参照してください。

  • これらの情報タイプを収集metricsしない場合は、 logsを省略するか、 を省略するかを選択できます。

{ "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 日です。

さらに、 ファイルは、いくつかの一般的なメトリクスを収集し、インスタンス ID 別に集約するように CloudWatch エージェントに指示します。

設定を保存する

CloudWatch エージェント設定ファイルは、PCSコンピューティングノードインスタンスがアクセスできる場所に保存する必要があります。これを行うには、2 つの一般的な方法があります。コンピューティングノードグループインスタンスがインスタンスプロファイルを介してアクセスできる Amazon S3 バケットにアップロードできます。または、Amazon Systems Manager パラメータストアにSSMパラメータとして保存することもできます。

S3 バケットへのアップロード

ファイルを S3 に保存するには、次のAWSCLIコマンドを使用します。コマンドを実行する前に、次の置換を行います。

  • 置換 DOC-EXAMPLE-BUCKET 独自の S3 バケット名を使用する

まず、 (既存のバケットがある場合はオプション) 設定ファイルを保持するバケットを作成します。

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

次に、ファイルをバケットにアップロードします。

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

SSM パラメータとして保存する

ファイルをSSMパラメータとして保存するには、次のコマンドを使用します。コマンドを実行する前に、次の置換を行います。

  • 置換 region-code を、 で作業している AWS AWSリージョンで使用しますPCS。

  • (オプション) を置き換える AmazonCloudWatch-PCS パラメータに独自の名前を付けます。名前のプレフィックスを から変更する場合AmazonCloudWatch-、ノードグループインスタンスプロファイルの SSMパラメータに読み取りアクセスを具体的に追加する必要があることに注意してください。

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エンドポイントを使用して実現できます。