メトリクスとログを CloudWatch に送信するためにインターネットにアクセスできない Auto Scaling グループに EC2 インスタンスを設定する方法を教えてください。

最終更新日: 2020 年 11 月 9 日

ログとメトリクスを Amazon CloudWatch に送信するためのインターネットアクセスがない Amazon EC2 Auto Scaling グループで Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを設定するにはどうすればよいですか?

解決方法

  1. Amazon EC2 インスタンスに CloudWatch Agent をインストールします。このインスタンスにはインターネット接続が必要です。または、CloudWatch エージェントを使用してログとメトリクスを CloudWatch にプッシュしている Amazon EC2 インスタンスを選択することもできます。
  2. CloudWatch エージェントが Amazon EC2 インスタンスからメトリクスとログをプッシュしていることを確認します。
  3. Auto Scaling グループの起動テンプレートを作成します。インスタンスがメトリクスとログを CloudWatch にプッシュできるようにするには、起動テンプレートで正しい AWS Identity and Access Management (IAM) ロールを指定します。[advanced settings] (詳細設定) で、次のようなスクリプトを使用してユーザーデータを定義します。このスクリプトのカスタマイズバージョンを使用して、ステップ 1 の JSON 設定に基づいて CloudWatch エージェントをインストールおよび設定します。
    注: このサンプルユーザーデータスクリプトは、Amazon EC2 Linux インスタンスに CloudWatch エージェントをインストールします。スクリプトは、メモリとディスクの使用率を監視するようにエージェントを構成してから、エージェントを起動します。Auto Scaling グループの特定リージョンのダウンロードリンクを使用する必要があります。
#!/bin/bash
cd /tmp
wget https://s3.<region>.amazonaws.com/amazoncloudwatch-agent-<region>/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
rpm -U ./amazon-cloudwatch-agent.rpm
cat << EOF > /opt/aws/amazon-cloudwatch-agent/bin/config.json
{
  "agent": {
    "metrics_collection_interval": 60
  },
  "metrics": {
    "append_dimensions": {
      "InstanceId": "\${aws:InstanceId}"
    },
    "metrics_collected": {
      "disk": {
        "measurement": [
          "disk_used_percent"
        ],
        "resources": [
          "*"
        ]
      },
      "mem": {
        "measurement": [
          "mem_used_percent"
        ]
      }
    }
  }
}
EOF
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s

  • プライベートサブネットをホストする VPC に、CloudWatch モニタリングおよび CloudWatch Logs 用のインターフェイス Virtual Private Cloud (VPC) エンドポイントを追加します。正しいエンドポイントを見つけるには、Amazon CloudWatch のエンドポイントとクォータを参照してください。これらの VPC エンドポイントで必要な CloudWatch アクションのみを許可するには、エンドポイントポリシーをカスタムポリシーで更新します。

    CloudWatch モニタリング VPC エンドポイントのポリシーの例:

  • {
      "Statement": [
        {
          "Sid": "PutOnly",
          "Principal": "*",
          "Action": [
            "cloudwatch:PutMetricData"
          ],
          "Effect": "Allow",
          "Resource": "*"
        }
      ]
    }

    CloudWatch Logs VPC エンドポイントのポリシーの例:

    {
      "Statement": [
        {
          "Sid": "PutOnly",
          "Principal": "*",
          "Action": [
            "logs:CreateLogGroup",
            "logs:CreateLogStream",
            "logs:PutLogEvents"
          ],
          "Effect": "Allow",
          "Resource": "*"
        }
      ]
    }

    詳細については、後述の「インターフェイス VPC エンドポイントの作成に関する考慮事項」を参照してください。

  • プライベートサブネットをホストする VPC に、Amazon S3 の Virtual Private Cloud (VPC) ゲートウェイエンドポイントを追加します。このエンドポイントにより、プライベートサブネット内のインスタンスからのユーザーデータスクリプトが Amazon S3 から CloudWatch エージェントパッケージにアクセスしてダウンロードできるようになります。
  • ステップ 3 で作成した起動テンプレートを使用して、Auto Scaling グループ (プライベートサブネットが有効になっている) を作成します。CloudWatch エージェントは、この Auto Scaling グループで起動したインスタンスで実行されます。また、エージェントは、ステップ 4 で作成した VPC インターフェイスエンドポイントを介してメトリクスとログを送信します。
  • インターフェイス VPC エンドポイントを作成する際の考慮事項

    • 必ず Auto Scaling グループの AWS リージョンに対応するエンドポイントを使用してください。たとえば、Auto Scaling グループがロンドンリージョンにある場合、メトリクスのエンドポイントは monitoring.eu-west-2.amazonaws.com です。このシナリオのログのエンドポイントは logs.eu-west-2.amazonaws.com です。
    • [Enable Private DNS name] (プライベート DNS 名を有効にする) オプションが有効になっていることを確認します。このオプションを有効にできるのは、VPC の [Enable DNS hostnames] (DNS ホスト名を有効にする) 属性と [Enable DNS Support] (DNS サポートを有効にする) 属性が true に設定されている場合のみです。このオプションが無効になっている場合、VPC インターフェイスエンドポイントはサービスエンドポイントにマッピングされません。その結果、インスタンスはパブリックサービスエンドポイントに到達できません。このオプションを有効にすると、サービスエンドポイントが VPC インターフェイスエンドポイントにマッピングされ、サービスエンドポイントへの通信が非公開になります。デフォルトでは、CloudWatch エージェントはこのエンドポイントに接続します。必要に応じて、エージェント構成ファイルの endpoint_override パラメータを使用して、デフォルトのエンドポイントを上書きできます。
    • セキュリティグループのルールが、エンドポイントのネットワークインターフェイスとサービスと通信する VPC 内のリソース間通信を許可していることを確認します。ログとメトリクスをプッシュするための API 呼び出しは、HTTPS ベースの GET/POST リクエストです。エンドポイントネットワークインターフェイスのセキュリティグループには、送信元 IP からの HTTPS プロトコルのインバウンドルールが必要です。送信元 IP アドレスは、メトリクスとログをプッシュする EC2 インスタンスの IP アドレス、または VPC CIDR です。
    • インスタンスが Auto Scaling グループの一部である場合、エージェント構成ファイルで Auto Scaling グループ名としてディメンションの 1 つを指定します。Auto Scaling グループの名前を見つけるために、エージェントは Amazon EC2 エンドポイントからインスタンスに関連付けられたタグを取得します。Amazon EC2 サービスの VPC インターフェイスエンドポイントを追加する必要があります。エージェントは、Amazon EC2 インスタンスのメタデータから ImageIdInstanceId、および InstanceType の値を取得します。
    • </ul

    この記事はお役に立ちましたか?


    請求に関するサポートまたは技術サポートが必要ですか?