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.

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 :

Remarque : En raison de la nature de l'API AWS CloudWatch, un délai d'extraction de métriques est à prévoir. Les valeurs affichées pour les mesures sont également retardées pour garantir leur cohérence. Ce délai dépend du service AWS utilisé et de la disponibilité des données, mais il est généralement d'environ 10 minutes.

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_MEM sur 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éfinir AGENT_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.

Remarque : si vous installez AWS l'agent sous Windows, même si la machine Windows est hébergée dans AWS, vous devez tout de même effectuer les configurations décrites dans la section Installation en dehors de votre AWS infrastructure.
  1. Cliquez sur Plus > Agents > Installer des agents > AWS dans l'interface utilisateur Instana.

  2. Dans la liste Technologie, sélectionnez Capteur Instana AWS.

  3. 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 Data sur 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> -s
     
  4. Lancez une machine virtuelle EC2 dédiée et utilisez le script copié comme User Data. Pour plus d'informations sur la manière d'utiliser User Data sur EC2, consultez la documentation Exécution de commandes sur votre Linux instance au lancement.

  5. Copiez les configurations dans le bloc de code de la rubrique Rôles IAM dans un IAM_permission.json fichier. 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 du IAM_permission.json fichier. Pour plus d'informations, consultez la section Création d'un rôle pour déléguer des autorisations à un utilisateur IAM.

  6. Pour que le rôle IAM puisse effectuer AssumedRole l'action, modifiez le Trust Relationship comme suit (affiché sous la forme trust_relationship.json dans 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 Relationship comme 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.

Remarque : si vous installez AWS l'agent sous Windows, même si la machine Windows est hébergée dans AWS, vous devez tout de même effectuer les configurations décrites dans la section Installation en dehors de votre AWS infrastructure.
  1. Cliquez sur Plus > Agents > Installer des agents > AWS dans l'interface utilisateur Instana.

  2. Dans la liste Technologie, sélectionnez Capteur Instana AWS.

  3. 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.

  4. 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é.

  5. 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=
 
Remarque : les deux variables d'environnement doivent être définies. Une fois défini, l'agent Instana doit être redémarré pour que les modifications prennent effet.

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).

Remarque : lorsque vous configurez l'agent Instana pour surveiller plusieurs AWS comptes, seule l'une des deux approches disponibles doit être utilisée.

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>'
 
Remarque : 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 rôles IAM spécifiés pour un service particulier remplace les configurations générales.

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 :

  1. 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"
        }
      ]
    }
     
  2. 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

Remarque : pour activer le filtrage, l'autorisation IAM 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: 300
     
  • Par 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.

Remarque : pour l 'API de balisage AWS des groupes de ressources, qui est utilisée par l'agent hôte Instana pour fournir des fonctions de filtrage et de balisage, aucun point de terminaison VPC ne peut être utilisé, et cette API n'est accessible que via une adresse IP publique. Une des solutions possibles consiste à configurer un proxy pour rendre l'API de balisage AWS des groupes de ressources accessible à l'agent hôte Instana.