Exécuter des tests Synthetic à partir d'emplacements privés
Pour être ajouté à la version bêta des emplacements privés Windows, contactez l'assistance Datadog.
Présentation
Les emplacements privés vous permettent de surveiller des applications internes ou des endpoints privés qui ne sont pas accessibles sur l’Internet public. Ils servent également à effectuer les actions suivantes :
Créer des emplacements Synthetic personnalisés dans des zones stratégiques pour votre entreprise
Vérifier les performances des applications dans votre environnement d’intégration continue interne avant de mettre en production de nouvelles fonctionnalités avec la solution Synthetics et CI/CD.
Comparer les performances des applications à l’intérieur et à l’extérieur de votre réseau interne.
Les emplacements privés sont des conteneurs Docker que vous pouvez installer partout où cela s’avère judicieux dans votre réseau privé. Une fois créés et installés, vous pouvez assigner des tests Synthetic à vos emplacements privés, comme vous le feriez pour un emplacement géré standard.
Votre worker d’emplacement privé récupère vos configurations de test à partir des serveurs Datadog via HTTPS, exécute le test selon un programme ou à la demande et renvoie les résultats du test aux serveurs Datadog. Vous pouvez ensuite visualiser les résultats des tests effectués sur vos emplacements privés exactement de la même façon que pour les tests exécutés à partir d’emplacements gérés :
Prérequis
Docker
Les emplacements privés correspondent à des conteneurs Docker installables sur n’importe quelle entité au sein de votre réseau privé. Vous pouvez accéder à l’image du worker de l’emplacement privé sur Google Container Registry. L’image peut être exécutée sur Linux ou Windows si le Docker Engine est disponible sur votre host. Elle peut également être exécutée avec le mode de conteneurs de Linux.
Endpoints des emplacements privés Datadog
Pour extraire les configurations de test et renvoyer les résultats de test, le worker d’emplacement privé doit avoir accès aux endpoints de l’API Datadog ci-dessous.
Port
Endpoint
Description
443
intake.synthetics.datadoghq.com pour les versions >=0.1.6, api.datadoghq.com pour les versions <=0.1.5
Utilisé par l’emplacement privé pour extraire les configurations de test et renvoyer les résultats de test à Datadog à l’aide d’un protocole interne basé sur le protocole Signature Version 4 d’AWS.
443
intake-v2.synthetics.datadoghq.com pour les versions >=0.2.0 et <=1.4.0
Utilisé par l’emplacement privé pour renvoyer les artefacts de test Browser, comme les captures d’écran, les erreurs et les ressources.
Port
Endpoint
Description
443
intake.synthetics.datadoghq.eu pour les versions >=1.11.0 et api.datadoghq.eu pour les versions <=1.10.0
Utilisé par l’emplacement privé pour extraire les configurations de test et renvoyer les résultats de test à Datadog à l’aide d’un protocole interne basé sur le protocole Signature Version 4 d’AWS.
443
intake-v2.synthetics.datadoghq.eu pour les versions >=0.2.0 et <=1.5.0
Utilisé par l’emplacement privé pour renvoyer les artefacts de test Browser (captures d’écran, erreurs, ressources).
Utilisé par l’emplacement privé pour extraire les configurations de test et renvoyer les résultats de test à Datadog à l’aide d’un protocole interne basé sur le protocole Signature Version 4 d’AWS.
Port
Endpoint
Description
443
intake.synthetics.ddog-gov.com
Utilisé par l’emplacement privé pour extraire les configurations de test et renvoyer les résultats de test à Datadog à l’aide d’un protocole interne basé sur le protocole Signature Version 4 d’AWS.
Configurer votre emplacement privé
Seuls les utilisateurs disposant du rôle Admin peuvent créer des emplacements privés. Pour en savoir plus, consultez la rubrique Autorisations.
Renseignez les détails de votre emplacement privé :
Indiquez le nom et la description de votre emplacement privé.
Ajoutez les tags que vous souhaitez associer à votre emplacement privé. Si vous configurez un emplacement privé pour Windows, cochez la case This is a Windows Private Location.
Choisissez l’une de vos clés d’API existantes. La sélection d’une clé d’API est nécessaire pour autoriser les communications entre votre emplacement privé et Datadog. Si vous ne possédez aucune clé d’API, cliquez sur Generate API key pour en créer une sur la page dédiée. Seuls les champs Name et API key sont requis.
Définissez les autorisations d’accès pour votre emplacement privé, puis cliquez sur Save Location and Generate Configuration File. Datadog crée alors votre emplacement privé et génère le fichier de configuration associé.
Configurer votre emplacement privé
Configurez votre emplacement privé en personnalisant le fichier de configuration généré. Lorsque vous ajoutez des paramètres de configuration initiale, tels que des proxies et des IP réservées et bloquées dans la section Step 3, le fichier de configuration généré est automatiquement modifié dans la section Step 4.
Selon la configuration de votre réseau interne, il peut être utile de définir des options avancées pour votre emplacement privé.
Configuration d’un proxy
Si le trafic entre votre emplacement privé et Datadog doit passer par un proxy, spécifiez l’URL du proxy en question au format http://<VOTRE_UTILISATEUR>:<VOTRE_MDP>@<VOTRE_IP>:<VOTRE_PORT> pour ajouter le paramètre proxyDatadog associé à votre fichier de configuration généré.
Par défaut, les utilisateurs de Synthetic peuvent créer des tests Synthetic sur des endpoints avec n’importe quelle IP. Si vous souhaitez empêcher les utilisateurs de créer des tests sur des IP internes sensibles de votre réseau, activez le bouton Block reserved IPs pour bloquer un ensemble de plages d’IP réservées par défaut (Registre d’adresses IPv4 et Registre d’adresses IPv6), puis définissez le paramètre enableDefaultBlockedIpRanges associé sur true dans le fichier de configuration généré.
Si certains des endpoints que vous voulez tester se trouvent dans une ou plusieurs des plages d’IP réservées bloquées, vous pouvez mettre leurs IP et/ou leurs CIDR sur liste blanche afin d’ajouter les paramètres allowedIPRanges associés à votre fichier de configuration généré.
docker run --rm datadog/synthetics-private-location-worker --help
Afficher votre fichier de configuration
Après avoir ajouté les options appropriées au fichier de configuration de votre emplacement privé, vous pouvez copier ce fichier et le coller dans votre répertoire de travail. Le fichier de configuration contient les secrets utilisés pour l’authentification de l’emplacement privé, les configurations de tests chiffrées ainsi que les résultats de test chiffrés.
Datadog ne stocke pas vos secrets. Vous devez donc les stocker localement avant de cliquer sur View Installation Instructions.
Remarque : vous devez pouvoir spécifier à nouveau ces secrets si vous décidez d’ajouter des workers, ou d’installer des workers sur un autre host.
Installer votre emplacement privé
Vous pouvez utiliser les variables d’environnement DATADOG_API_KEY, DATADOG_ACCESS_KEY, DATADOG_SECRET_ACCESS_KEY et DATADOG_PRIVATE_KEY dans la définition de votre tâche.
Lancez votre emplacement privé sur :
Exécutez cette commande pour démarrer votre worker d’emplacement privé en montant votre fichier de configuration dans le conteneur. Assurez-vous que votre fichier <NOM_FICHIER_CONFIGURATION_WORKER>.json est placé dans /etc/docker et non dans le dossier de base :
docker run --rm -v $PWD/<NOM_FICHIER_CONFIGURATION_WORKER>.json:/etc/datadog/synthetics-check-runner.json datadog/synthetics-private-location-worker:latest
Remarque : si vous avez bloqué des IP réservées, ajoutez les capacités LinuxNET_ADMIN au conteneur de votre emplacement privé.
Cette commande lance un conteneur Docker et prépare votre emplacement privé à l’exécution de tests. Datadog vous conseille d’exécuter le conteneur en mode détaché avec la stratégie de redémarrage adéquate.
Remarque : si vous avez bloqué des IP réservées, ajoutez les capacités LinuxNET_ADMIN au conteneur de votre emplacement privé.
Lancez votre conteneur avec :
docker-compose -f docker-compose.yml up
Pour déployer de façon sécurisée le worker des emplacements privés, définissez une ressource de secret Kubernetes et montez-la dans le conteneur à l’emplacement /etc/datadog/synthetics-check-runner.json.
Créez un secret Kubernetes avec le fichier JSON précédemment créé en exécutant la commande suivante :
Utilisez les déploiements pour décrire le statut souhaité associé à vos emplacements privés. Créez le fichier private-location-worker-deployment.yaml suivant :
Pour OpenShift, exécutez l’emplacement privé avec la SCC anyuid. Cette opération est requise pour garantir l’exécution de votre test Browser.
Vous pouvez définir dans vos paramètres de configuration des variables d’environnement qui pointent vers des secrets existants que vous avez configurés. Pour créer des variables d’environnement avec des secrets, consultez la documentation Kubernetes (en anglais).
Remarque : si vous avez bloqué des IP réservées, ajoutez les capacités LinuxNET_ADMIN au conteneur de votre emplacement privé.
Créez une définition de tâche EC2 correspondant à celle indiquée ci-dessous. Remplacez chaque paramètre par la valeur correspondante figurant dans le fichier de configuration de l’emplacement privé que vous avez généré précédemment :
{..."containerDefinitions": [{"command": ["--site='...'","--locationID='...'","--accessKey='...'","--datadogApiKey='...'","--secretAccessKey='...'","--privateKey='-----BEGIN RSA PRIVATE KEY-----XXXXXXXX-----END RSA PRIVATE KEY-----'","--publicKey.pem='-----BEGIN PUBLIC KEY-----XXXXXXXX-----END PUBLIC KEY-----'","--publicKey.fingerprint='...'"],..."image": "datadog/synthetics-private-location-worker:latest",...}],..."compatibilities": ["EC2"],...}
Remarque : si vous avez bloqué des IP réservées, configurez un linuxParameters afin d’octroyer les capacités NET_ADMIN aux conteneurs de vos emplacements privés.
Créez une définition de tâche Fargate correspondant à celle indiquée ci-dessous. Remplacez chaque paramètre par la valeur correspondante figurant dans le fichier de configuration de l’emplacement privé que vous avez généré précédemment :
{..."containerDefinitions": [{"command": ["--site='...'","--locationID='...'","--accessKey='...'","--datadogApiKey='...'","--secretAccessKey='...'","--privateKey='-----BEGIN RSA PRIVATE KEY-----XXXXXXXX-----END RSA PRIVATE KEY-----'","--publicKey.pem='-----BEGIN PUBLIC KEY-----XXXXXXXX-----END PUBLIC KEY-----'","--publicKey.fingerprint='...'"],..."image": "datadog/synthetics-private-location-worker:latest",...}],..."compatibilities": ["EC2","FARGATE"],...}
Remarque : puisque l’option de pare-feu de l’emplacement privé n’est pas prise en charge sur AWS Fargate, le paramètre enableDefaultBlockedIpRanges ne peut pas être défini sur true.
Étant donné que Datadog s’intègre déjà à Kubernetes et AWS, la plateforme est prête pour la surveillance de EKS.
Créez un secret Kubernetes avec le fichier JSON précédemment créé en exécutant la commande suivante :
Utilisez les déploiements pour décrire le statut souhaité associé à vos emplacements privés. Créez le fichier private-location-worker-deployment.yaml suivant :
Remarque : si vous avez bloqué des IP réservées, configurez un contexte de sécurité afin d’octroyer les capacités LinuxNET_ADMIN aux conteneurs de vos emplacements privés.
Configurer des sondes d’activité et de disponibilité
Ajoutez une sonde d’activité ou de disponibilité pour permettre à votre orchestrateur de vérifier que les workers fonctionnent correctement.
Pour les sondes de disponibilité, vous aurez besoin d’activer les status probes d’emplacement privé sur le port 8080 dans le déploiement de votre emplacement privé. Pour en savoir plus, consultez la rubrique Configuration avancée.
Configurations supplémentaires pour les checks de santé
Cette méthode d'ajout de check de santé pour un emplacement privé n'est plus prise en charge. Datadog recommande d'utiliser des sondes d'activité et de disponibilité..
Le fichier /tmp/liveness.date des conteneurs d’emplacement privé est mis à jour après chaque polling réussi auprès de Datadog (par défaut, toutes les 2 s). Le conteneur est considéré comme non sain si aucun polling n’a été effectué depuis un certain temps. Exemple : aucune récupération au cours de la dernière minute.
Utilisez la configuration ci-dessous pour créer des checks de santé sur vos conteneurs avec livenessProbe :
Lorsqu’au moins un conteneur d’emplacement privé a commencé à envoyer des données à Datadog, le statut de l’emplacement privé devient vert :
Le statut de santé REPORTING s’affiche également dans la liste Private Locations de la page Settings :
Commencez à tester votre premier endpoint interne en lançant un test rapide dessus. Vérifiez que vous obtenez la réponse attendue :
Remarque : Datadog envoie uniquement le trafic sortant depuis votre emplacement privé. Le trafic entrant n’est pas transmis.
Lancer des tests Synthetic à partir de votre emplacement privé
Créez un test API, API à plusieurs étapes ou Browser, puis sélectionnez les emplacements privés de votre choix.
Utilisez vos emplacements privés de la même manière que les emplacements gérés par Datadog : assignez des tests Synthetic à des emplacements privés, visualisez les résultats des tests, récupérez des métriques Synthetic, etc.
Redimensionner votre emplacement privé
Étant donné que vous pouvez exécuter plusieurs conteneurs pour un seul emplacement privé avec un seul fichier de configuration, vous pouvez procéder à un scaling horizontal de vos emplacements privés en y ajoutant ou en supprimant des workers. Lorsque vous effectuez cette opération, assurez-vous de définir un paramètre concurrency et d’attribuer des ressources de worker qui conviennent aux types et au nombre de tests que vous souhaitez que votre emplacement privé exécute.
Vous pouvez également procéder à un scaling vertical de vos emplacements privés en augmentant la charge que les conteneurs de vos emplacements privés peuvent gérer. Là encore, vous devez utiliser le paramètre concurrency pour ajuster le nombre maximum de tests que vos workers sont autorisés à exécuter et mettre à jour les ressources attribuées à vos workers.
La quantité de ressources allouées initialement doit être cohérente avec le nombre et le type de tests que vous souhaitez exécuter depuis votre emplacement privé. Toutefois, le meilleur moyen de savoir si vous devez redimensionner vos emplacements privés est de les surveiller attentivement. La surveillance des emplacements privés vous permet d’obtenir des insights à propos des performances et de la santé de vos emplacements privés, ainsi que des métriques et monitors prêts à l’emploi.
Par défaut, seuls les utilisateurs disposant du rôle Admin Datadog peuvent créer des emplacements, les supprimer et consulter les directives d’installation connexes.
Les utilisateurs disposant des rôles Admin ou Standard Datadog peuvent consulter les emplacements privés, les rechercher et leur assigner des tests Synthetic. Pour permettre à un utilisateur d’accéder à la page Private Locations, attribuez-lui l’un de ces deux rôles par défaut.
SI vous utilisez des rôles personnalisés, ajoutez votre utilisateur à un rôle disposant des autorisations synthetics_private_location_read et synthetics_private_location_write.
Pour aller plus loin
Documentation, liens et articles supplémentaires utiles: