Présentation
Associez Amazon Web Services (AWS) pour :
- Visualiser les mises à jour automatiques de statut AWS dans votre Events Explorer
- Obtenir des métriques CloudWatch pour les hosts EC2 sans installer l’Agent
- Taguer vos hosts EC2 avec des informations propres à EC2
- Visualiser les événements de maintenance EC2 planifiés dans votre flux
- Recueillir des métriques et des événements CloudWatch depuis de nombreux autres produits AWS
- Visualiser les alarmes CloudWatch dans votre Events Explorer
Pour profiter au plus vite de l’intégration AWS, consultez le guide de prise en main d’AWS.
L’intégration Amazon Web Services de Datadog permet de recueillir les logs, les événements et toutes les métriques en provenance de CloudWatch pour plus de 90 services AWS.
Configuration
La délégation des rôles AWS n'est pas prise en charge par le site gouvernemental Datadog. En effet, il nécessite l'utilisation de
clés d'accès.
Choisissez l’une des méthodes suivantes pour intégrer vos comptes AWS dans Datadog et ainsi recueillir vos métriques, vos événements, vos traces et vos logs :
Configuration automatique
Méthode manuelle
AWS IAM permissions
AWS IAM permissions enable Datadog to collect metrics, tags, EventBridge events, and other data necessary to monitor your AWS environment.
To correctly set up the AWS Integration, you must attach the relevant IAM policies to the Datadog AWS Integration IAM Role in your AWS account.
AWS integration IAM policy
The set of permissions necessary to use all the integrations for individual AWS services.
The following permissions included in the policy document use wild cards such as List*
and Get*
. If you require strict policies, use the complete action names as listed and reference the Amazon API documentation for your respective services.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"apigateway:GET",
"autoscaling:Describe*",
"backup:List*",
"backup:ListRecoveryPointsByBackupVault",
"bcm-data-exports:GetExport",
"bcm-data-exports:ListExports",
"budgets:ViewBudget",
"cassandra:Select",
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions",
"cloudtrail:DescribeTrails",
"cloudtrail:GetTrailStatus",
"cloudtrail:LookupEvents",
"cloudwatch:Describe*",
"cloudwatch:Get*",
"cloudwatch:List*",
"codedeploy:BatchGet*",
"codedeploy:List*",
"cur:DescribeReportDefinitions",
"directconnect:Describe*",
"dynamodb:Describe*",
"dynamodb:List*",
"ec2:Describe*",
"ec2:GetSnapshotBlockPublicAccessState",
"ec2:GetTransitGatewayPrefixListReferences",
"ec2:SearchTransitGatewayRoutes",
"ecs:Describe*",
"ecs:List*",
"elasticache:Describe*",
"elasticache:List*",
"elasticfilesystem:DescribeAccessPoints",
"elasticfilesystem:DescribeFileSystems",
"elasticfilesystem:DescribeTags",
"elasticloadbalancing:Describe*",
"elasticmapreduce:Describe*",
"elasticmapreduce:List*",
"es:DescribeElasticsearchDomains",
"es:ListDomainNames",
"es:ListTags",
"events:CreateEventBus",
"fsx:DescribeFileSystems",
"fsx:ListTagsForResource",
"glacier:GetVaultNotifications",
"glue:ListRegistries",
"health:DescribeAffectedEntities",
"health:DescribeEventDetails",
"health:DescribeEvents",
"kinesis:Describe*",
"kinesis:List*",
"lambda:GetPolicy",
"lambda:List*",
"lightsail:GetInstancePortStates",
"logs:DeleteSubscriptionFilter",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:DescribeSubscriptionFilters",
"logs:FilterLogEvents",
"logs:PutSubscriptionFilter",
"logs:TestMetricFilter",
"oam:ListAttachedLinks",
"oam:ListSinks",
"organizations:Describe*",
"organizations:List*",
"rds:Describe*",
"rds:List*",
"redshift:DescribeClusters",
"redshift:DescribeLoggingStatus",
"route53:List*",
"s3:GetBucketLocation",
"s3:GetBucketLogging",
"s3:GetBucketNotification",
"s3:GetBucketTagging",
"s3:ListAccessGrants",
"s3:ListAllMyBuckets",
"s3:PutBucketNotification",
"savingsplans:DescribeSavingsPlanRates",
"savingsplans:DescribeSavingsPlans",
"ses:Get*",
"sns:GetSubscriptionAttributes",
"sns:List*",
"sns:Publish",
"sqs:ListQueues",
"states:DescribeStateMachine",
"states:ListStateMachines",
"support:DescribeTrustedAdvisor*",
"support:RefreshTrustedAdvisorCheck",
"tag:GetResources",
"tag:GetTagKeys",
"tag:GetTagValues",
"timestream:DescribeEndpoints",
"waf-regional:ListRuleGroups",
"waf-regional:ListRules",
"waf:ListRuleGroups",
"waf:ListRules",
"wafv2:GetIPSet",
"wafv2:GetLoggingConfiguration",
"wafv2:GetRegexPatternSet",
"wafv2:GetRuleGroup",
"wafv2:ListLoggingConfigurations",
"xray:BatchGetTraces",
"xray:GetTraceSummaries"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Collecte de logs
Il existe deux façons d’envoyer des logs de service AWS à Datadog :
- Destination Kinesis Firehose : utilisez la destination Datadog dans votre flux de diffusion Kinesis Firehose pour transmettre vos logs à Datadog. Il est conseillé de procéder de la même façon pour envoyer un volume très élevé de logs depuis CloudWatch.
- Fonction Lambda du Forwarder : déployez la fonction Lambda du Forwarder Datadog qui s’abonne aux compartiments S3 ou à vos groupes de logs CloudWatch. Transmettez ensuite vos logs à Datadog. Datadog vous conseille également d’utiliser cette méthode pour envoyer des logs depuis S3 ou depuis d’autres ressources ne prenant pas en charge la diffusion de données vers Kinesis.
Collecte de métriques
Il existe deux façons d’envoyer des métriques AWS à Datadog :
- Interrogation des métriques : l’intégration AWS contient une fonctionnalité d’interrogation d’API. Celle-ci effectue une analyse métrique par métrique de l’API CloudWatch afin d’extraire les données à envoyer à Datadog. De nouvelles métriques sont extraites toutes les 10 minutes en moyenne.
- Flux de métriques avec Kinesis Firehose : vous pouvez utiliser les flux de métriques Amazon CloudWatch et Amazon Kinesis Data Firehose pour visualiser vos métriques. Remarque : cette méthode implique une latence de deux à trois minutes, et requiert une configuration distincte.
Consultez la section Facturation des intégrations AWS pour découvrir les solutions pour exclure certaines ressources et ainsi réduire vos coûts.
Collecte de ressources
Certains produits Datadog tirent parti d’informations relatives à la configuration de vos ressources AWS (tels que les compartiments S3, les snapshots RDS et les distributions CloudFront). Datadog récupère ces informations en effectuant des appels API en lecture seule vers votre compte AWS.
Cloud Security Posture Management
Implémentation
Si vous n’avez pas encore configuré l’intégration AWS pour votre compte AWS, suivez les étapes requises ci-dessus. Prenez soin d’activer Cloud Security Posture Management lorsque vous y êtes invité.
Remarque : pour utiliser cette fonctionnalité, l’intégration AWS doit être configurée avec la délégation des rôles.
Pour ajouter la solution Cloud Security Posture Management à une intégration AWS existante, suivez les étapes ci-dessous pour activer la collecte de ressources.
Accordez les autorisations requises au rôle IAM Datadog en suivant les étapes manuelles ou automatiques :
Méthode automatique - Mise à jour de votre modèle CloudFormation.
a. Dans la console CloudFormation, repérez la stack principale que vous avez utilisée pour installer l’intégration Datadog, puis sélectionnez Update
.
b. Sélectionnez Replace current template
.
c. Sélectionnez Amazon S3 URL
, saisissez https://datadog-cloudformation-template.s3.amazonaws.com/aws/main.yaml
, puis cliquez sur Next
.
d. Définissez l’option CloudSecurityPostureManagementPermissions
sur true
, puis cliquez sur Next
sans modifier d’autres paramètres jusqu’à atteindre la page Review
, qui vous permet de vérifier l’ensemble des changements prévus.
e. Cochez les deux cases d’acceptation en bas de la page et cliquez sur Update stack
.
Méthode manuelle : associez la stratégie SecurityAudit
gérée d’AWS à votre rôle AWS IAM Datadog. Cette stratégie est disponible dans la console AWS.
Suivez les étapes ci-dessous pour terminer la configuration sur la page de l’intégration Datadog/AWS. Vous pouvez également utiliser l’endpoint d’API pour la mise à jour d’une intégration AWS.
- Cliquez sur le compte AWS pour lequel vous souhaitez activer la collecte de ressources.
- Dans l’onglet Resource collection de ce compte, activez
Cloud Security Posture Management Collection
. - En bas à droite de la page, cliquez sur
Save
.
Collecte d’alarmes
Vous pouvez envoyer des alarmes AWS CloudWatch à l’Events Explorer Datadog de deux façons différentes :
- Récupération d’alarmes : cette fonctionnalité est fournie par défaut avec l’intégration AWS et permet de récupérer les alarmes liées aux métriques par l’intermédiaire de l’API DescribeAlarmHistory. Si vous utilisez cette méthode, vos alarmes sont classées sous la source d’événements
Amazon Web Services
. Remarque : le crawler ne récupère pas les alarmes composites. - Rubrique SNS : pour visualiser toutes vos alarmes AWS CloudWatch dans votre Events Explorer, abonnez les alarmes à une rubrique SNS, puis transférez les messages SNS à Datadog. Pour découvrir comment recevoir des messages SNS en tant qu’événements dans Datadog, consultez la rubrique Recevoir les messages de SNS. Si vous utilisez cette méthode, vos alarmes sont classées sous la source d’événements
Amazon SNS
.
Données collectées
Métriques
aws.events.failed_invocations (count) | Measures the number of invocations that failed permanently. This does not include invocations that are retried or that succeeded after a retry attempt |
aws.events.invocations (count) | Measures the number of times a target is invoked for a rule in response to an event. This includes successful and failed invocations but does not include throttled or retried attempts until they fail permanently. |
aws.events.matched_events (count) | Measures the number of events that matched with any rule. |
aws.events.throttled_rules (count) | Measures the number of triggered rules that are being throttled. |
aws.events.triggered_rules (count) | Measures the number of triggered rules that matched with any event. |
aws.logs.delivery_errors (count) | The number of log events for which CloudWatch Logs received an error when forwarding data to the subscription destination. Shown as event |
aws.logs.delivery_throttling (count) | The number of log events for which CloudWatch Logs was throttled when forwarding data to the subscription destination. Shown as event |
aws.logs.forwarded_bytes (gauge) | The volume of log events in compressed bytes forwarded to the subscription destination. Shown as byte |
aws.logs.forwarded_log_events (count) | The number of log events forwarded to the subscription destination. Shown as event |
aws.logs.incoming_bytes (gauge) | The volume of log events in uncompressed bytes uploaded to Cloudwatch Logs. Shown as byte |
aws.logs.incoming_log_events (count) | The number of log events uploaded to Cloudwatch Logs. Shown as event |
aws.usage.call_count (count) | The number of specified operations performed in your account Shown as operation |
aws.usage.resource_count (count) | The number of specified resources in your account Shown as resource |
Événements
La collecte d’événements AWS se configure au niveau de chaque service AWS. Consultez la documentation du service AWS pertinent pour obtenir plus d’informations sur la collecte d’événements.
Les tags suivants sont recueillis à l’aide de l’intégration AWS. Remarque : certains tags s’affichent uniquement pour des métriques spécifiques.
Intégration | Clés de tag Datadog |
---|
Toutes | region |
API Gateway | apiid , apiname , method , resource , stage |
App Runner | instance , serviceid , servicename |
Auto Scaling | autoscalinggroupname , autoscaling_group |
Billing | account_id , budget_name , budget_type , currency , servicename , time_unit |
CloudFront | distributionid |
CodeBuild | project_name |
CodeDeploy | application , creator , deployment_config , deployment_group , deployment_option , deployment_type , status |
DirectConnect | connectionid |
DynamoDB | globalsecondaryindexname , operation , streamlabel , tablename |
EBS | volumeid , volume-name , volume-type |
EC2 | autoscaling_group , availability-zone , image , instance-id , instance-type , kernel , name , security_group_name |
ECS | clustername , servicename , instance_id |
EFS | filesystemid |
ElastiCache | cachenodeid , cache_node_type , cacheclusterid , cluster_name , engine , engine_version , preferred_availability-zone , replication_group |
ElasticBeanstalk | environmentname , enviromentid |
ELB | availability-zone , hostname , loadbalancername , name , targetgroup |
EMR | cluster_name , jobflowid |
ES | dedicated_master_enabled , ebs_enabled , elasticsearch_version , instance_type , zone_awareness_enabled |
Firehose | deliverystreamname |
FSx | filesystemid , filesystemtype |
Health | event_category , status , service |
IoT | actiontype , protocol , rulename |
Kinesis | streamname , name , state |
KMS | keyid |
Lambda | functionname , resource , executedversion , memorysize , runtime |
Machine Learning | mlmodelid , requestmode |
MQ | broker , queue , topic |
OpsWorks | stackid , layerid , instanceid |
Polly | operation |
RDS | auto_minor_version_upgrade , dbinstanceclass , dbclusteridentifier , dbinstanceidentifier , dbname , engine , engineversion , hostname , name , publicly_accessible , secondary_availability-zone |
RDS Proxy | proxyname , target , targetgroup , targetrole |
Redshift | clusteridentifier , latency , nodeid , service_class , stage , wlmid |
Route 53 | healthcheckid |
S3 | bucketname , filterid , storagetype |
SES | Les clés de tag sont personnalisées dans AWS. |
SNS | topicname |
SQS | queuename |
VPC | nategatewayid , vpnid , tunnelipaddress |
WorkSpaces | directoryid , workspaceid |
Checks de service
aws.status
Renvoie CRITICAL
si une ou plusieurs régions AWS rencontrent des problèmes. Si ce n’est pas le cas, renvoie OK
.
Statuses: ok, critical
Dépannage
Consultez la section Dépannage de l’intégration AWS pour résoudre les problèmes liés à l’intégration AWS.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: