Surveillance Amazon Web Services ( AWS ) avec Amazon Web Services ( AWS ) agent
Pour surveiller les services gérés par AWS, Instana doit collecter des données à partir AWS d'API telles que et CloudWatch,S3 X-Ray, pour lesquelles il n'est pas possible d'installer un agent hôte ou tout autre type d'agent.
Cependant, l'agent hôte Instana peut être configuré de manière spécifique pour surveiller les services gérés par AWS. L'agent hôte qui est configuré de manière spécifique pour surveiller AWS les services est appelé AWS agent. Il est recommandé d'installer AWS l'agent sur une machine hôte dédiée. Veillez également à ce qu'au moins un AWS agent soit disponible dans chaque AWS région.
Une fois AWS l'agent installé, vous pouvez importer et exporter des données vers et depuis les services AWS pris en charge, mais vous n'avez pas accès aux infrastructures qui alimentent ces services.
Remarques :
Pour surveiller une machine virtuelle Amazon Elastic Computing ( EC2 ), un Kubernetes cluster qui s'exécute sur AWS, que vous avez installé et géré vous-même ou à l'aide d'Amazon Elastic Kubernetes Service, ou un cluster Amazon Elastic Container, vous devez utiliser l'agent hôte Instana, au lieu de AWS l'agent. Pour plus d'informations sur les étapes d'installation de l'agent hôte, consultez les rubriques de la section Plateformes.
Pour surveiller AWS dans un Kubernetes ou Red Hat OpenShift cluster, n'installez pas l'agent AWS Instana sur chaque nœud du cluster. Installez AWS l'agent sur une machine hôte dédiée.
Plateformes
Pour surveiller les plateformes suivantes, installez l'agent hôte Instana :
Services surveillés
Pour surveiller les services suivants gérés par AWS, installez l'agent AWS Instana comme décrit dans la section Installation AWS de l'agent :
XRay (obsolète)
Installation de AWS l'agent
Vous pouvez installer AWS l'agent sur EC2 ou sur Fargate sur ECS.
Remarques :
En fonction du nombre d'entités surveillées dans votre environnement cloud, vous devrez peut-être augmenter la quantité maximale de mémoire disponible pour votre agent hôte. Vous pouvez augmenter la mémoire de l'agent en définissant la variable d'environnement
AGENT_MAX_MEMsur une valeur supérieure à la valeur par défaut de 544 MiB. Par exemple, pour définir la mémoire de l'agent sur 1 Go, vous pouvez définirAGENT_MAX_MEM=1024M.N'installez qu'un seul AWS agent par combinaison de AWS compte et de AWS région. L'installation de plusieurs AWS agents pour la même combinaison de AWS compte et AWS de région peut entraîner des coûts supplémentaires de la part d'Instana AWS, sans apporter de bénéfice supplémentaire en termes de qualité de surveillance.
Installation sur EC2
Vous pouvez installer AWS l'agent sur Windows ou Linux sur EC2. Il est préférable d'exécuter l'agent AWS Instana sur une machine polyvalente de dernière génération qui exécute Linux®. Par exemple, m5.large les instances sont idéales.
Cliquez sur Plus > Agents > Installer des agents > AWS dans l'interface utilisateur Instana.
Dans la liste Technologie, sélectionnez Capteur Instana AWS.
Dans la liste Exécuter votre AWS agent sur, sélectionnez Elastic Cloud Compute ( EC2 ) (c'est la valeur par défaut).
Votre clé d'agent et votre emplacement sont préremplis dans le script afin d'être utilisés comme
User Datasur EC2. Copiez le script qui s'affiche. Le script se présente comme suit, sauf que toutes les informations nécessaires sont fournies :#!/bin/bash curl -o setup_agent.sh https://setup.instana.io/agent chmod 700 ./setup_agent.sh sudo ./setup_agent.sh -y -a <your-agent-key> -m aws -t dynamic -e <location> -sLancez une machine virtuelle EC2 dédiée et utilisez le script copié comme
User Data. Pour plus d'informations sur la manière d'utiliserUser Datasur EC2, consultez la documentation Exécution de commandes sur votre Linux instance au lancement.Copiez les configurations dans le bloc de code de la rubrique Rôles IAM dans un
IAM_permission.jsonfichier. Ces configurations sont utilisées pour le rôle IAM requis pour la machine EC2 virtuelle qui exécute l'agent AWS Instana et permettent à AWS l'agent de détecter et de surveiller vos AWS ressources. Ensuite, créez un rôle IAM à l'aide duIAM_permission.jsonfichier. Pour plus d'informations, consultez la section Création d'un rôle pour déléguer des autorisations à un utilisateur IAM.Pour que le rôle IAM puisse effectuer
AssumedRolel'action, modifiez leTrust Relationshipcomme suit (affiché sous la formetrust_relationship.jsondans l'interface utilisateur Instana) :{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Si l'agent s'exécute sur une EC2 machine sans accès à Internet, modifiez le
Trust Relationshipcomme suit :{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com.cn" }, "Action": "sts:AssumeRole" } ] }Pour les configurations supplémentaires nécessaires, consultez la section Configuration du point de terminaison régional STS.
Installation sur Fargate sur ECS
Vous pouvez installer AWS l'agent sur Windows ou Linux sur Fargate sur ECS.
Cliquez sur Plus > Agents > Installer des agents > AWS dans l'interface utilisateur Instana.
Dans la liste Technologie, sélectionnez Capteur Instana AWS.
Dans la liste Exécuter votre AWS agent sur, sélectionnez Elastic Container Service (ECS).
Le JSON d'une définition de tâche est pré-généré pour vous dans le modèle JSON de définition de tâche. Téléchargez le fichier JSON et utilisez-le avec les fonctions Configurer à l'aide de JSON de l'interface utilisateur Définition de tâche.
Téléchargez le fichier JSON des autorisations IAM et attribuez à la nouvelle définition de tâche un rôle IAM qui contient au moins les autorisations répertoriées dans le fichier JSON téléchargé.
Créez un service ECS avec une instance de la nouvelle définition de tâche.
Configuration
Installation hors de votre infrastructure AWS
Vous pouvez également désigner n'importe quel agent qui fonctionne en dehors de votre AWS infrastructure. Pour atteindre cet objectif, vous devez spécifier les variables d'environnement suivantes dans le setenv fichier :
- Sous Linux :
/opt/instana/agent/bin/setenv - Sous Windows :
C:\Program Files\Instana\instana-agent\bin\setenv - La région que vous souhaitez surveiller :
INSTANA_AWS_REGION_CONFIG= - Les données d'identification permettant d'accéder aux ressources AWS. Ces informations d'identification doivent appartenir à un utilisateur autorisé à accéder aux ressources déjà décrites dans la section Amazon Web Services Configuration IAM.
AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY=
Configuration de proxy
Par vos variables d'environnement
Pour configurer le AWS capteur afin qu'il utilise une configuration proxy, spécifiez les variables d'environnement suivantes dans le *instanaAgentDir*/bin/setenv:
export HTTP_PROXY=
export HTTPS_PROXY=
Vous trouverez plus d'informations sur le HTTP proxy en cliquant sur le lien.
Par l'agent configuration.yaml
Pour configurer AWS l'agent afin qu'il utilise la configuration proxy, ajoutez les paramètres de configuration suivants :
com.instana.plugin.aws:
proxy_host: 'example.com' # proxy host name or ip address
proxy_port: 3128 # proxy port
proxy_protocol: 'HTTP' # proxy protocol: HTTP or HTTPS
proxy_username: 'username' # OPTIONAL: proxy username
proxy_password: 'password' # OPTIONAL: proxy password
tagging: # proxy setup for AWS Tagging API, used for AWS resource monitoring filtering
proxy_host: 'example.com' # proxy host name or ip address
proxy_port: 3128 # proxy port
proxy_protocol: 'HTTP' # proxy protocol: HTTP or HTTPS
proxy_username: 'username' # OPTIONAL: proxy username
proxy_password: 'password' # OPTIONAL: proxy password
Les paramètres de proxy peuvent également être configurés au niveau de chaque AWS capteur individuel. Dans ce cas, la configuration globale mentionnée précédemment est remplacée par la configuration spécifique AWS du capteur. Pour plus d'informations, consultez la documentation spécifique AWS au capteur.
Définition du point de terminaison régional STS
Par défaut, l'agent Instana contacte le point de terminaison STS global à partir de EC2 l'instance afin de recueillir les informations d'identification du profil de l'instance. Cependant, si l'agent hôte Instana s'exécute sur une EC2 machine sans accès à Internet (par exemple, dans les régions chinoises), le point de terminaison de la région STS doit être affiché comme une variable d'environnement, ce qui indique à l'agent Instana d'utiliser les points de terminaison STS régionaux.
Une fois l'agent Instana installé, spécifiez la variable d'environnement suivante dans le *instanaAgentDir*/bin/setenv:
export AWS_STS_REGIONAL_ENDPOINTS=regional
Activer la surveillance de services spécifiques
Pour chaque service, vous devez ajouter les autorisations nécessaires sur les pages individuelles des services, accessibles via les liens de la section Services surveillés. Pour exclure un service de la surveillance, omettez les droits correspondants.
Une autre façon d'exclure un service de la surveillance consiste à ajouter le drapeau appropriate-enabled_ dans <agent_install_dir>/etc/instana/configuration.yml comme décrit dans les pages individuelles suivantes consacrées aux services.
Surveillance de plusieurs comptes AWS
L'agent AWS prend en charge les services de monitoring de plusieurs comptes AWS situés dans la même région. Actuellement, il existe deux approches : l'utilisation de AWS profils nommés et l'utilisation du AWS Service de jetons de sécurité (STS).
Approche des profils nommés AWS
Pour surveiller plusieurs comptes, vous devez définir des profils nommés de la même manière que vous le feriez avec l' AWS interface CLI ou en créant le fichier manuellement. Le .aws/credentials fichier doit être créé dans le répertoire personnel de l'utilisateur qui exécute l'agent Instana, qui est généralement root. La AWS CLI utilise les fichiers d'informations ~/.aws/credentials d'identification comme suit :
[default]
aws_access_key_id = accessKey1
aws_secret_access_key = secretAccessKey1
[profile2]
aws_access_key_id = accessKey2
aws_secret_access_key = secretAccessKey2
[profile3]
aws_access_key_id = accessKey3
aws_secret_access_key = secretAccessKey3
Chaque profil représente le mappage entre le profil nommé AWS et les données d'identification d'accès à AWS. Lors de l'installation d'un AWS agent, un defaultAWS profil est créé. Il n'est pas nécessaire d'ajouter le default profil au ~/.aws/credentials fichier.
Les profils supplémentaires que doit utiliser l'agent AWS sont à indiquer dans le fichier de configuration de l'agent /opt/instana/agent/etc/instana/configuration.yaml comme suit :
com.instana.plugin.aws:
profile_names:
- 'profile2'
- 'profile3'
Remarques :
- La surveillance de plusieurs AWS comptes peut également être spécifiée pour des services AWS particuliers dans leur configuration spécifique. La liste des profils spécifiés pour un service particulier remplace les configurations générales.
- Veillez à suivre les recommandations concernant la création du fichier d'identifiants.
Pour éviter toute menace pour la sécurité, vous devez soit définir des règles plus strictes pour EC2 l'instance, soit créer un utilisateur AWS Instana distinct et éviter ainsi d'ajouter les identifiants de sécurité de l'utilisateur root au fichier ~/.aws/credentials .
Approche AWS STS
Cette approche utilise l'API de service AWS STS pour obtenir des données d'identification permettant l'accès à tous les comptes AWS supplémentaires qui doivent être surveillés par l'agent Instana. Une fois l'agent installé et configuré pour surveiller le compte par défaut, en suivant les étapes décrites dans la Installation section, vous devez fournir les ARN des rôles IAM de tous les comptes AWS supplémentaires, de la manière suivante :
com.instana.plugin.aws:
role_arns:
- 'arn:aws:iam::<account_2_id>:role/<role_2_name>'
- 'arn:aws:iam::<account_3_id>:role/<role_3_name>'
Chaque rôle, correspondant à l'ARN spécifié, doit également comprendre les autorisations IAM nécessaires à la AWS surveillance Instana. Ainsi, chaque rôle doit autoriser le compte par défaut à effectuer sts:AssumeRole en spécifiant la Trust relationship politique de la manière suivante :
Si l'action sts:AssumeRole est effectuée à partir du contexte utilisateur AWS, lorsque l'agent est installé en dehors de votre infrastructure AWS
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<default_account_id>:user/<default_account_username>" }, "Action": "sts:AssumeRole" } ] }Si l'action sts:AssumeRole est effectuée à partir du contexte de rôle IAM, lorsque l'agent est installé sur EC2 :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<default_account_id>:role/<default_account_IAM_role_name>" }, "Action": "sts:AssumeRole" } ] }De même, le compte par défaut devrait également être autorisé à effectuer sts:AssumeRole toutes les opérations sur les comptes supplémentaires. Pour ce faire, vous pouvez spécifier des politiques IAM supplémentaires dans le rôle IAM utilisé pour la surveillance Instana, de la manière suivante :
{ "Version": "2012-10-17", "Statement": [ { #Instana monitoring policy specifications }, { "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::<account_1_id>:role/<role_1_name>", "Effect": "Allow" }, { "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::<account_2_id>:role/<role_2_name>", "Effect": "Allow" } ] }
Filtrage et balisage
tag:GetResources doit être incluse dans les autorisations IAM accordées à AWS l'agent.Une fois que vous avez activé la surveillance d'un service, il est possible de filtrer les instances que Instana surveillera en fonction AWS des balises, en modifiant le fichier /opt/instana/agent/etc/instana/configuration.yaml de configuration de AWS l'agent.
Les options disponibles dans le fichier de configuration sont les suivantes :
com.instana.plugin.aws:
# Comma-separated list of tags in key:value format.
# Any AWS resource containing at least one of the specified tags is discovered.
include_tags: ...
# Comma-separated list of tags in key:value format.
# Any AWS resource containing at least one of the specified tags is omitted from discovery.
exclude_tags: ...
# Exclude untagged AWS resources by setting the flag to `false`
include_untagged: ...
Plusieurs balises séparées par des virgules peuvent être définies. Les balises doivent être des paires clé-valeur séparées par :. Lorsque vous définissez des balises dans les deux listes (inclure et exclure), la liste d'exclusion a la priorité. Si aucun service de filtrage n'est nécessaire, la configuration ne doit pas être définie.
L'agent Instana surveille automatiquement toutes AWS les ressources qui n'ont pas de balises attribuées. {: note} Pour exclure les ressources non balisées de la surveillance, définissez le include_untagged drapeau sur false.
Le filtrage peut également être configuré sur le niveau de service. Dans ce cas, la configuration par défaut est remplacée pour le service concerné. Pour plus d'informations sur le filtrage des découvertes par service spécifique, consultez la documentation relative au service concerné.
Taux d'interrogation des balises
Pour spécifier la fréquence à laquelle AWS l'agent interroge le AWS service surveillé afin d'obtenir les balises associées, utilisez la propriété tagged-services-poll-rate de configuration. La valeur par défaut est 300 secondes. L'agent utilise AWS le service client pour interroger les balises.
La configuration du taux d'interrogation des ressources balisées est la suivante :
com.instana.plugin.aws:
tagged-services-poll-rate: 60 #default 300
Intervalle d'interrogation
L'intervalle d'interrogation indique la fréquence à laquelle AWS l'agent appelle CloudWatch l'API. Il est configurable en tant que cloudwatch_period dans le configuration.yml fichier. La valeur par défaut est 300 secondes. Il est très courant que les plateformes de surveillance utilisent une valeur comprise entre 5 et 10 minutes.
La fréquence d'interrogation est configurable à deux niveaux :
Au niveau de l'agent pour tous les services AWS surveillés par l'agent :
com.instana.plugin.aws: cloudwatch_period: 300Par service AWS :
com.instana.plugin.aws.rds: cloudwatch_period: 300
La configuration par service unique remplace la configuration au niveau de l'agent.
Coûts liés à CloudWatch
Pour fournir des informations sur vos services AWS, les plateformes de monitoring comme Instana doivent utiliser l'API CloudWatch. Cette API est fournie par AWS avec une tarification basée sur la consommation, et l'objectif de cette documentation est d'apporter de la transparence sur la manière dont Instana utilise CloudWatch l'API afin que les utilisateurs puissent comprendre l'impact sur leur AWS facture.
Les coûts liés à CloudWatch sont déterminés par :
- Nombre d'instances surveillées de services AWS
- Nombre de métriques collectées par AWS agent
- Intervalle d'interrogation (configurable)
Chaque AWS agent appelle la GetMetricDataCloudWatch requête API pour la collecte des métriques, et en cas d'échec, GetMetricStatistics est appelé en guise de solution de secours. Les deux points de terminaison entraînent les mêmes coûts par métrique (notez que l'utilisation de secours de GetMetricStatistics n'entraîne aucun coût supplémentaire). Vous trouverez plus de détails à ce sujet sur la page AWSCloudWatch des tarifs.
Le tableau suivant contient une estimation approximative des coûts quotidiens pour différents AWS agents lorsque l'intervalle d'interrogation est de 5 minutes et que les frais Amazon sont de $ 0.01 pour 1 000 CloudWatch métriques :
| Capteur AWS | Nombre de mesures | Coût quotidien par instance | Important |
|---|---|---|---|
| API Gateway | 5 - 11 | $0.0144 - $0.0317 | Le nombre de métriques dépend du protocole API. |
| AppSync | 18 | $0.0518 | |
| mise à l'échelle automatique | 13 | $0.0374 | |
| Beanstalk | 31 | $0.0893 | |
| CloudFront | 13 | $0.0374 | Le nombre de métriques dépend du nombre de fonctions associées. Par exemple, le tableau indique une fonction associée pour la distribution surveillée. |
| DynamoDB | 71 | $0.2045 | |
| EBS | 9 | $0.0230 | |
| ElastiCache | 25 - 39 | $0.0720 - $0.1123 | Le nombre de métriques dépend du moteur utilisé. |
| OpenSearch | 12 | $0.0346 | |
| Equilibreur de charge élastique | 5 à 15 | $0.0144 - $0.0432 | Le nombre de métriques dépend du type d'équilibreur de charge et du nombre de zones de disponibilité. |
| dossier médical électronique | 30 | $0.0432 | |
| IoT Noyau | 23 | $0.0662 | |
| Kinesis | 16 | $0.0461 | |
| Lambda | 21 | $0.0605 | |
| MQ | 22 | $0.0634 | |
| Memorial Sloan Kettering | 37 | $0.0844 | Le nombre de métriques dépend du nombre de brokers au sein d'un cluster. Par exemple, le tableau montre qu'un courtier est surveillé. |
| RDS | 18 | $0.0518 | |
| Redshift | 17 | $0.0490 | Le nombre de métriques dépend du nombre de nœuds dans un cluster. Par exemple, le tableau montre qu'un nœud est surveillé. |
| S3 | 13 | $0.0374 | |
| SNS | 7 | $0.0202 | |
| SQS | 9 | $0.0230 | |
| Flux temporel | 9 | $0.0230 |
Notez que les ne CloudWatch sont pas utilisés pour EC2 et pour les balises de sondage, il n'y a donc aucun CloudWatch coût associé à cela.
Vous pouvez réduire les coûts de CloudWatch en augmentant la fréquence d'interrogation. L'inconvénient de l'augmentation de l'intervalle d'interrogation est que vous réduisez la granularité des mesures de CloudWatch. Chaque requête fournit une seule valeur métrique, donc la différence entre un intervalle d'interrogation de 60s et 300s est de cinq valeurs métriques ou une valeur métrique pour une 300s période de.
C'est à vous de déterminer si l'intervalle d'interrogation par défaut convient à votre entreprise ou s'il faut le personnaliser afin de trouver le juste équilibre entre le coût et la qualité des informations.
Traitement des incidents
Échec de la surveillance AWS des services dans les environnements isolés
Si l'agent hôte Instana s'exécute sur une EC2 machine qui ne dispose pas d'accès à Internet, l'agent ne pourra pas accéder aux API publiques des AWS services et ne pourra donc pas surveiller les services AWS pris en charge.
PrivateLinkAWS fournit un accès privé à des services hébergés de AWS manière hautement disponible et évolutive, sans avoir besoin d'utiliser des adresses IP publiques et sans que le trafic ait besoin de transiter par Internet.
Pour utiliser, AWSPrivateLink, créez un point de terminaison VPC pour tous AWS les services qui doivent être surveillés. Le point de terminaison VPC fournit une interface réseau élastique dans votre sous-réseau avec une adresse IP privée à l'API AWS de service qui peut être utilisée par l'agent hôte Instana.