Ir para o conteúdo

Como configuro instâncias em um grupo do EC2 Auto Scaling que não tem acesso à Internet para enviar métricas e logs para o CloudWatch?

4 minuto de leitura
0

Eu tenho uma instância do Amazon Elastic Compute Cloud (Amazon EC2) em um grupo do Auto Scaling do Amazon EC2 que não tem acesso à Internet. Quero que a instância do Amazon EC2 envie logs e métricas para o Amazon CloudWatch.

Resolução

Para configurar instâncias do EC2 em um grupo do EC2 Auto Scaling para enviar métricas e logs ao CloudWatch, execute as seguintes ações.

Instalar o agente do CloudWatch

Instale o atendente do CloudWatch em uma instância que tenha conectividade com a Internet. Ou use uma instância que já envia logs e métricas para o CloudWatch com o atendente do CloudWatch.

Observação: inclua o nome do grupo do Auto Scaling como uma dimensão na configuração do seu atendente do CloudWatch. O atendente recupera esse nome das tags da instância e de outros metadados, como ImageId, InstanceId e InstanceType.

Em seguida, verifique se o atendente do CloudWatch envia métricas e logs para o CloudWatch.

Criar um modelo de inicialização para o grupo do EC2 Auto Scaling

Crie um modelo de inicialização para o grupo do EC2 Auto Scaling.

Escolha Detalhes avançados. Em seguida, escolha Perfil de instância do IAM e Dados do usuário. Em Dados do usuário, insira um script para instalar e configurar o atendente do CloudWatch com base no JSON que você configurou. Em Perfil de instância do IAM, selecione o perfil do AWS Identity and Access Management (AWS IAM) que permite que instâncias do EC2 enviem métricas e logs para o CloudWatch. Para obter mais informações sobre essas configurações avançadas, consulte Configurações avançadas.

Exemplo de script de dados do usuário em uma instância:

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

Observação: substitua a REGION pela sua região da AWS. Para evitar caracteres especiais dentro do arquivo config.json, use barra invertida (\). O script configura o atendente do CloudWatch para monitorar a utilização da memória e do disco e, em seguida, inicia o atendente. Certifique-se de usar o link de download para a região do seu grupo do EC2 Auto Scaling.

Criar endpoints de VPC para as métricas e logs

Crie endpoints de interface de nuvem privada virtual (VPC) para métricas do CloudWatch e Amazon CloudWatch Logs à VPC que hospeda as sub-redes privadas. Em seguida, atualize suas políticas de endpoint com políticas personalizadas para permitir as ações necessárias do CloudWatch. Para obter mais informações sobre endpoints de serviço, consulte Endpoints e cotas do Amazon CloudWatch.

Observação: certifique-se de usar o endpoint que corresponde à região do seu grupo do EC2 Auto Scaling. Por exemplo, se seu grupo do EC2 Auto Scaling estiver na região eu-west-2, use monitoring.eu-west-2.amazonaws.com para métricas e logs.eu-west-2.amazonaws.com para logs.

Exemplo de política de endpoint da VPC do CloudWatch:

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

Exemplo de política de endpoint da VPC do CloudWatch Logs:

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

Em seguida, crie um endpoint de gateway de VPC para o Amazon Simple Storage Service (Amazon S3) na VPC que hospeda suas sub-redes privadas. Esse endpoint permite que instâncias nas sub-redes privadas baixem o pacote do atendente do CloudWatch.

Criar um grupo do EC2 Auto Scaling

Crie um grupo do EC2 Auto Scaling com sub-redes privadas ativadas a partir do modelo de inicialização que você criou.