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

5 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 envie logs e métricas para o Amazon CloudWatch.

Resolução

1.    Instale o agente do CloudWatch na sua instância do Amazon EC2. Essa instância deve ter conectividade com a Internet. Ou você pode escolher uma instância do EC2 que já está enviando os logs e as métricas para o CloudWatch, usando o agente do CloudWatch.

2.    Verifique se o agente do CloudWatch está enviando métricas e logs da sua instância do EC2.

3.    Crie um modelo de inicialização para o grupo do Auto Scaling. Em seu modelo de inicialização, conclua as seguintes etapas nas configurações avançadas:
Para o perfil de instância do IAM, selecione o perfil correto do AWS Identity and Access Management (IAM) relevante que permite que as instâncias enviem as métricas e os logs para o CloudWatch.
Para dados do usuário, insira um script semelhante ao exemplo a seguir. Use uma versão personalizada desse script para instalar e configurar o agente do CloudWatch com base na configuração JSON da etapa 1**:
Observação: ** o seguinte script de dados do usuário instala o agente CloudWatch em uma instância Linux do EC2. O script configura o agente para monitorar a utilização da memória e do disco e, em seguida, inicia o agente. Você deve usar o link de download para a região específica da AWS do seu grupo do 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

4.    Adicione endpoints de interface de nuvem privada virtual (VPC) para monitoramento do CloudWatch e Amazon CloudWatch Logs à VPC que hospeda as sub-redes privadas. Para encontrar o endpoint correto, consulte Endpoints e cotas do Amazon CloudWatch. Para permitir somente as ações necessárias do CloudWatch nesses endpoints da VPC, atualize as políticas de endpoint com políticas personalizadas.

Veja o exemplo a seguir de uma política para o endpoint da VPC de monitoramento do CloudWatch:

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

Veja o exemplo a seguir de uma política para o endpoint da VPC do CloudWatch Logs:

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

Para obter mais detalhes, consulte a seção Considerações para criar um endpoint da VPC da interface.

5.    Adicione um endpoint de gateway de nuvem privada virtual (VPC) para o Amazon Simple Storage Service (Amazon S3) à VPC que hospeda as sub-redes privadas. Isso permite que o script de dados do usuário das instâncias nas sub-redes privadas acesse e baixe o pacote do agente CloudWatch do Amazon S3.

6.    Crie um grupo do Auto Scaling (com sub-redes privadas ativadas) usando o modelo de inicialização que você criou na etapa 3. O agente do CloudWatch é executado nas instâncias que você inicia nesse grupo do Auto Scaling. O agente também envia métricas e logs por meio dos endpoints da interface da VPC que você criou na etapa 4.

Considerações para criar um endpoint da VPC da interface

  • Certifique-se de usar o endpoint que corresponde à região do seu grupo do Auto Scaling. Por exemplo, se o grupo do Auto Scaling estiver na região de Londres, o endpoint das métricas será monitoring.eu-west-2.amazonaws.com. O endpoint para logs nesse cenário é logs.eu-west-2.amazonaws.com.
  • Confirme se você ativou a opção Ativar nome DNS privado. Você pode ativar essa opção somente se os atributos Habilitar nomes de host DNS e Habilitar suporte DNS estiverem definidos como verdadeiro para a VPC. Se essa opção estiver desativada, o endpoint da interface da VPC não será mapeado para o endpoint do serviço. Como resultado, as instâncias não conseguem alcançar o endpoint do serviço público. Ativar essa opção mapeia o endpoint de serviço para o endpoint da interface da VPC e torna a comunicação com o endpoint de serviço privada. Por padrão, o agente do CloudWatch se conecta a esse endpoint. Você pode usar o parâmetro endpoint_override no arquivo de configuração do agente para substituir o endpoint padrão, se necessário.
  • Confirme se as regras do grupo de segurança permitem a comunicação entre a interface de rede do endpoint e os recursos em sua VPC que se comunicam com o serviço. As chamadas de API para enviar os logs e as métricas são solicitações GET/POST baseadas em HTTPS. O grupo de segurança da interface de rede do endpoint exige regras de entrada para o protocolo HTTPS dos IPs de origem. Os endereços IP de origem são os endereços IP das instâncias do EC2 que enviam as métricas e os logs, ou o VPC CIDR.
  • Quando as instâncias fazem parte de um grupo do Auto Scaling, especifique uma das dimensões como o nome do grupo do Auto Scaling no arquivo de configuração do agente. Para encontrar o nome do grupo do Auto Scaling, o agente obtém as tags associadas à instância do endpoint do Amazon EC2. Você deve adicionar o endpoint da interface da VPC para o serviço Amazon EC2. O agente obtém os valores ImageId, InstanceId e InstanceType dos metadados da instância do EC2.

AWS OFICIAL
AWS OFICIALAtualizada há um ano