Wie kann ich EC2-Instances in einer Auto-Scaling-Gruppe konfigurieren, die keinen Internetzugang hat, um Metriken und Protokolle an CloudWatch zu senden?

Lesedauer: 4 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 Instance Protokolle und Metriken an Amazon CloudWatch sendet.

Behebung

1.    Installieren Sie den CloudWatch-Agenten auf Ihrer Amazon-EC2-Instance. Diese Instance muss über eine Internetverbindung verfügen. Oder Sie können mithilfe des CloudWatch-Agenten eine EC2-Instance auswählen, die die Protokolle und Metriken bereits an CloudWatch weiterleitet.

2.    Stellen Sie sicher, dass der CloudWatch-Agent Metriken und Protokolle von Ihrer EC2-Instance übermittelt.

3.    Erstellen Sie eine Startvorlage für die Auto-Scaling-Gruppe. Führen Sie in Ihrer Startvorlage in den erweiterten Einstellungen die folgenden Schritte aus:
Wählen Sie für das IAM-Instance-Profil die entsprechende richtige AWS Identitäts- und Zugriffsmanagement (Identity and Access Management) (IAM)-Rolle aus, die es Instances ermöglicht, die Metriken und Protokolle an CloudWatch zu übertragen.
Geben Sie für Benutzerdaten ein Skript ein, das dem folgenden Beispiel ähnelt. Verwenden Sie eine angepasste Version dieses Skripts, um den CloudWatch-Agenten auf der Grundlage der JSON-Konfiguration aus Schritt 1** zu installieren und zu konfigurieren:
Hinweis: ** Das folgende Benutzerdatenskript installiert den CloudWatch-Agenten in einer EC2-Linux-Instance. Das Skript konfiguriert den Agenten so, dass er die Speicher- und Festplattenauslastung überwacht, und startet dann den Agenten. Sie müssen den Download-Link für die spezifische AWS-Region Ihrer Auto-Scaling-Gruppe verwenden.

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

4.    Fügen Sie Schnittstellenendpunkte der Virtual Private Cloud (VPC) für die CloudWatch-Überwachung und Amazon CloudWatch Logs zu der VPC, die die privaten Subnetze hostet, hinzu. Informationen zum Finden des richtigen Endpunkts finden Sie unter Amazon-CloudWatch-Endpunkte und -Kontingente. Um nur die erforderlichen CloudWatch-Aktionen auf diesen VPC-Endpunkten zuzulassen, aktualisieren Sie die Endpunktrichtlinien mit benutzerdefinierten Richtlinien.

Sehen Sie sich das folgende Beispiel einer Richtlinie für den CloudWatch-Monitoring-VPC-Endpunkt an:

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

Sehen Sie sich das folgende Beispiel einer Richtlinie für den CloudWatch-Logs-VPC-Endpunkt an:

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

Weitere Informationen finden Sie im Abschnitt Überlegungen zur Erstellung eines VPC-Schnittstellen-Endpunkts.

5.    Fügen Sie einen Virtual Private Cloud (VPC)-Gateway-Endpunkt für Amazon Simple Storage Service (Amazon S3) zur VPC, die die privaten Subnetze hostet, hinzu. Dadurch kann das Benutzerdatenskript der Instances in den privaten Subnetzen auf das CloudWatch-Agent-Paket von Amazon S3 zugreifen und es herunterladen.

6.     Erstellen Sie eine Auto-Scaling-Gruppe mithilfe der Startvorlage, die Sie in Schritt 3 erstellt haben (mit aktivierten privaten Subnetzen). Der CloudWatch-Agent wird in den Instances ausgeführt, die Sie in dieser Auto-Scaling-Gruppe starten. Der Agent sendet auch Metriken und Protokolle über die VPC-Schnittstellenendpunkte, die Sie in Schritt 4 erstellt haben.

Überlegungen zur Erstellung eines VPC-Schnittstellenendpunkts

  • Verwenden Sie unbedingt den Endpunkt, der der Region Ihrer Auto-Scaling-Gruppe entspricht. Wenn sich die Auto-Scaling-Gruppe beispielsweise in der Region London befindet, lautet der Endpunkt für Metriken monitoring.eu-west-2.amazonaws.com. Der Endpunkt für Protokolle in diesem Szenario ist logs.eu-west-2.amazonaws.com.
  • Bestätigen Sie, dass Sie die Option Aktivieren Private-DNS-Name aktiviert haben. Sie können diese Option nur aktivieren, wenn die Attribute nAktivieren DNS-Hostnamen und Aktivieren DNS-Unterstützung für die VPC auf Richtig gesetzt sind. Wenn diese Option deaktiviert ist, wird der VPC-Schnittstellenendpunkt nicht dem Dienstendpunkt zugeordnet. Infolgedessen können die Instances den Endpunkt des öffentlichen Dienstes nicht erreichen. Wenn Sie diese Option aktivieren, wird der Dienstendpunkt dem VPC-Schnittstellenendpunkt zugeordnet und die Kommunikation mit dem Dienstendpunkt wird privat. Standardmäßig stellt der CloudWatch-Agent eine Verbindung zu diesem Endpunkt her. Sie können den Parameter endpoint_override in der Agentenkonfigurationsdatei verwenden, um den Standardendpunkt zu überschreiben, falls erforderlich.
  • Vergewissern Sie sich, dass die Sicherheitsgruppenregeln die Kommunikation zwischen der Netzwerkschnittstelle des Endgeräts und den Ressourcen in Ihrer VPC, die mit dem Dienst kommunizieren, zulassen. Die API-Aufrufe für die Übertragung der Logs und Metriken sind HTTPS-basierte GET/POST-Anfragen. Die Sicherheitsgruppe für die Endpunkt-Netzwerkschnittstelle benötigt Regeln für eingehende Nachrichten für das HTTPS-Protokoll von den Quell-IPs. Die Quell-IP-Adressen sind die IP-Adressen der EC2-Instances, die die Metriken und Protokolle übertragen, oder das VPC CIDR.
  • Wenn Instances Teil einer Auto-Scaling-Gruppe sind, geben Sie in der Agentenkonfigurationsdatei eine der Dimensionen als Auto-Scaling-Gruppennamen an. Um den Namen der Auto-Scaling-Gruppe zu finden, ruft der Agent die der Instance zugeordneten Tags vom Amazon-EC2-Endpunkt ab. Sie müssen den VPC-Schnittstellenendpunkt für den Amazon-EC2-Service hinzufügen. Der Agent ruft die Werte ImageID, InstanceID und InstanceType von den Metadaten der EC2-Instance ab.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr