View a markdown version of this page

Configurando a ingestão de syslog - CloudWatch Registros da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurando a ingestão de syslog

Esta seção mostra as etapas para configurar a ingestão de syslog no Logs. CloudWatch Você criará um VPC endpoint para o serviço syslog, um grupo de logs para receber as mensagens, uma política de recursos para autorizar o serviço syslog e uma configuração de syslog que roteará o tráfego do seu VPC endpoint para seu grupo de logs.

Você pode executar todas essas etapas usando o AWS Management Console AWS CLI, o ou os AWS SDKs. As instruções a seguir fornecem console e AWS CLI exemplos.

Pré-requisitos

A identidade do IAM (usuário ou função) que você usa para configurar a ingestão de syslog deve ter permissões para criar endpoints de VPC, grupos de registros, políticas de recursos e configurações de syslog. O exemplo de política a seguir mostra as permissões mínimas necessárias:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:PutResourcePolicy", "logs:DeleteResourcePolicy", "logs:PutSyslogConfiguration", "logs:ListSyslogConfigurations", "logs:DeleteSyslogConfiguration" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateVpc", "ec2:ModifyVpcAttribute", "ec2:CreateSubnet", "ec2:CreateSecurityGroup", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateVpcEndpoint", "ec2:ModifyVpcEndpoint", "ec2:DescribeVpcEndpoints" ], "Resource": "*" } ] }
nota

Se você já tem uma VPC, uma sub-rede e um grupo de segurança, você só precisa das ec2:DescribeVpcEndpoints permissõesec2:CreateVpcEndpoint,ec2:ModifyVpcEndpoint, e para as ações do EC2.

Etapa 1: criar ou identificar uma VPC

Você precisa de uma VPC que possa ser acessada pela sua rede local (via VPN ou Direct Connect) onde residem seus dispositivos geradores de syslog. Se você já tem uma VPC conectada ao seu data center, pule esta etapa e use sua VPC e IDs de sub-rede existentes.

Console
Para criar uma VPC (console)
  1. Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.

  2. No painel de navegação, escolha Suas VPCs e, em seguida, escolha Criar VPC.

  3. Em Recursos a serem criados, escolha Somente VPC.

  4. Para o bloco CIDR IPv4, digite 10.0.0.0/16 (ou um CIDR que não entre em conflito com sua rede local).

  5. Escolha Criar VPC.

  6. Selecione a VPC recém-criada, escolha Ações, Editar configurações de VPC. Ative a resolução DNS e os nomes de host DNS e escolha Salvar.

  7. Crie uma sub-rede para o VPC endpoint:

    1. No painel de navegação, escolha Sub-redes e, em seguida, escolha Criar sub-rede.

    2. Para VPC ID, selecione a VPC que você criou.

    3. Em Zona de disponibilidade, escolha uma Zona de disponibilidade.

    4. Para o bloco CIDR de sub-rede IPv4, digite. 10.0.1.0/24

    5. Escolha Criar sub-rede.

AWS CLI
REGION=us-east-1 # Create VPC VPC_ID=$(aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --region $REGION \ --query 'Vpc.VpcId' --output text) aws ec2 modify-vpc-attribute --vpc-id $VPC_ID --enable-dns-support --region $REGION aws ec2 modify-vpc-attribute --vpc-id $VPC_ID --enable-dns-hostnames --region $REGION # Create a subnet for the VPC endpoint SUBNET_ID=$(aws ec2 create-subnet \ --vpc-id $VPC_ID \ --cidr-block 10.0.1.0/24 \ --availability-zone ${REGION}a \ --region $REGION \ --query 'Subnet.SubnetId' --output text) echo "VPC: $VPC_ID, Subnet: $SUBNET_ID"
nota

O VPC endpoint cria uma interface de rede elástica (ENI) com um IP privado em sua sub-rede. Seus dispositivos locais alcançam esse IP por meio de sua conexão VPN ou Direct Connect. Certifique-se de que seu roteamento de rede permita o tráfego de seus dispositivos para o CIDR da sub-rede.

Etapa 2: criar um grupo de segurança

Crie um grupo de segurança para o VPC endpoint que permita o tráfego syslog de entrada da sua VPC. Isso controla quais recursos podem enviar syslog para o endpoint.

Console
Para criar um grupo de segurança (console)
  1. Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.

  2. No painel de navegação, escolha Grupos de segurança e, em seguida, escolha Criar grupo de segurança.

  3. Em Nome do grupo de segurança, insira syslog-vpce-sg.

  4. Em Descrição, insira Allow syslog traffic to VPC endpoint.

  5. Para VPC, selecione a VPC que você criou ou identificou na Etapa 1.

  6. Na seção Regras de entrada, escolha Adicionar regra e adicione as seguintes regras:

    • Regra 1: Tipo = TCP personalizado, intervalo de portas =6514, Fonte = 10.0.0.0/16 (seu CIDR de VPC)

    • Regra 2: Tipo = TCP personalizado, Intervalo de portas =1514, Fonte = 10.0.0.0/16

    • Regra 3: Tipo = UDP personalizado, Intervalo de portas =514, Fonte = 10.0.0.0/16

  7. Escolha Criar grupo de segurança.

AWS CLI
VPCE_SG_ID=$(aws ec2 create-security-group \ --group-name syslog-vpce-sg \ --description "Allow syslog traffic to VPC endpoint" \ --vpc-id $VPC_ID \ --region $REGION \ --query 'GroupId' --output text) # Allow TCP+TLS (port 6514), TCP plaintext (port 1514), and UDP (port 514) aws ec2 authorize-security-group-ingress --group-id $VPCE_SG_ID \ --protocol tcp --port 6514 --cidr 10.0.0.0/16 --region $REGION aws ec2 authorize-security-group-ingress --group-id $VPCE_SG_ID \ --protocol tcp --port 1514 --cidr 10.0.0.0/16 --region $REGION aws ec2 authorize-security-group-ingress --group-id $VPCE_SG_ID \ --protocol udp --port 514 --cidr 10.0.0.0/16 --region $REGION
dica

Se você planeja usar apenas um protocolo (por exemplo, TCP+TLS na porta 6514), você só precisa abrir essa porta no grupo de segurança.

Etapa 3: Criar o VPC endpoint.

Crie uma interface VPC endpoint apontando para o serviço syslog. AWS PrivateLink Isso dá à sua VPC um ponto de entrada privado para o serviço syslog do CloudWatch Logs.

nota

Você pode especificar várias IDs de sub-rede em diferentes zonas de disponibilidade ao criar o endpoint. O endpoint cria uma ENI em cada sub-rede, fornecendo maior disponibilidade sem precisar de VPC endpoints separados por zona de disponibilidade. Um único VPC endpoint com sub-redes em várias zonas de disponibilidade é suficiente.

Console
Para criar o VPC endpoint (console)
  1. Abra o console da Amazon VPC em https://console.aws.amazon.com/vpc/.

  2. No painel de navegação, escolha Endpoints e, em seguida, escolha Create endpoint.

  3. Em Etiqueta de nome, insira um nome para o endpoint (por exemplo,syslog-vpce).

  4. Em Categoria do serviço, escolha Serviços do AWS .

  5. No campo Pesquisa de serviços, insira syslog-logs e selecione o serviçocom.amazonaws.Region.syslog-logs.

  6. Para VPC, selecione a VPC que você criou ou identificou na Etapa 1.

  7. Na seção Sub-redes, selecione uma ou mais zonas de disponibilidade e escolha as sub-redes nas quais você deseja criar as interfaces de rede do endpoint.

  8. Para Grupos de segurança, selecione o grupo de segurança que você criou na Etapa 2 (syslog-vpce-sg).

  9. (Opcional) Se você quiser restringir o tráfego permitido pelo endpoint, configure uma política de VPC endpoint. Para obter mais informações, consulte Políticas de VPC endpoint para syslog.

  10. Escolha Criar endpoint.

  11. Depois que o estado do endpoint mudar para Disponível, selecione o endpoint e anote o valor dos nomes DNS. Este é o endereço para o qual seus dispositivos syslog enviarão.

AWS CLI
VPCE_ID=$(aws ec2 create-vpc-endpoint \ --vpc-id $VPC_ID \ --service-name com.amazonaws.${REGION}.syslog-logs \ --vpc-endpoint-type Interface \ --subnet-ids $SUBNET_ID \ --security-group-ids $VPCE_SG_ID \ --region $REGION \ --query 'VpcEndpoint.VpcEndpointId' --output text) echo "VPC Endpoint: $VPCE_ID"

Aguarde até que o endpoint fique disponível (aproximadamente 60 segundos) e, em seguida, recupere o nome do DNS:

VPCE_DNS=$(aws ec2 describe-vpc-endpoints --vpc-endpoint-ids $VPCE_ID \ --region $REGION --query 'VpcEndpoints[0].DnsEntries[0].DnsName' --output text) echo "Endpoint DNS: $VPCE_DNS"

Salve o VPCE_DNS valor — você configurará seus dispositivos syslog para enviar para esse endereço.

Etapa 4: criar um grupo de registros

Crie o grupo de CloudWatch registros de registros em que suas mensagens de syslog serão entregues. Você pode usar qualquer nome de grupo de registros. Recomendamos usar um /syslog/ prefixo para maior clareza organizacional.

Console
Para criar um grupo de registros (console)
  1. Abra o console CloudWatch de registros em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação, em Gerenciamento de registros, escolha Grupos de registros.

  3. Escolha a opção Criar grupo de logs.

  4. Em Nome do grupo de registros, insira/syslog/my-devices.

  5. (Opcional) Defina as configurações de retenção e criptografia conforme necessário.

  6. Escolha Criar.

AWS CLI
aws logs create-log-group \ --log-group-name /syslog/my-devices \ --region $REGION

Você não precisa criar um fluxo de log. O serviço syslog cria automaticamente um fluxo de log chamado VPCE_ID_Syslog_Region (por exemplo,vpce-0abc123def456_Syslog_us-east-1) quando a primeira mensagem é entregue.

Etapa 5: adicionar uma política de recursos

O serviço syslog do CloudWatch Logs grava no seu grupo de registros usando o syslog.logs.amazonaws.com Service Principal. Você deve conceder permissão por meio de uma política de recursos em seu grupo de registros. A aws:SourceArn condição garante que somente o tráfego do seu VPC endpoint específico possa gravar nesse grupo de registros.

ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text) aws logs put-resource-policy \ --policy-name syslog-ingestion \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "syslog.logs.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "arn:aws:logs:'$REGION':'$ACCOUNT_ID':log-group:/syslog/my-devices:*", "Condition": { "StringEquals": { "aws:SourceAccount": "'$ACCOUNT_ID'" }, "ArnEquals": { "aws:SourceArn": "arn:aws:ec2:'$REGION':'$ACCOUNT_ID':vpc-endpoint/'$VPCE_ID'" } } } ] }' \ --region $REGION

As condições na política de recursos fornecem as seguintes proteções:

  • aws:SourceAccount— Evita ataques confusos de deputados. Somente o tráfego da sua conta é aceito.

  • aws:SourceArn— Escopo o acesso a um VPC endpoint específico. Se você tiver vários VPC endpoints, adicione cada um como um ARN separado na condição.

Para permitir que vários VPC endpoints gravem no mesmo grupo de registros, use o operador de ArnLike condição com um caractere curinga:

"ArnLike": { "aws:SourceArn": "arn:aws:ec2:us-east-1:123456789012:vpc-endpoint/*" }

Etapa 6: Criar a configuração do syslog

Essa etapa informa ao serviço de syslog do CloudWatch Logs que o tráfego que chega do seu VPC endpoint deve ser roteado para seu grupo de registros. Sem essa configuração, o tráfego do seu endpoint é rejeitado.

Console
Para criar a configuração do syslog (console)
  1. Abra o console CloudWatch de registros em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação, em Gerenciamento de registros, escolha Grupos de registros.

  3. Escolha o grupo de registros que você criou na Etapa 4 (por exemplo,/syslog/my-devices).

  4. Nos detalhes do grupo de registros, localize a seção Ingestão de Syslog.

  5. Selecione Configurar.

  6. No menu suspenso VPC endpoint, selecione o VPC endpoint que você criou na Etapa 3.

  7. Escolha Criar.

AWS CLI
aws logs put-syslog-configuration \ --log-group-identifier /syslog/my-devices \ --vpc-endpoint-id $VPCE_ID \ --region $REGION

Verifique a configuração:

aws logs list-syslog-configurations \ --log-group-identifier /syslog/my-devices \ --region $REGION

Seu pipeline de ingestão de syslog agora está ativo. Todas as mensagens de syslog enviadas ao VPC endpoint serão entregues ao grupo de logs. /syslog/my-devices

Etapa 7: Verificar a entrega e a extração do campo

Envie uma mensagem de teste de qualquer host ou dispositivo EC2 que possa acessar o VPC endpoint e CloudWatch use o Log Analytics para verificar se a mensagem foi entregue e se os campos estruturados foram extraídos corretamente. As mensagens geralmente aparecem em 10 a 20 segundos.

Envie uma mensagem de teste (texto sem formatação TCP):

echo "<134>1 $(date -u +%Y-%m-%dT%H:%M:%SZ) myhost myapp 1234 - - Hello from syslog" | \ nc $VPCE_DNS 1514

Verifique a entrega e os campos extraídos:

Console
Para verificar a entrega usando o Log Analytics (console)
  1. Abra o console CloudWatch de registros em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação, em Registros, escolha Log Analytics.

  3. No seletor de grupos de registros, escolha seu grupo de registros (por exemplo,/syslog/my-devices).

  4. Insira a consulta a seguir e escolha Executar consulta:

    fields @timestamp, facility, severity, hostname, appName, procId, message | sort @timestamp desc | limit 10
  5. Verifique se sua mensagem de teste aparece e se os campos extraídos foram preenchidos corretamente. Para a mensagem de teste acima, você deve ver facility severity =local0, hostname = infomyhost, =myapp, appName = e procId =1234.

AWS CLI

Inicie uma consulta do Log Analytics para verificar a entrega e a extração do campo:

QUERY_ID=$(aws logs start-query \ --log-group-name /syslog/my-devices \ --start-time $(date -d '5 minutes ago' +%s 2>/dev/null || echo $(date -v-5M +%s)) \ --end-time $(date +%s) \ --query-string 'fields @timestamp, facility, severity, hostname, appName, procId, message | sort @timestamp desc | limit 10' \ --region $REGION \ --query 'queryId' --output text) # Wait a few seconds for the query to complete, then retrieve results aws logs get-query-results \ --query-id $QUERY_ID \ --region $REGION

Verifique se sua mensagem de teste aparece e se os campos extraídos foram preenchidos corretamente. Para a mensagem de teste acima, você deve ver facility severity =local0, hostname = infomyhost, =myapp, appName = e procId =1234.