Como faço para criar, configurar e solucionar problemas de um filtro de assinatura para o Kinesis usando o console do CloudWatch?

Última atualização: 12/04/2022

Quero criar um filtro de assinatura a fim de transmitir meu Amazon CloudWatch Logs para o Amazon Kinesis usando o console do CloudWatch. Como faço isso?

Descrição breve

É possível enviar praticamente em tempo real os logs do CloudWatch para destinos do Kinesis ou do Amazon Kinesis Data Firehose na mesma conta ou entre contas. Você pode fazer isso usando um filtro de assinatura. O console do CloudWatch Logs é compatível com a configuração de destino e instalação.

Para obter informações sobre como configurar um filtro de assinatura usando a sintaxe de padrão de filtro, consulte Sintaxe do padrão e do filtro.

Resolução

Configuração de assinatura para um fluxo de dados do Kinesis na mesma conta ou na conta atual

Observação: a região do grupo de logs do CloudWatch e a região de destino do Kinesis devem ser as mesmas.

Antes de criar sua assinatura:

Para criar uma política de função e uma função personalizada do IAM:

1.    Abra o console do IAM com o usuário que tem permissões de administrador.

2.    No painel de navegação, selecione Políticas.

3.    No painel de conteúdo, escolha Criar política.

4.    Copie e cole o seguinte documento de política JSON na guia JSON.

Permissão de função

{
  "Statement": [{
    "Effect": "Allow",
    "Action": "kinesis:PutRecord",
    "Resource": "arn:aws:kinesis:<REGION>:<ACCOUNT_ID>:stream/<STREAM_NAME>"
  }]
}

5.    Abra o console do IAM.

6.    No painel de navegação do console, escolha Funções e, em seguida, escolha Criar função.

7.    Escolha Política personalizada de confiança para o tipo de função.

8.    Na seção Política personalizada de confiança, insira ou cole a política personalizada de confiança para a função. Para mais informações, consulte Criação de políticas do IAM.

9.    Escolha Next (Avançar).

10.    Selecione a política personalizada do IAM criada na etapa anterior.

11.    Escolha Próximo, Criar uma função

Política de confiança

{
  "Statement": {
    "Effect": "Allow",
    "Principal": {
      "Service": "logs.region.amazonaws.com"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
      "StringLike": {
        "aws:SourceArn": "arn:aws:logs:<REGION>:<ACCOUNT_ID>:*"
      }
    }
  }
}

Após criar um fluxo do Kinesis e uma função do IAM, você pode criar um filtro de assinatura:

1.    Abra o console do CloudWatch.

2.    Selecione Grupo de logs.

3.    Selecione Ação, Filtros de assinatura.

4.    Para configurar o destino, escolha Criar filtro de assinatura do Kinesis.

5.    Selecione Conta atual.

6.    Selecione seu fluxo de dados do Kinesis na lista suspensa.

7.    Selecione a função do IAM que criou anteriormente.

8.    Confira o método de distribuição:

Por fluxo de log: verifica se os consumidores downstream são capazes de agregar eventos de log por fluxo de log, mas pode ser menos eficiente. Esse método também pode resultar em custos mais altos de transmissão porque requer mais fragmentos.

Aleatório: distribui a carga entre fragmentos de fluxo do Kinesis, mas os consumidores downstream não podem agregar eventos de log por fluxo de log.

9.    Configure o formato e os filtros de log:

Selecione o formato de log. O formato pode ser do Amazon VPC Flow Logs, AWS CloudTrail ou AWS Lambda para logs publicados pela Amazon VPC, pelo CloudTrail ou Lambda. Como alternativa, você pode escolher JSON, Delimitado por espaço ou Outro, dependendo dos eventos de log recebidos.

Defina o padrão de filtro na seção Padrão de filtro de assinatura.

Insira o nome do filtro de assinatura.

10.    Verifique seu padrão com os dados de eventos de log existentes.

11.    Após a verificação, selecione Iniciar transmissão.

12.    (Opcional) Verifique o funcionamento do fluxo de dados com a validação do fluxo de eventos de log.

Configuração para um destino de fluxo de dados do Kinesis entre contas

Observação: se receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.

É possível entregar eventos do CloudWatch Logs a fluxos de dados do Kinesis em diferentes contas e regiões da AWS. Para fazer isso, configure o compartilhamento de dados de log entre contas com assinaturas enquanto especifica a região da AWS, conforme apresentado no exemplo a seguir.

Observação: neste exemplo, o CloudWatch Logs na região us-east-1 é entregue ao fluxo de dados do Kinesis de outro usuário da AWS em us-west-2. O ID de conta da AWS do destinatário dos dados de log é 222222222222, enquanto o ID de conta da AWS do remetente dos dados de log é 111111111111.

Criar um fluxo de dados de destino na conta de destinatário 222222222222

1.    Crie um fluxo de dados de destino no Kinesis na conta do destinatário de dados com uma função do IAM e uma política de confiança.

2.    Use o comando create-stream para criar o fluxo de dados. Não esqueça de especificar o parâmetro --region. Por exemplo, este comando cria o fluxo de dados YourStreamName em us-west-2:

aws kinesis create-stream --stream-name "YourStreamName" --shard-count 1 --region us-west-2

3.    Use o comando describe-stream para verificar a propriedade StreamDescription.StreamStatus. Não esqueça de especificar o parâmetro --region. Por exemplo, este comando verifica o fluxo YourStreamName em us-west-2:

aws kinesis describe-stream --stream-name "YourStreamName" --region us-west-2

4.    Use o comando put-destination para criar o destino do CloudWatch Logs. Defina o parâmetro --region de --role-arn com a mesma região dos logs do CloudWatch de origem. Por exemplo, é necessário executar o comando a seguir na conta de destinatário/destino 2222222222 que cria o destino de log na conta de destinatário 222222222222 em us-east-1:

aws logs put-destination \
  --destination-name "testDestination" \
  --target-arn "arn:aws:kinesis:us-west-2:222222222222:stream/YourStreamName" \
  --role-arn "arn:aws:iam::222222222222:role/YourIAMRoleName" --region us-east-1

Criar um filtro de assinatura na conta de origem 111111111111

Para criar o filtro de assinatura:

1.    Selecione o grupo de logs.

2.    Selecione Ação, Filtros de assinatura.

3.    Para selecionar o destino, escolha uma das seguintes opções:

Criar filtro de assinatura do Kinesis: cria um filtro de assinatura para um destino de fluxo de dados do Kinesis.

4.    Selecione Outra conta, pois o destino é entre contas.

5.    Para um destino entre contas do Kinesis ou do Kinesis Firehose, forneça o ARN de destino.

6.    Selecione o método de distribuição:

Por fluxo de log: verifica se os consumidores downstream são capazes de agregar eventos de log por fluxo de log, mas pode ser menos eficiente. Esse método também pode resultar em custos mais altos de transmissão porque requer mais fragmentos.

Aleatório: distribui a carga entre fragmentos de fluxo do Kinesis, mas os consumidores downstream não podem agregar eventos de log por fluxo de log.

7.    Configure o formato e os filtros de log:

Selecione o formato de log. O formato pode ser do Amazon VPC Flow Logs, AWS CloudTrail ou AWS Lambda para logs publicados pela Amazon VPC, pelo CloudTrail ou Lambda. Como alternativa, você pode escolher JSON, Delimitado por espaço ou Outro, dependendo dos eventos de log recebidos.

Defina o padrão de filtro na seção Padrão de filtro de assinatura.

Insira o nome do filtro de assinatura.

8.    Verifique seu padrão com os dados de eventos de log existentes.

9.    Após a verificação, selecione Iniciar transmissão.

10.    (Opcional) Verifique o funcionamento do fluxo de dados com a validação do fluxo de eventos de log.

Solução de problemas

  • Certifique-se de que seu fluxo do Kinesis esteja no estado Ativo e que você possa visualizá-lo no console do Kinesis. Como alternativa, é possível usar a chamada de API DescribeStream.
  • Verifique se o grupo de logs do CloudWatch e a região do fluxo de dados do Kinesis são as mesmas.
  • Verifique se há uma função do IAM que tenha permissões de confiança para logs.suaregião.amazonaws.com e conceda a permissão kinesis:putrecords.
  • Verifique se as regiões e os recursos na política do IAM estão corretos.
  • Certifique-se de que não selecionou o Kinesis Firehose ao configurar um filtro de assinatura para o fluxo de dados do Kinesis.
  • Após iniciar a transmissão, verifique se as métricas do filtro de assinatura confirmam que o padrão de filtro é válido e corresponde aos eventos de log recebidos. Para fazer isso, analise as seguintes métricas: ForwardedBytes: o volume de eventos de log em bytes compactados encaminhado para o destino da assinatura. ForwardedLogEvents: o número de eventos de log encaminhados para o destino da assinatura.
  • A fim de verificar se não há erros ao transmitir eventos de log para seu destino, confira as seguintes métricas: DeliveryErrors: o número de eventos de log para os quais o CloudWatch Logs recebeu um erro ao encaminhar dados para o destino da assinatura. DeliveryThrottling: o número de eventos de log que indicam que o CloudWatch Logs passou por controle de utilização ao encaminhar dados para o destino da assinatura.
  • Se tiver um fluxo dedicado do Kinesis, verifique as métricas do fluxo para confirmar a funcionalidade.
  • Para solucionar problemas de registro em log entre contas, consulte Solucionar problemas de configuração entre contas do CloudWatch.

Esse artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?