Comment puis-je configurer des instances EC2 dans un groupe Auto Scaling qui n'a pas accès à Internet pour envoyer des métriques et des journaux à CloudWatch ?

Dernière mise à jour: 09/11/2020

Comment puis-je configurer des instances Amazon Elastic Compute Cloud (Amazon EC2) dans un groupe Auto Scaling Amazon EC2 qui n'a pas accès à Internet pour envoyer des journaux et des métriques à Amazon CloudWatch ?

Résolution

  1. Installez l'agent CloudWatch dans une instance Amazon EC2. Cette instance doit disposer d'une connectivité Internet. Vous pouvez également choisir une instance Amazon EC2 qui envoie déjà les journaux et les métriques vers CloudWatch à l'aide de l'agent CloudWatch.
  2. Vérifiez que l'agent CloudWatch envoie des métriques et des journaux à partir de votre instance Amazon EC2.
  3. Créez un modèle de lancement pour le groupe Auto Scaling. Pour permettre aux instances de transmettre les métriques et les journaux vers CloudWatch, fournissez le rôle AWS Identity and Access Management (IAM) correct dans le modèle de lancement. Dans les paramètres avancés, définissez les données utilisateur à l'aide d'un script similaire au suivant. Utilisez une version personnalisée de ce script pour installer et configurer l'agent CloudWatch en fonction de la configuration JSON de l'étape 1.
    Remarque : cet exemple de script de données utilisateur installe l'agent CloudWatch dans une instance Linux Amazon EC2. Le script configure l'agent pour surveiller l'utilisation de la mémoire et du disque, puis démarre l'agent. Vous devez utiliser le lien de téléchargement pour la région spécifique de votre groupe 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

  • Ajoutez des points de terminaison d'interface Virtual Private Cloud (VPC) pour la surveillance CloudWatch et des journaux CloudWatch Logs au VPC qui héberge les sous-réseaux privés. Pour trouver le point de terminaison correct, consultez Points de terminaison et quotas Amazon CloudWatch. Pour autoriser uniquement les actions CloudWatch requises dans ces points de terminaison VPC, mettez à jour les stratégies de point de terminaison avec des stratégies personnalisées.

    Exemple de stratégie pour le point de terminaison VPC de surveillance CloudWatch :

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

    Exemple de stratégie pour le point de terminaison VPC CloudWatch Logs :

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

    Pour plus de détails, reportez-vous à la section « Considérations relatives à la création d'un point de terminaison d'interface VPC ».

  • Ajoutez un point de terminaison de passerelle Virtual Private Cloud (VPC) pour Amazon S3 au VPC qui héberge les sous-réseaux privés. Ce point de terminaison permet au script de données utilisateur des instances se trouvant dans des sous-réseaux privés d'accéder au package d'agent CloudWatch et de le télécharger à partir d'Amazon S3.
  • Créez un groupe Auto Scaling (avec les sous-réseaux privés activés) à l'aide du modèle de lancement que vous avez créé à l'étape 3. L'agent CloudWatch s'exécute dans les instances que vous lancez dans ce groupe Auto Scaling. L'agent envoie également des métriques et des journaux via les points de terminaison d'interface VPC que vous avez créés à l'étape 4.
  • Considérations relatives à la création d'un point de terminaison d'interface VPC

    • Assurez-vous d'utiliser le point de terminaison correspondant à la région AWS de votre groupe Auto Scaling. Par exemple, si le groupe Auto Scaling se trouve dans la région Londres, le point de terminaison des métriques est monitoring.eu-west-2.amazonaws.com. Le point de terminaison des journaux dans ce scénario est logs.eu-west-2.amazonaws.com.
    • Vérifiez que vous avez activé l'option Enable Private DNS name (Activer le nom DNS privé). Vous pouvez activer cette option uniquement si les attributs Enable DNS hostnames (Activer les noms d'hôte DNS) et Enable DNS Support (Activer la prise en charge DNS) sont définis sur true pour le VPC. Si cette option est désactivée, le point de terminaison d'interface VPC n'est pas mappé au point de terminaison du service. Par conséquent, les instances ne peuvent pas atteindre le point de terminaison du service public. L'activation de cette option mappe le point de terminaison de service au point de terminaison d'interface d'un VPC et rend la communication avec le point de terminaison de service privée. Par défaut, l'agent CloudWatch se connecte à ce point de terminaison. Vous pouvez utiliser le paramètre endpoint_override dans le fichier de configuration de l'agent pour remplacer le point de terminaison par défaut, si nécessaire.
    • Vérifiez que les règles du groupe de sécurité autorisent la communication entre l'interface réseau du point de terminaison et les ressources de votre VPC qui communiquent avec le service. Les appels d'API pour transmettre les journaux et les métriques sont des demandes GET/POST basées sur HTTPS. Le groupe de sécurité de l'interface réseau du point de terminaison nécessite des règles entrantes pour le protocole HTTPS à partir des adresses IP source. Les adresses IP source sont les adresses IP des instances EC2 transmettant les métriques et les journaux, ou le CIDR VPC.
    • Lorsque des instances font partie d'un groupe Auto Scaling, spécifiez l'une des dimensions en tant que nom du groupe Auto Scaling dans le fichier de configuration de l'agent. Pour trouver le nom du groupe Auto Scaling, l'agent obtient les balises associées à l'instance du point de terminaison Amazon EC2. Vous devez ajouter le point de terminaison d'interface VPC pour le service Amazon EC2. L'agent obtient les valeurs ImageId, InstanceId et InstanceType des métadonnées de l'instance Amazon EC2.
    • </ul

    Cet article vous a-t-il été utile ?


    Besoin d'aide pour une question technique ou de facturation ?