- Si aún no lo has hecho, configura la función Lambda del Datadog Forwarder.
- Utiliza la CLI AWS para conceder a CloudWatch Logs el permiso para ejecutar tu función.
- Sustituye
<REGION>
por la región que contiene tu función Lambda del Datadog Forwarder. - Sustituye
<ACCOUNT_ID>
por tu ID de cuenta de 12 dígitos de AWS (sin guiones).
aws lambda add-permission \
--region "<REGION>" \
--function-name "forwarder-function" \
--statement-id "forwarder-function" \
--principal "logs.amazonaws.com" \
--action "lambda:InvokeFunction" \
--source-arn "arn:aws:logs:<REGION>:<ACCOUNT_ID>:log-group:*" \
--source-account "<ACCOUNT_ID>"
- Crea una política de filtrado de suscripciones a nivel de la cuenta. En el ejemplo que se muestra a continuación, se transmiten todos los eventos de logs que contienen la cadena
ERROR
, excepto aquellos de los grupos de logs denominados LogGroupToExclude1
y LogGroupToExclude2
.- Sustituye
FORWARDER_ARN
por el ARN de la función Lambda del Datadog Forwarder.
aws logs put-account-policy \
--policy-name "ExamplePolicyLambda" \
--policy-type "SUBSCRIPTION_FILTER_POLICY" \
--policy-document '{"DestinationArn":"<FORWARDER_ARN>", "FilterPattern": "", "Distribution": "Random"}' \
--scope "ALL"
Nota: Para excluir ciertos grupos de logs del reenvío de logs, utiliza la opción --selection-criteria
tal y como se indica en la referencia del comando.
Crear un bucket de S3 y un rol para Amazon Data Firehose
Los siguientes pasos te guiarán en la creación de un bucket y un rol IAM. Esta función concede a Amazon Data Firehose permiso para colocar datos en tu bucket de Amazon S3 en caso de fallos de entrega.
- Utiliza la CLI AWS para crear un bucket de S3. También puedes utilizar un bucket existente.
- Sustituye
<BUCKET_NAME>
por el nombre de tu bucket de S3. - Sustituye
<REGION>
por la región de tu bucket de S3.
aws s3api create-bucket \
--bucket MY-BUCKET \
--create-bucket-configuration LocationConstraint=<REGION>
- Crea un archivo
TrustPolicyForFirehose.json
con la siguiente sentencia:
{
"Statement": {
"Effect": "Allow",
"Principal": { "Service": "firehose.amazonaws.com" },
"Action": "sts:AssumeRole"
}
}
- Crea un rol IAM, especificando el archivo de la política de confianza:
Nota: El valor Role.Arn devuelto se utiliza en un paso posterior.
aws iam create-role \
--role-name FirehosetoS3Role \
--assume-role-policy-document file://./TrustPolicyForFirehose.json
- Crea un archivo
PermissionsForFirehose.json
con la siguiente sentencia:- Sustituye
<BUCKET_NAME>
por el nombre de tu bucket de S3.
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:PutObject" ],
"Resource": [
"arn:aws:s3:::<BUCKET_NAME>",
"arn:aws:s3:::<BUCKET_NAME>/*" ]
}
]
}
- Asocia la política de permisos al rol:
aws iam put-role-policy \
--role-name FirehosetoS3Role \
--policy-name Permissions-Policy-For-Firehose \
--policy-document file://./PermissionsForFirehose.json
Crear el flujo (stream) de entrega de Amazon Data Firehose
Los siguientes pasos te guiarán en la creación y configuración de un flujo de entrega de Amazon Data Firehose.
- Ve a Amazon Data Firehose en la consola de AWS.
- Haz clic en Create Firehose stream (Crear flujo de Firehose).
- En el campo Fuente, selecciona la fuente de tus logs:
- Selecciona
Amazon Kinesis Data Streams
si tus logs provienen de un flujo de datos de Kinesis. - Selecciona
Direct PUT
si tus logs provienen directamente de un grupo de CloudWatch Logs.
- En el campo Destino, selecciona
Datadog
. - Si tu Fuente es
Amazon Kinesis Data Streams
, selecciona tu flujo de datos de Kinesis en Parámetros de la fuente. - Si lo prefieres, puedes darle un nombre descriptivo al flujo de Firehose.
- En la sección Configuración del destino, elige la URL del endpoint HTTP de los logs de Datadog correspondiente a tu sitio Datadog.
- Para la Autenticación, se necesita una clave de API Datadog válida. Puedes:
- Seleccionar Utilizar clave de API y pegar el valor de la clave en el campo Clave de API.
- Selecciona Utilizar AWS Secrets Manager y elige un secreto que contenga el valor válido de tu clave de API Datadog en el desplegable Nombre del secreto.
- Para la Codificación del contenido, selecciona
GZIP
. - También puedes configurar la Duración del reintento, los parámetros de buffer o añadir Parámetros (que se adjuntan como etiquetas (tags) a tus logs).
Nota: Datadog recomienda configurar el Tamaño de buffer en 2
MiB, si los logs son mensajes de una sola línea. - En la sección Parámetros de la copia de seguridad, selecciona el bucket de S3 para recibir cualquier evento fallido que supere la duración del reintento.
Nota: Para asegurarte de que cualquier log que no pueda ser entregado por el flujo de entrega se envíe eventualmente a Datadog, configura la función Lambda del Datadog Forwarder para reenviar logs desde este bucket de S3.
- Haz clic en Create Firehose stream (Crear flujo de Firehose).
Crear rol para CloudWatch Logs
Los siguientes pasos te guiarán en la creación de un rol IAM para CloudWatch Logs. Este rol otorga a CloudWatch Logs permiso para colocar datos en tu flujo de entrega de Firehose.
- Crea un archivo
./TrustPolicyForCWL.json
con la siguiente sentencia:- Sustituye
<ACCOUNT_ID>
por tu ID de cuenta de 12 dígitos de AWS (sin guiones). - Sustituye
<REGION>
por la región de tu CloudWatch Logs.
{
"Statement": {
"Effect": "Allow",
"Principal": { "Service": "logs.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringLike": {
"aws:SourceArn": "arn:aws:logs:<REGION>:<ACCOUNT_ID>:*"
}
}
}
}
- Crea un rol IAM, especificando el archivo de la política de confianza:
aws iam create-role \
--role-name CWLtoKinesisFirehoseRole \
--assume-role-policy-document file://./TrustPolicyForCWL.json
Nota: El valor Role.Arn devuelto se utiliza en un paso posterior.
- Crea un archivo
./PermissionsForCWL.json
con la siguiente sentencia:- Sustituye
<REGION>
por la región que contiene tu función Lambda del Datadog Forwarder. - Sustituye
<ACCOUNT_ID>
por tu ID de cuenta de 12 dígitos de AWS (sin guiones). - Sustituye
<DELIVERY_STREAM_NAME>
por el nombre de tu flujo de entrega.
{
"Statement":[
{
"Effect":"Allow",
"Action":["firehose:PutRecord"],
"Resource":[
"arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/<DELIVERY_STREAM_NAME>"]
}
]
}
- Asocia la política de permisos al rol:
aws iam put-role-policy \
--role-name CWLtoKinesisFirehoseRole \
--policy-name Permissions-Policy-For-CWL \
--policy-document file://./PermissionsForCWL.json
Crear la política de filtrado de suscripciones a nivel de una cuenta de CloudWatch Logs
Antes de completar este paso, el flujo de entrega de Amazon Data Firehose debe estar en el estado Active
.
- Crea la política de filtrado de suscripciones a nivel de una cuenta de CloudWatch Logs. La política inicia inmediatamente el flujo de datos de logs en tiempo real, desde el grupo de logs elegido a tu flujo de entrega de Amazon Data Firehose:
- Sustituye
<POLICY_NAME>
por un nombre para la política de filtrado de suscripciones. - Sustituye
<CLOUDWATCH_LOGS_ROLE>
por el ARN del rol de CloudWatch Logs. - Sustituye
<DELIVERY_STREAM_ARN>
por el ARN del flujo de entrega de Amazon Data Firehose.
aws logs put-account-policy \
--policy-name "<POLICY_NAME>" \
--policy-type "SUBSCRIPTION_FILTER_POLICY" \
--policy-document '{"RoleArn":"<CLOUDWATCH_LOGS_ROLE>", "DestinationArn":"<DELIVERY_STREAM_ARN>", "FilterPattern": "", "Distribution": "Random"}' \
--scope "ALL"
Nota: Para excluir ciertos grupos de logs del reenvío de logs, utiliza la opción --selection-criteria
tal y como se indica en la referencia del comando.