Monitoring AWS EC2 à l'aide de Metricbeat et d'Elasticsearch | Elastic Blog
Technique

Monitoring AWS EC2 à l'aide de Metricbeat

À partir de la version 7.0, nous avons présenté un nouveau module dans Metricbeat pour monitorer Amazon Web Services. Au moment de la sortie initiale dans 7.0.0-beta1, ce module AWS permet de collecter des indicateurs de monitoring AWS EC2 depuis Cloudwatch et de les stocker dans un ensemble d’indicateurs appelé EC2. Ces indicateurs offrent une visibilité dans toutes les instances EC2 dans toutes les régions sans avoir besoin d'installer Metricbeat directement sur les instances.

Contexte

Les instances Amazon Elastic Compute Cloud (EC2) sont des serveurs virtuels créés sur la plateforme AWS pour fournir aux utilisateurs une capacité de calcul sécurisée et redimensionnable dans le cloud public. EC2 est probablement le service le plus crucial parmi la centaine de services proposés par AWS, car pratiquement tout le monde a besoin d'un accès à des ressources de calcul brutes.

Monitorer les instances EC2 de façon centralisée pour aider les utilisateurs à détecter et à déboguer les problèmes est difficile. Metricbeat peut d'ores et déjà collecter des indicateurs de ressources détaillés à l'aide du module system, mais cela nécessite d'installer une instance Metricbeat sur chacune de vos instances EC2. Même si les indicateurs qu'il collecte sont très détaillés et granulaires, parfois tout ce que l'on souhaite c'est un moyen rapide d'obtenir de la visibilité dans l'utilisation des ressources de toutes nos instances EC2 à un niveau élevé.

C'est là où Cloudwatch AWS intervient. Cloudwatch collecte et centralise automatiquement des indicateurs d'utilisation des ressources de base depuis toutes vos instances EC2. Ces données sont collectées à une granularité de 5 minutes par défaut et vous pouvez souscrire à un monitoring détaillé pour obtenir une granularité plus élevée et des indicateurs plus avancés.

Configuration de Metricbeat AWS

Avant de commencer à utiliser Metricbeat, vous devez avoir une Suite Elastic fonctionnelle, qui comprend Elasticsearch pour le stockage et l'indexation des données et Kibana pour l'exploration des données. Pour ce faire, vous pouvez créer un cluster dans Elasticsearch Service sur Elastic Cloud ou configurer la Suite Elastic sur votre ordinateur local.

Une fois que vous avez chargé Kibana, vous pouvez naviguer vers l'interface utilisateur Add Data depuis la page principale et y suivre les instructions de configuration du module AWS.

Déploiement de Metricbeat pour AWS EC2

Ce blog vous renseignera avec plus de détails ci-dessous.

Activation du module AWS

Dans la configuration toute prête de Metricbeat, seul le module system est activé par défaut, vous devrez donc activer explicitement le module AWS. La commande suivante active la configuration AWS dans le répertoire de modules.d sur les systèmes macOS et Linux :

./metricbeat modules enable aws

Définition des informations d'identification dans le fichier de configuration

Il y a deux sortes d'informations d'identification AWS pouvant être utilisées : les clés d'accès et les informations d'identification de sécurité temporaires. Les clés d'accès sont constituées des ID de clé d'accès et des clés d'accès secrètes. Ce sont des informations d'identification à long terme pour qu'un utilisateur IAM ou un utilisateur racine du compte AWS puissent s'authentifier lorsqu'ils passent des appels API AWS. Les informations d'identification de sécurité temporaire consistent en un ID de clé d'accès, une clé d'accès secrète et un token de sécurité, qui ont une durée de vie limitée.

Comme les informations d'identification de sécurité temporaires sont à court terme, une fois qu'elles ont expiré, vous devez en générer de nouvelles et modifier le fichier de configuration modules.d/aws.yml avec les nouvelles informations d'identification. À moins que la fonctionnalité live reloading soit activée pour Metricbeat, vous devez redémarrer manuellement Metricbeat après avoir mis à jour le fichier config. Cela entraînera l'arrêt de la collecte de données, à moins que le fichier de configuration soit mis à jour avec les nouvelles informations d'identification avant que les anciennes arrivent à expiration. Par conséquent, pour Metricbeat, nous vous conseillons d'utiliser les clés d'accès dans le fichier de configuration pour activer le module AWS passant les appels API AWS sans avoir à générer de nouvelles informations d'identification temporaires et de mettre à jour le fichier de configuration régulièrement.

Création d'une politique IAM

Une politique IAM est une entité qui définit les permissions envers un objet au sein de votre environnement AWS. Il est nécessaire de créer une politique IAM personnalisée pour Metricbeat avec des permissions spécifiques. N'hésitez pas à consulter Création de politiques IAM pour plus de détails. Une fois que la politique IAM Metricbeat est créée, vous devez l'ajouter à l'utilisation IAM qui a fourni les informations d'identification lors de l'étape précédente.

Lorsque l'ensemble d'indicateurs EC2 est défini, vous devez ajouter quatre permissions dans la politique IAM Metricbeat :

  • ec2:DescribeRegions
  • ec2:DescribeInstances
  • cloudwatch:ListMetrics
  • cloudwatch:GetMetricData

Démarrage de Metricbeat

Utilisation sur les systèmes Mac et Linux à titre d'exemple :

./metricbeat -E setup.dashboards.enabled=true -e

Remarque : si vous faites fonctionner Metricbeat depuis une machine virtuelle dans une instance de cloud, comme GCP, AWS ou Azure, il vous faut retirer ou commenter l'entrée add_cloud_metadata dans metricbeat.yml.

Une fois que l'ensemble d'indicateurs EC2 est activé dans Metricbeat avec des informations d'identification AWS appropriées, Metricbeat récupère régulièrement des informations à propos de chaque instance et collecte des indicateurs de monitoring EC2 depuis Cloudwatch AWS. La période de collecte par défaut de l'ensemble d'indicateurs EC2 est de 300 secondes. Si le monitoring détaillé des instances est activé, la période de collecte d'ensemble d'indicateurs EC2 devrait être changée à 60 secondes, puisqu'un niveau payant fournit une collecte d'indicateurs avec une granularité plus élevée. La période de collecte est définie dans le fichier modules.d/aws.yml, par exemple :

- module: aws
  period: 60s
  metricsets:
    - "ec2"
  access_key_id: '${AWS_ACCESS_KEY_ID:""}'
  secret_access_key: '${AWS_SECRET_ACCESS_KEY:""}'
  session_token: '${AWS_SESSION_TOKEN:""}'
  default_region: '${AWS_REGION:us-west-1}'

L'ensemble d'indicateurs EC2 découvre automatiquement de nouvelles instances et commence à y collecter des indicateurs. Si une instance EC2 est interrompue ou arrêtée, l'ensemble d'indicateurs EC2 découvre le changement d'état de l'instance dans le prochain cycle de collecte et envoie le nouvel indicateur d'état à Elasticsearch.

Utilisation du tableau de bord de module AWS Kibana

L'ensemble d'indicateurs EC2 comprend un tableau de bord prédéfini appelé [Metricbeat AWS] EC2 Overview. En lançant la commande de configuration lorsque vous avez démarré Metricbeat, vous avez automatiquement défini ces tableaux de bord dans Kibana. Pour plus d'informations à ce sujet, n'hésitez pas à consulter Configurer les tableaux de bord Kibana.

Ce tableau de bord est un aperçu des instances EC2 AWS. Il montre l'état et les vérifications de statut des instances ainsi que l'utilisation du CPU, du réseau et des données E/S du disque. Il y a également des filtres que vous pouvez appliquer pour réduire les données précisément à une région, une zone de disponibilité ou un type de machine.

Tableau de bord Kibana pour EC2 AWS

Avec ce tableau de bord, vous pouvez détecter des problèmes et vous assurer que chaque instance est optimisée pour l'utilisation. Par exemple, si vous voyez continuellement une utilisation élevée du CPU et des problèmes de performance pour la même instance, cela peut indiquer que le CPU est le goulot d'étranglement et que cette instance a besoin de plus de puissance de CPU. En outre, si vous voyez une instance avec une faible utilisation du CPU pour une longue période, cela signifie que l'instance est surdimensionnée par rapport au CPU et peut être réduite ou consolidée avec une autre instance.

Et ensuite ?

Avoir un endroit centralisé pour visualiser des indicateurs de monitoring depuis différents services et différentes régions AWS vous permet d'optimiser l'utilisation des ressources, de détecter et de réparer des problèmes plus rapidement. Faites un essai, dites-nous ce que vous en pensez, envoyez-nous vos commentaires et dites-nous comment vous l'utilisez dans notre forum Beats.

L'ensemble d'indicateurs EC2 dans le module AWS n'est que le début ! Nous travaillons déjà d'arrache-pied pour ajouter d'autres ensembles d'indicateurs pour monitorer d'autres services communément utilisés, comme Amazon S3, SQS, RDS et bien plus encore. Si vous avez une idée de ce que nous devons faire ensuite ou si vous souhaitez contribuer, n'hésitez pas à participer dans le référentiel Beats GitHub !