跳至內容

如何設定沒有網際網路存取權的 EC2 Auto Scaling 群組中的執行個體,將指標和日誌傳送到 CloudWatch?

2 分的閱讀內容
0

我在 Amazon EC2 Auto Scaling 群組中有一個 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,但是它無法存取網際網路。我希望 Amazon EC2 執行個體將日誌和指標傳送到 Amazon CloudWatch。

解決方法

若要設定 EC2 Auto Scaling 群組中的 EC2 執行個體,以將指標和日誌傳送至 CloudWatch,請執行下列動作。

安裝 CloudWatch 代理程式

在具有網際網路連線的執行個體上安裝 CloudWatch 代理程式。或者,使用已經透過 CloudWatch 代理程式將日誌和指標傳送到 CloudWatch 的現有執行個體。

**注意:**將 Auto Scaling 群組名稱作為維度包含在 CloudWatch 代理程式組態中。代理程式會從執行個體標籤和其他中繼資料 (例如 ImageIdInstanceIdInstanceType) 中擷取此名稱。

然後,確認 CloudWatch 代理程式是否成功將指標和日誌傳送到 CloudWatch。

為您的 EC2 Auto Scaling 群組建立啟動範本

為 EC2 Auto Scaling 群組建立啟動範本

選擇 Advanced details (進階詳細資訊)。然後,選擇 IAM instance profile (IAM 執行個體設定檔) 和 User data (使用者資料)。在 User data (使用者資料) 中輸入指令碼,以根據您設定的 JSON 安裝和設定 CloudWatch 代理程式。在 IAM instance profile (IAM 執行個體設定檔) 中,選取允許 EC2 執行個體將指標和日誌傳送到 CloudWatch 的 AWS Identity and Access Management (IAM) 角色。如需這些進階設定的資訊,請參閱進階設定

執行個體上的使用者資料指令碼範例:

#!/bin/bashcd /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

**注意:**將 REGION 替換為您的 AWS 區域。若要跳脫 config.json 檔案中的特殊字元,請使用反斜線 (\)。此指令碼會設定 CloudWatch 代理程式,以監控記憶體和磁碟使用率,然後啟動該代理程式。請務必使用適合您 EC2 Auto Scaling 群組區域的下載連結

為您的指標和日誌建立 VPC 端點

為 CloudWatch 指標和 Amazon CloudWatch Logs 建立介面虛擬私有雲端 (VPC) 端點,並連接到託管私有子網路的 VPC 中。然後,使用自訂政策更新您的端點政策,以允許所需的 CloudWatch 動作。如需服務端點的資訊,請參閱 Amazon CloudWatch 端點和配額

**注意:**請務必使用與您 EC2 Auto Scaling 群組區域相對應的端點。例如,如果您的 EC2 Auto Scaling 群組位於 eu-west-2 區域,則使用 monitoring.eu-west-2.amazonaws.com 取得指標,使用 logs.eu-west-2.amazonaws.com 取得日誌。

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": "*"
    }
  ]
}

然後,為 Amazon Simple Storage Service (Amazon S3) 建立 VPC 閘道端點,並連接到託管您私有子網路的 VPC。此端點允許私有子網路中的執行個體下載 CloudWatch 代理程式套件。

建立 EC2 Auto Scaling 群組

使用您建立的啟動範本,建立一個已啟用私有子網路的 EC2 Auto Scaling 群組

AWS 官方已更新 8 個月前