Une problématique classique dans AWS concerne la mesure de flux et de latence réseau lors de la communication avec des entités situées à l'extérieur du cloud. Et notamment lors de connexions utilisant un VPN.
AWS fournit de nombreux outils dans le but de nous aider à optimiser la supervision de nos déploiements dans son cloud.
Certains de ces outils sont disponibles sous forme d'un template d'ec2 installé par un "document" du Service System Manager.
Pour notre problématique, une solution existante est décrite dans cet article de blog https://aws.amazon.com/fr/premiumsupport/knowledge-center/vpc-packet-loss-latency-gateway/
Cependant, l'installation de cet outil via un "document", comme décrit dans l'article ci-dessus, est trop complexe à mon goût.
J'ai donc pris le parti de l'installer une fois, regarder comment AWS "s'y prend" et réaliser la même chose mais beaucoup plus simplement.
Principe
Une ec2 de type t3.nano envoie des pings toutes les minutes à un système situé à l'extérieur du cloud.
Dans notre cas, un serveur Windows situé dans un datacenter relié au cloud AWS avec un VPN.
Cette ec2 de type t3.nano est créée avec un user_data pouvant être ré-exécuté à chaque redémarrage de l'ec2 (ce n'est pas le comportement par défaut).
Ce champ user_data contient :
la création d'un script shell contenant la commande ping utilisée pour tester la connexion. Le système distant doit être autorisé à répondre au ping envoyé par le script shell.
La mise en crontab pour l'exécution de ce script shell toutes les minutes.
L'installation d'un agent CloudWatch.
la création d'un fichier de configuration pour que l'agent CloudWatch remonte les informations récoltées au service de supervision CloudWatch.
Installation
Créer une ec2 pouvant envoyer des pings à l'entité distante.
Ajouter dans la zone user_data le script contenu dans l'annexe ci-dessous.
Affecter un rôle à l'ec2 avec la policy CloudWatchAgentServerPolicy permettant à l'agent SSM de communiquer avec l'API correspondante.
Une fois l'ec2 lancée, un custom namespace, dont le nom est défini dans le script user_data est créé automatiquement dans CloudWatch. Des dashboards sont créés dans Cloudwatch à partir des données remontées depuis l'agent SSM de l'ec2 dans le namespace.
Résultat
Il vous reste à créer un dashboard dans CloudWatch pour visualiser les données remontées.
Annexe
Le script ci-dessous est à copier dans le champ user_data de l'ec2.
Deux paramètres sont à modifier dans le script pour l'adapter :
ADRESSE_VPN dans la crontab : adresse du serveur à "pinguer"
"log_group_name" dans le fichier .json de paramétrage de l'agent SSM : custom namespaces CloudWatch qui recevra les points de mesure.
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
Fonctionnel
Toujours activé
L’accès ou le stockage technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
L’accès ou le stockage technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’internaute.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
L’accès ou le stockage technique est nécessaire pour créer des profils d’internautes afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.