Associez Amazon Web Services (AWS) pour :
Les intégrations connexes comprennent :
API Gateway | Créez, publiez, maintenez et sécurisez des API |
Appstream | Streaming d’applications entièrement géré sur AWS |
AppSync | Un service GraphQL offrant des fonctionnalités de synchronisation des données en temps réel et de programmation hors ligne |
Athena | Service de requêtes interactif sans serveur |
Autos Scaling | Configuration du dimensionnement d’EC2 |
Billing | Facturation et budgets |
CloudFront | Réseau de diffusion de contenu local |
CloudHSM | Module de sécurité de matériel (HSM) géré |
CloudSearch | Accès aux fichiers de log et aux appels d’API AWS |
CloudTrail | Accès aux fichiers de log et aux appels d’API AWS |
CodeBuild | Service de génération entièrement géré |
CodeDeploy | Automatisation des déploiements de code |
Cognito | Inscription et connexion utilisateur sécurisées |
Connect | Un centre de contacts clients fonctionnant en libre-service et basé sur le cloud |
Direct Connect | Connexion réseau dédiée à AWS |
DMS | Service de migration de base de données |
DocumentDB | Base de données compatible avec MongoDB |
DynamoDB | Base de données NoSQL |
EBS (Elastic Block Store) | Volumes de stockage permanent par bloc |
EC2 (Elastic Cloud Compute) | Capacité de calcul redimensionnable dans le cloud |
EC2 Spot | Exploitation des capacités inutilisées d’EC2 |
ECS (Elastic Container Service) | Service de gestion de conteneurs prenant en charge les conteneurs Docker |
EFS (Elastic File System) | Stockage de fichiers partagé |
EKS | Elastic Container Service pour Kubernetes |
Elastic Transcoder | Transcodage de médias et de vidéo dans le cloud |
ElastiCache | Cache en mémoire dans le cloud |
Elastic Beanstalk | Service pour le déploiement et le dimensionnement d’applications et de services Web |
ELB (Elastic Load Balancing) | Distribution du trafic entrant d’applications sur plusieurs instances Amazon EC2 |
EMR (Elastic Map Reduce) | Traitement de données avec Hadoop |
ES (Elasticsearch) | Déploiement, utilisation et mise à l’échelle des clusters Elasticsearch |
Firehose | Capture et chargement de données de streaming |
Gamelift | Hébergement de serveurs de jeux dédiés |
Glue | Extraction, transformation et chargement de données pour l’analyse |
GuardDuty | Détection des menaces intelligente |
Health | Visibilité sur l’état de vos ressources, services et comptes AWS |
Inspector | Évaluation automatisée de la sécurité |
IOT (Internet of Things) | Connexion d’appareils IoT à des services cloud |
Kinesis | Service de traitement en temps réel de grands flux de données distribués |
KMS (Key Management Service) | Création et contrôle des clés de chiffrement |
Lambda | Service de calcul sans serveur |
Lex | Création de bots de discussion |
Machine Learning | Création des modèles d’apprentissage automatique |
MediaConnect | Transport de vidéos en direct |
MediaConvert | Traitement vidéo pour la diffusion et la distribution multi-écran |
MediaPackage | Préparation et protection de vidéos en vue de leur diffusion sur Internet |
MediaTailor | Insertion évolutive de publicités côté serveur |
MQ | Agent de message géré pour ActiveMQ |
Managed Streaming for Kafka | Conception et exécution d’applications qui utilisent Kafka pour le traitement des données de streaming |
Passerelle NAT | Autoriser les instances d’un sous-réseau privé à se connecter à Internet ou à d’autres services AWS |
Neptune | Service de base de données orienté graph fiable et rapide conçu pour le cloud |
OpsWorks | Gestion de la configuration |
Polly | Service de synthèse vocale |
RDS (Relational Database Service) | Base de données relationnelle dans le cloud |
Redshift | Solution d’entrepôt de données |
Rekognition | Analyse d’images et de vidéos pour les applications |
Route 53 | Gestion de noms de domaine et de trafic avec surveillance de la disponibilité |
S3 (Simple Storage Service) | Service de stockage dans le cloud hautement disponible et évolutif |
SageMaker | Algorithmes et modèles d’apprentissage automatique |
SES (Simple Email Service) | Service économique d’envoi d’e-mails |
SNS (Simple Notification System) | Alertes et notifications |
SQS (Simple Queue Service) | Service de file d’attente de messagerie |
Storage Gateway | Stockage cloud hybride |
SWF (Simple Workflow Service) | Gestion de workflows dans le cloud |
VPC (Virtual Private Cloud) | Lancement de ressources AWS dans un réseau virtuel |
Web Application Firewall (WAF) | Protection des applications Web contre les failles Web les plus courantes |
WorkSpaces | Service de bureau sécurisé |
X-Ray | Création de traces pour les applications distribuées |
La configuration de l’intégration de Datadog à Amazon Web Services nécessite la configuration de la délégation de rôles à l’aide d’AWS IAM. Pour mieux comprendre le principe de délégation des rôles, reportez-vous au guide des bonnes pratiques pour AWS IAM.
Another AWS account
.464622532012
(identifiant de compte Datadog). Cela signifie que vous accordez à Datadog un accès en lecture seule à vos données AWS.Require external ID
et saisissez l’ID généré dans l’application Datadog. Assurez-vous de ne pas cocher Require MFA. Pour en savoir plus sur l’External ID, consultez ce document du guide de l’utilisateur d’IAM.Next: Permissions
.Create Policy
afin d’ouvrir une nouvelle fenêtre.JSON
. Afin de profiter de toutes les intégrations AWS proposées par Datadog, utilisez l’extrait de stratégie sous la zone de texte. Étant donné que d’autres composants sont ajoutés à une intégration, ces autorisations peuvent évoluer.Review policy
.DatadogAWSIntegrationPolicy
ou utilisez le nom de votre choix, et saisissez une description pertinente.Create policy
. Vous pouvez ensuite fermer cette fenêtre.Next: Review
.DatadogAWSIntegrationRole
ou un nom similaire pour le rôle, ainsi qu’une description pertinente. Cliquez sur Create role
.Étape facultative : si vous utilisez Terraform, configurez votre stratégie IAM Datadog à l’aide de l’intégration d’AWS à Terraform.
Les autorisations énumérées ci-dessous sont incluses dans le document de stratégie à l’aide de wildcards comme List*
et Get*
. Si vous avez besoin de stratégies strictes, utilisez les noms d’action complets indiqués et consultez la documentation sur l’API Amazon pour les services requis.
Si vous ne souhaitez pas accorder toutes les autorisations, nous vous recommandons d’utiliser au strict minimum les stratégies AmazonEC2ReadOnlyAccess et CloudWatchReadOnlyAccess. Pour en savoir plus sur les autorisations, consultez l’onglet Autorisations de base.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"apigateway:GET",
"autoscaling:Describe*",
"budgets:ViewBudget",
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions",
"cloudtrail:DescribeTrails",
"cloudtrail:GetTrailStatus",
"cloudwatch:Describe*",
"cloudwatch:Get*",
"cloudwatch:List*",
"codedeploy:List*",
"codedeploy:BatchGet*",
"directconnect:Describe*",
"dynamodb:List*",
"dynamodb:Describe*",
"ec2:Describe*",
"ecs:Describe*",
"ecs:List*",
"elasticache:Describe*",
"elasticache:List*",
"elasticfilesystem:DescribeFileSystems",
"elasticfilesystem:DescribeTags",
"elasticloadbalancing:Describe*",
"elasticmapreduce:List*",
"elasticmapreduce:Describe*",
"es:ListTags",
"es:ListDomainNames",
"es:DescribeElasticsearchDomains",
"health:DescribeEvents",
"health:DescribeEventDetails",
"health:DescribeAffectedEntities",
"kinesis:List*",
"kinesis:Describe*",
"lambda:AddPermission",
"lambda:GetPolicy",
"lambda:List*",
"lambda:RemovePermission",
"logs:TestMetricFilter",
"logs:PutSubscriptionFilter",
"logs:DeleteSubscriptionFilter",
"logs:DescribeSubscriptionFilters",
"rds:Describe*",
"rds:List*",
"redshift:DescribeClusters",
"redshift:DescribeLoggingStatus",
"route53:List*",
"s3:GetBucketLogging",
"s3:GetBucketLocation",
"s3:GetBucketNotification",
"s3:GetBucketTagging",
"s3:ListAllMyBuckets",
"s3:PutBucketNotification",
"ses:Get*",
"sns:List*",
"sns:Publish",
"sqs:ListQueues",
"support:*",
"tag:GetResources",
"tag:GetTagKeys",
"tag:GetTagValues",
"xray:BatchGetTraces",
"xray:GetTraceSummaries"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
L’intégration AWS/Datadog de base récupère des données à partir d’AWS CloudWatch. Votre document de stratégie doit au minimum autoriser les actions suivantes :
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"cloudwatch:Get*",
"cloudwatch:List*",
"ec2:Describe*",
"support:*",
"tag:GetResources",
"tag:GetTagKeys",
"tag:GetTagValues"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
Autorisation AWS | Description |
---|---|
cloudwatch:ListMetrics | Énumère les métriques CloudWatch disponibles. |
cloudwatch:GetMetricData | Récupère des points de données pour une métrique donnée. |
support:* | Ajoute des métriques à propos des limites de service. Nécessite un accès complet, en raison des limites AWS. |
tag:getResources | Récupère des tags personnalisés en fonction du type de ressource. |
tag:getTagKeys | Récupère des clés de tag selon les régions d’un compte AWS. |
tag:getTagValues | Récupère les valeurs de tag selon les régions d’un compte AWS. |
L’API Resource Group Tagging vise notamment à réduire le nombre d’appels API requis pour recueillir des tags personnalisés. Pour en savoir plus, consultez la documentation relative aux stratégies sur les tags sur le site Web d’AWS.
123456789012
et non 1234-5678-9012
. Votre ID de compte est indiqué dans l’ARN du rôle créé durant l’installation de l’intégration AWS. Saisissez ensuite le nom du rôle créé. Remarque : le nom du rôle saisi dans le carré d’intégration est sensible à la casse et doit correspondre parfaitement au nom de rôle créé sur AWS.Les logs de service AWS sont recueillis via la fonction Lambda de Datadog. Ce Lambda, qui se déclenche sur les compartiments S3, les groupes de logs CloudWatch et les événements CloudWatch, transmet des logs à Datadog.
Pour commencer à recueillir des logs à partir de vos services AWS :
Configurez les déclencheurs entraînant l’exécution du lambda. Il existe deux façons de les configurer :
Pour ajouter le Lambda de transmission de logs à Datadog sur votre compte AWS, vous pouvez utiliser le référentiel sans serveur AWS ou créer manuellement un nouveau Lambda.
Utilisez le référentiel sans serveur AWS pour déployer la fonction Lambda sur votre compte AWS.
Accédez à la console Lambda et créez une nouvelle fonction :
Sélectionnez Author from scratch et saisissez un nom unique pour la fonction.
Définissez Runtime sur Python 2.7, Python 3.6 ou Python 3.7.
Pour Role
, sélectionnez Create new role from template(s) et saisissez un nom unique pour le rôle.
Si vous récupérez des logs à partir d’un compartiment S3, sous « Policy templates », sélectionnez s3 object read-only permissions.
Sélectionnez Create Function.
En haut du script se trouve une section intitulée #DD_API_KEY: Datadog API Key
. Vous pouvez fournir la clé d’API requise par la fonction Lambda de deux façons différentes :
Si vous utilisez le site européen de Datadog, définissez DD_SITE
sur datadoghq.eu
en tant que variable d’environnement ou directement dans le code.
Faites défiler jusqu’à atteindre Basic Settings sous la zone de code intégrée.
Définissez la mémoire sur une valeur proche de 1 Go.
Définissez le délai d’expiration sur 120 secondes.
Définissez l’option Execution Role sur le rôle créé précédemment.
Faites défiler vers le bas vers la section Concurrency et définissez l’option Reserve concurrency sur 100.
Ajoutez la couche Lambda de Datadog à l’aide de l’ARN suivante. Remplacez us-east-1
par la région où votre fonction est déployée et remplacez Python27
par le runtime Python que votre fonction utilise (Python27
, Python36
ou Python37
).
arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Python27:5
Faites défiler vers le haut de la page et cliquez sur Save.
La variable d’environnement DD_SITE
définit le site Datadog vers lequel les informations doivent être envoyées. Utilisez datadoghq.com
pour le site américain de Datadog (valeur par défaut) ou datadoghq.eu
pour le site européen de Datadog.
Deux variables d’environnement sont disponibles pour faire passer les logs par un proxy :
DD_URL
: définit l’endpoint du proxy vers lequel les logs doivent être transmis.DD_PORT
: définit le port du proxy vers lequel les logs doivent être transmis.Par défaut, le forwarder envoie les logs en HTTPS par l’intermédiaire du port 443
. Pour envoyer les logs en passant par une connexion TCP chiffrée par SSL, définissez la variable d’environnement DD_USE_TCP
sur true
.
Lorsque le TCP est activé, le port 10516
est utilisé pour le site américain de Datadog et le port 1883
est utilisé pour le site européen de Datadog.
Plusieurs options de nettoyage sont disponibles : REDACT_IP
et REDACT_EMAIL
trouvent les expressions codées en dur, alors que DD_SCRUBBING_RULE
permet aux utilisateurs de spécifier une expression régulière.
REDACT_IP
, ajoutez-la comme variable d’environnement et définissez sa valeur sur true
.\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
est remplacé par xxx.xxx.xxx.xxx
.REDACT_EMAIL
, ajoutez-la comme variable d’environnement et définissez sa valeur sur true
.[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+
est remplacé par xxxxx@xxxxx.com
.DD_SCRUBBING_RULE
, ajoutez-la comme variable d’environnement et entrez une expression régulière pour définir sa valeur.xxxxx
.DD_SCRUBBING_RULE_REPLACEMENT
pour spécifier une valeur en remplacement de xxxxx
.Utilisez les variables d’environnement EXCLUDE_AT_MATCH
OU INCLUDE_AT_MATCH
pour filtrer les logs en fonction d’une expression régulière.
EXCLUDE_AT_MATCH
, ajoutez-la comme variable d’environnement et entrez une expression régulière pour définir sa valeur. Les logs correspondant à l’expression régulière sont exclus.INCLUDE_AT_MATCH
, ajoutez-la comme variable d’environnement et entrez une expression régulière pour définir sa valeur. Les logs non exclus par EXCLUDE_AT_MATCH
et correspondant à l’expression régulière sont inclus.Pensez à tester votre Lambda après avoir configuré les paramètres avancés pour vérifier qu’aucune erreur ne se produit.
Pour traiter les logs multiligne dans S3, définissez la variable d’environnement DD_MULTILINE_LOG_REGEX_PATTERN
sur l’expression régulière spécifiée pour la détection d’une nouvelle ligne de log.
Exemple : pour les logs multiligne commençant par l’expression 11/10/2014
, utilisez : DD_MULTILINE_LOG_REGEX_PATTERN="\d{2}\/\d{2}\/\d{4}"
Tous les services AWS qui génèrent des logs dans un compartiment S3 ou un groupe de logs CloudWatch sont pris en charge. Consultez les instructions de configuration spécifiques des services les plus utilisés dans le tableau ci-dessous :
Vous pouvez choisir entre deux options pour la configuration des déclencheurs de la fonction Lambda de Datadog :
Si vous stockez des logs dans de nombreux compartiments S3 ou groupes de logs CloudWatch, Datadog peut gérer automatiquement les déclencheurs à votre place.
Le référentiel sans serveur AWS déploie la fonction Lambda sur le compte et crée un rôle, généralement avec un nom comme ‘serverlessrepo-Datadog-Log-loglambdaddfunctionRole-xyz’. Toutefois, une stratégie doit être appliquée à ce rôle avec le nombre d’autorisations adéquat. Habituellement, le rôle est associé à une stratégie n’ayant pas suffisamment d’autorisations pour que l’enregistrement de la fonction Lambda fonctionne. Ajoutez toutes les autorisations requises énumérées ci-dessous à la stratégie faisant partie du rôle de la fonction Lambda de Datadog en utilisant la console IAM. Il s’agit des autorisations déjà utilisées dans l’intégration Datadog/AWS. Une autre méthode permettant de mettre à jour les autorisations de la stratégie associée au rôle de la fonction Lambda consiste à associer une deuxième stratégie, celle qui est utilisée par l’intégration Datadog/AWS. Les descriptions ci-dessous expliquent comment ces autorisations sont utilisées :
"cloudfront:GetDistributionConfig",
"cloudfront:ListDistributions",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:DescribeLoadBalancerAttributes",
"lambda:AddPermission",
"lambda:GetPolicy",
"lambda:RemovePermission",
"redshift:DescribeClusters",
"redshift:DescribeLoggingStatus",
"s3:GetBucketLogging",
"s3:GetBucketLocation",
"s3:GetBucketNotification",
"s3:ListAllMyBuckets",
"s3:PutBucketNotification",
"logs:PutSubscriptionFilter",
"logs:DeleteSubscriptionFilter",
"logs:DescribeSubscriptionFilters"
Autorisation AWS | Description |
---|---|
cloudfront:GetDistributionConfig | Récupère le nom du compartiment S3 contenant les logs d’accès CloudFront. |
cloudfront:ListDistributions | Énumère toutes les distributions CloudFront. |
elasticloadbalancing:DescribeLoadBalancers | Énumère tous les répartiteurs de charge. |
elasticloadbalancing:DescribeLoadBalancerAttributes | Récupère le nom du compartiment S3 contenant les logs d’accès ELB. |
lambda:AddPermission | Ajoute une autorisation permettant à un compartiment S3 spécifique de déclencher une fonction Lambda. |
lambda:GetPolicy | Récupère la stratégie Lambda lorsque des déclencheurs doivent être supprimés. |
lambda:RemovePermission | Supprime des autorisations d’une stratégie Lambda. |
redshift:DescribeClusters | Énumère tous les clusters Redshift. |
redshift:DescribeLoggingStatus | Récupère le nom du compartiment S3 contenant les logs Redshift. |
s3:GetBucketLogging | Récupère le nom du compartiment S3 contenant les logs d’accès S3. |
s3:GetBucketLocation | Récupère la région du compartiment S3 contenant les logs d’accès S3. |
s3:GetBucketNotification | Récupère les configurations existantes de déclenchement de Lambda. |
s3:ListAllMyBuckets | Énumère tous les compartiments S3. |
s3:PutBucketNotification | Ajoute ou supprime un déclencheur Lambda basé sur des événements de compartiment S3. |
logs:PutSubscriptionFilter | Ajoute un déclencheur Lambda basé sur des événements de log CloudWatch. |
logs:DeleteSubscriptionFilter | Supprime un déclencheur Lambda basé sur des événements de log CloudWatch. |
logs:DescribeSubscriptionFilters | Énumère les filtres d’abonnement pour le groupe de logs spécifié. |
Si vous stockez des logs dans un groupe de logs CloudWatch, suivez les étapes ci-dessous pour les transmettre à Datadog :
Sélectionnez le groupe de logs CloudWatch correspondant, ajoutez un nom de filtre (vous pouvez toutefois laisser le filtre vide) et ajoutez le déclencheur :
Accédez ensuite à la section Log de Datadog pour commencer à explorer vos logs !
Si vous stockez des logs dans un compartiment S3, suivez les étapes ci-dessous pour les transmettre à Datadog :
Une fois la fonction Lambda installée, ajoutez manuellement un déclencheur dans la console AWS sur le compartiment S3 qui contient vos logs :
Sélectionnez le compartiment, puis suivez les instructions d’AWS :
Définissez le bon type d’événement sur les compartiments S3 :
Accédez ensuite à la section Log de Datadog pour commencer à explorer vos logs !
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.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.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.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.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.triggered_rules (count) | Measures the number of triggered rules that matched with any event. |
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. |
Vous pouvez configurer la collecte d’événements AWS pour chaque service AWS. Consultez la documentation des différents services AWS pour en savoir plus sur la collecte d’événements.
Il est important de tenir compte des deux distinctions suivantes :
system.cpu.idle
sans appliquer de filtre, une série est envoyée pour chaque host qui renvoie cette métrique. Ces séries doivent être combinées pour être représentées graphiquement. À l’inverse, si vous cherchez à obtenir system.cpu.idle
pour un seul host, aucune agrégation n’est nécessaire. Les valeurs maximale et moyenne sont identiques.Lorsque vous utilisez l’intégration AWS, Datadog récupère vos métriques via l’API CloudWatch. Il est possible que les données des métriques AWS accusent un léger retard, en raison des contraintes liées à l’API.
Pour commencer, l’API CloudWatch propose uniquement une analyse métrique par métrique afin d’extraire des données. Les API CloudWatch prévoient une limite de débit qui varie en fonction des informations d’authentification, de la région et du service. Les métriques sont transmises par AWS en fonction du niveau du compte. Par exemple, si vous payez pour des « métriques détaillées » dans AWS, vous y avez accès plus rapidement. Ce niveau de service pour les métriques détaillées s’applique également à la granularité. Ainsi, certaines métriques sont transmises toutes les minutes, tandis que d’autres sont envoyées toutes les cinq minutes.
Datadog vous permet de hiérarchiser certaines métriques d’un compte afin de les récupérer en priorité, en fonction de certaines circonstances. Contactez l’assistance Datadog pour en savoir plus.
Pour obtenir des métriques quasiment en temps réel, installez l’Agent Datadog sur le host. Pour en savoir plus, consultez l’article de blog de Datadog Tout ce dont vous devez savoir pour effectuer une surveillance à partir d’Agents (en anglais).
L’API CloudWatch renvoie uniquement les métriques avec des points de données. Ainsi, si un ELB ne possède aucune instance liée, aucune métrique associée à cet ELB n’apparaît dans Datadog.
Lorsque l’option d’équilibrage des charges entre zones est activée sur un ELB, toutes les instances liées à cet ELB font partie de toutes les zones de disponibilité (pour CloudWatch). Ainsi, si vous possédez deux instances dans 1a et trois dans ab, la métrique affiche cinq instances par zone de disponibilité. Puisque cela peut s’avérer contre-intuitif, nous avons ajouté de nouvelles métriques, aws.elb.healthy_host_count_deduped et aws.elb.un_healthy_host_count_deduped, qui affichent le nombre d’instances saines et non saines par zone de disponibilité, que vous ayez activé ou non l’option d’équilibrage des charges entre zones.
Lors de l’installation de l’Agent sur un host AWS, il est possible que des hosts soient dupliqués pendant quelques heures sur la page d’infrastructure si vous avez défini manuellement le hostname dans la configuration de l’Agent. Ces doublons disparaîtront après quelques heures et ne seront pas pris en compte durant la facturation.