Direkt zum Inhalt

Wie konfiguriere ich Instances in einer EC2-Auto-Scaling-Gruppe, die keinen Internetzugang hat, um Metriken und Protokolle an CloudWatch zu übermitteln?

Lesedauer: 3 Minute
0

Ich habe eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance in einer Amazon-EC2-Auto-Scaling-Gruppe, die keinen Internetzugang hat. Ich möchte, dass die Amazon-EC2-Instance Protokolle und Metriken an Amazon CloudWatch übermittelt.

Lösung

Gehe wie folgt vor, um EC2-Instances in einer EC2-Auto-Scaling-Gruppe so zu konfigurieren, dass sie Metriken und Protokolle an CloudWatch senden.

Den CloudWatch-Agenten installieren

Installiere den CloudWatch-Agenten auf einer Instance, die über eine Internetverbindung verfügt. Oder verwende eine vorhandene Instance, die bereits Protokolle und Metriken über den CloudWatch-Agenten an CloudWatch sendet.

Hinweis: Nimm den Namen der Auto-Scaling-Gruppe als Dimension in deine CloudWatch-Agent-Konfiguration auf. Der Agent ruft diesen Namen aus Instance-Tags und anderen Metadaten wie ImageId, InstanceId und InstanceType ab.

Vergewissere dich danach, dass der CloudWatch-Agent tatsächlich Metriken und Protokolle an CloudWatch übermittelt.

Erstelle eine Startvorlage für deine EC2-Auto-Scaling-Gruppe

Erstelle eine Startvorlage für die EC2-Auto-Scaling-Gruppe.

Wähle Erweiterte Details aus. Wähle danach IAM-Instance-Profil und Benutzerdaten aus. Gib unter Benutzerdaten ein Skript an, um den CloudWatch-Agenten basierend auf dem von dir konfigurierten JSON zu installieren und zu konfigurieren. Wähle für das IAM-Instance-Profil die AWS Identity and Access Management (IAM)-Rolle aus, die es EC2-Instances ermöglicht, Metriken und Protokolle an CloudWatch zu senden. Informationen zu diesen erweiterten Einstellungen findest du unter Erweiterte Einstellungen.

Beispiel für ein Benutzerdatenskript auf einer Instance:

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

Hinweis: Ersetze REGION durch deine AWS-Region. Um Sonderzeichen in der Datei config.json zu maskieren, verwende Backslashs (\). Das Skript konfiguriert den CloudWatch-Agenten so, dass er die Arbeitsspeicher- und Festplattenauslastung überwacht und dann den Agenten startet. Vergewissere dich, dass du den Download-Link für die Region deiner EC2-Auto-Scaling-Gruppe verwendest.

Erstelle VPC-Endpunkte für deine Metriken und Protokolle

Erstelle Schnittstellenendpunkte der Virtual Private Cloud (VPC) für CloudWatch-Metriken und Amazon CloudWatch Logs für die VPC, die die privaten Subnetze hostet. Aktualisiere danach deine Endpunktrichtlinien mit benutzerdefinierten Richtlinien, um die erforderlichen CloudWatch-Aktionen zuzulassen. Informationen zu Service-Endpunkten siehe Amazon-CloudWatch-Endpunkte und Kontingente.

Hinweis: Achte darauf, den Endpunkt zu verwenden, der der Region deiner EC2-Auto-Scaling-Gruppe entspricht. Wenn sich deine EC2-Auto-Scaling-Gruppe beispielsweise in der Region eu-west-2 befindet, verwende monitoring.eu-west-2.amazonaws.com für Metriken und logs.eu-west-2.amazonaws.com für Protokolle.

Beispiel für eine CloudWatch-VPC-Endpunktrichtlinie:

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

Beispiel für eine CloudWatch-Logs-VPC-Endpunktrichtlinie:

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

Erstelle danach einen VPC-Gateway-Endpunkt für Amazon Simple Storage Service (Amazon S3) für die VPC, die deine privaten Subnetze hostet. Dieser Endpunkt ermöglicht es Instances in den privaten Subnetzen, das CloudWatch-Agent-Paket herunterzuladen.

Erstelle eine EC2-Auto-Scaling-Gruppe

Erstelle eine EC2-Auto-Scaling-Gruppe mit aktivierten privaten Subnetzen mithilfe der Startvorlage, die du erstellt hast.