Skip to main content
🔐 Não envie Informações Pessoais Identificáveis (PII) para a AppSignal. Filtre PII (por exemplo, nomes, e-mails) dos logs e use um ID, hash ou identificador pseudonimizado no lugar.

Para entidades cobertas pela HIPAA, mais informações sobre como assinar um Business Associate Agreement (BAA) podem ser encontradas em nossa documentação de Business Add-Ons.
Conclua os seguintes passos para enviar logs do CloudWatch para o AppSignal por meio do Amazon Data Firehose (anteriormente Kinesis Data Firehose):
  1. Crie uma fonte de log
  2. Configure um bucket S3 para entregas falhadas
  3. Configure uma função IAM para o Data Firehose
  4. Crie um delivery stream do Firehose
  5. Configure uma função IAM para o CloudWatch
  6. Crie uma assinatura de log do CloudWatch
Antes de começar, tenha as seguintes informações em mãos:
  • A chave de API da sua fonte de log. Se você ainda não tem uma fonte de log, crie uma nova fonte de log primeiro.
  • ID da conta AWS
  • Região AWS
  • Nome do bucket S3 para armazenamento de entregas falhadas
  • Nome do stream do Data Firehose
  • Nome da função IAM para o bucket S3
  • Nome da função IAM para a assinatura do CloudWatch

Crie uma fonte de log

Crie uma fonte de log antes de prosseguir. Veja Configuração de logging para instruções.

Configure um bucket S3 para entregas falhadas

O Amazon Data Firehose requer um bucket S3 para armazenar registros que falham ao serem entregues. Crie um bucket S3 pelo AWS Console ou CLI antes de prosseguir, você não pode criar um delivery stream do Firehose sem um.

Configure uma função IAM para o Data Firehose

Crie uma função IAM que permita ao Data Firehose gravar no bucket S3 e, opcionalmente, no CloudWatch Logs para registro de erros de entrega. Use a seguinte política de confiança:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "firehose.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Atribua a seguinte política de permissões à função como uma política inline.
Veja Adicionando permissões de identidade IAM para instruções sobre como criar políticas inline para funções IAM.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:AbortMultipartUpload",
        "s3:GetBucketLocation",
        "s3:GetObject",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads",
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::<FIREHOSE_S3_BUCKET>",
        "arn:aws:s3:::<FIREHOSE_S3_BUCKET>/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": ["logs:PutLogEvents"],
      "Resource": [
        "arn:aws:logs:<AWS_REGION>:<AWS_ACCOUNT_ID>:log-group:<FIREHOSE_LOG_GROUP>:*"
      ]
    }
  ]
}
Substitua os placeholders pelos seus próprios valores:
  • <AWS_ACCOUNT_ID> — o ID da sua conta AWS.
  • <AWS_REGION> — a região na qual seu stream Firehose será executado.
  • <FIREHOSE_S3_BUCKET> — o bucket S3 que você criou no passo anterior.
  • <FIREHOSE_LOG_GROUP> — o log group que o Firehose usa para seus próprios logs de erro de entrega (separado do log group que você quer transmitir para o AppSignal). A AWS usa a convenção /aws/kinesisfirehose/<FIREHOSE_STREAM_NAME>, então decida o nome do seu stream Firehose agora — você o reutilizará no próximo passo. Se você não planeja habilitar o registro de erros no stream Firehose, pode omitir totalmente a declaração logs:PutLogEvents.
Consulte Controlling access with Amazon Data Firehose para mais informações sobre as permissões que o Data Firehose requer.

Crie um delivery stream do Firehose

  1. Abra o console do Amazon Data Firehose e selecione Create Firehose stream.
  2. Selecione Direct PUT como a origem.
  3. Selecione HTTP Endpoint como o destino.
  4. Em “Transform records”, deixe a transformação de dados desativada.
  5. Digite a seguinte URL como o HTTP endpoint URL:
https://appsignal-endpoint.net/logs/aws-kinesis
  1. Digite a chave de API da fonte de log do AppSignal obtida ao criar uma fonte de log como a Access key. Esta é uma chave AppSignal, não uma chave de acesso AWS.
  2. Em “Content encoding”, ative GZIP.
  3. Em “Backup settings”, selecione o bucket S3 que você criou no passo anterior.
  4. Em “Advanced settings > Service access”, selecione Choose existing IAM role e escolha a função IAM que você criou no passo anterior.
  5. (Opcional) Em “Advanced settings > Amazon CloudWatch error logging”, habilite o registro de erros para usar a permissão logs:PutLogEvents que você concedeu no passo anterior.
  6. Use o mesmo nome de stream Firehose que você referenciou ao configurar a função IAM, depois selecione Create Firehose stream.
Para verificar a conexão, você pode usar o botão Test with demo data no console do Firehose. As cargas JSON de stock-ticker que ele envia aparecem no AppSignal em Logging como linhas de log individuais — uma verificação ponta-a-ponta útil antes de conectar log groups reais. Você também pode observar DeliveryToHttpEndpoint.Success subir na aba Monitoring do stream Firehose.

Configure uma função IAM para o CloudWatch

Crie uma função IAM que permita ao CloudWatch enviar logs para o delivery stream do Firehose. Use a seguinte política de confiança:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": { "Service": "logs.<AWS_REGION>.amazonaws.com" },
      "Action": "sts:AssumeRole"
    }
  ]
}
Atribua a seguinte política de permissões à função como uma política inline.
Veja Adicionando permissões de identidade IAM para instruções sobre como criar políticas inline para funções IAM.
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["firehose:*"],
      "Resource": [
        "arn:aws:firehose:<AWS_REGION>:<AWS_ACCOUNT_ID>:deliverystream/<FIREHOSE_DELIVERY_STREAM>"
      ]
    }
  ]
}
Substitua <AWS_REGION>, <AWS_ACCOUNT_ID> e <FIREHOSE_DELIVERY_STREAM> pelos seus próprios valores.

Crie uma assinatura de log do CloudWatch

  1. No console do CloudWatch, navegue até o log group cujos logs você quer transmitir.
  2. Abra a aba Subscription filters.
  3. Selecione Create Amazon Data Firehose subscription filter.
  4. Escolha o delivery stream do Firehose do passo 4 e a função IAM do passo 5.
  5. Digite um Subscription filter name e selecione Start streaming.
Após salvar a assinatura, os logs aparecem no AppSignal sob a fonte de log que você configurou acima. Se você ver um erro ao salvar a assinatura, verifique se a função IAM no passo 5 usa a região, ID da conta e nome do delivery stream corretos. Se os logs não aparecerem no AppSignal:
  • Abra a aba Monitoring do seu stream Firehose e verifique DeliveryToHttpEndpoint.Success. O valor deve permanecer próximo a 1; uma queda ou zero indica que o AppSignal está rejeitando registros.
  • Verifique o bucket S3 de falhas do passo 2. Registros falhados acabam ali, e cada objeto contém o motivo da rejeição.
  • Se os registros estiverem falhando com um erro de autorização, verifique se a Access key no stream Firehose corresponde à chave de API da sua fonte de log AppSignal.
Se ainda estiver com problemas, entre em contato conosco para obter suporte.