Publication de métriques personnalisées Amazon CloudWatch pour un environnement - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Publication de métriques personnalisées Amazon CloudWatch pour un environnement

Vous pouvez publier les données recueillies par la création de rapports d'intégrité améliorée AWS Elastic Beanstalk sur Amazon CloudWatch en tant que métriques personnalisées. La publication de métriques dans CloudWatch vous permet de surveiller les changements de performances des applications sur la durée et d'identifier les éventuels problèmes en suivant l'évolution de la latence des demandes et de l'utilisation des ressources en fonction de la charge.

En publiant des métriques dans CloudWatch, vous les rendez également disponibles pour une utilisation avec les graphiques de surveillance et les alarmes. Une métrique gratuite, EnvironmentHealth, est activée automatiquement lorsque vous utilisez la création de rapports améliorés sur l'état. Les métriques personnalisées autres que EnvironmentHealth impliquent des frais CloudWatch standard.

Pour publier des métriques personnalisées CloudWatch pour un environnement, vous devez commencer par activer les rapports améliorés sur l'état dans l'environnement. Pour obtenir des instructions, consultez Activation des rapports améliorés sur l'état Elastic Beanstalk.

Métriques de création de rapports d'intégrité améliorés

Lorsque vous activez les rapports améliorés sur l'état dans votre environnement, le système de génération de rapports améliorés sur l'état publie automatiquement une métrique personnalisée CloudWatch, EnvironmentHealth. Pour publier des métriques supplémentaires dans CloudWatch, configurez votre environnement avec ces métriques à l'aide de la console Elastic Beanstalk, de l'interface de ligne de commande EB ou du fichier .ebextensions.

Vous pouvez publier les métriques d'état améliorées suivantes à partir de votre environnement dans CloudWatch.

Métriques disponibles (toutes les plateformes)
EnvironmentHealth

Environnement uniquement. Il s'agit de la seule métrique CloudWatch publiée par le système de génération de rapports améliorés sur l'état, sauf si vous configurez des métriques supplémentaires. L'état de l'environnement est représentée par un des sept statuts. Dans la console CloudWatch, ces statuts sont mappés aux valeurs suivantes :

  • 0 – OK

  • 1 – Info

  • 5 – Inconnu

  • 10 – Pas de données

  • 15 – Avertissement

  • 20 – Dégradé

  • 25 – Grave

InstancesSevere
InstancesDegraded
InstancesWarning
InstancesInfo
InstancesOk
InstancesPending
InstancesUnknown
InstancesNoData

Environnement uniquement. Ces métriques indiquent le nombre d'instances dans les environnement avec chaque état de santé. InstancesNoData indique le nombre d'instances pour lesquelles aucune donnée ne sera reçue.

ApplicationRequestsTotal
ApplicationRequests5xx
ApplicationRequests4xx
ApplicationRequests3xx
ApplicationRequests2xx

Instance et environnement. Indique le nombre total de requêtes terminées par l'instance ou l'environnement et le nombre de requêtes ayant abouti avec chaque catégorie de code d'état.

ApplicationLatencyP10
ApplicationLatencyP50
ApplicationLatencyP75
ApplicationLatencyP85
ApplicationLatencyP90
ApplicationLatencyP95
ApplicationLatencyP99
ApplicationLatencyP99.9

Instance et environnement. Indique la quantité moyenne de temps, en secondes, nécessaire pour terminer le pourcentage x le plus rapide de requêtes.

InstanceHealth

Instance uniquement. Indique l'état d'intégrité actuel de l'instance. L'état d'instance est représentée par un statut (sur sept statuts au total). Dans la console CloudWatch, ces statuts sont mappés aux valeurs suivantes :

  • 0 – OK

  • 1 – Info

  • 5 – Inconnu

  • 10 – Pas de données

  • 15 – Avertissement

  • 20 – Dégradé

  • 25 – Grave

Métriques disponibles (Linux)
CPUIrq
CPUIdle
CPUUser
CPUSystem
CPUSoftirq
CPUIowait
CPUNice

Instance uniquement. Indique le pourcentage de temps que l'UC a passé dans chaque état au cours de la dernière minute.

LoadAverage1min

Instance uniquement. La charge d'UC moyenne de l'instance au cours de la dernière minute.

RootFilesystemUtil

Instance uniquement. Indique le pourcentage d'espace disque en cours d'utilisation.

Métriques disponibles (Windows)
CPUIdle
CPUUser
CPUPriveleged

Instance uniquement. Indique le pourcentage de temps que l'UC a passé dans chaque état au cours de la dernière minute.

Configuration des métriques CloudWatch à l'aide de la console Elastic Beanstalk

Vous pouvez utiliser la console Elastic Beanstalk pour configurer votre environnement afin de publier des métriques d'état améliorées dans CloudWatch et les rendre disponibles pour une utilisation avec des graphiques de surveillance et des alarmes.

Pour configurer des métriques personnalisées CloudWatch dans la console Elastic Beanstalk
  1. Ouvrez la console Elastic Beanstalk et, dans la liste Regions (Régions), sélectionnez votre Région AWS.

  2. Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.

    Note

    Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.

  3. Dans le panneau de navigation, choisissez Configuration.

  4. Dans la catégorie de configuration Monitoring (Surveillance), choisissez Edit (Modifier).

  5. Sous Health reporting (Rapport sur l'état de santé), sélectionnez les métriques d'instance et d'environnement que vous souhaitez publier dans CloudWatch. Pour sélectionner plusieurs métriques, appuyez sur la touche Ctrl tout en choisissant.

  6. Pour enregistrer les modifications, cliquez sur Appliquer en bas de la page.

L'activation des métriques personnalisées CloudWatch les ajoute à la liste des métriques disponibles sur la page Monitoring (Surveillance).

Configuration des métriques personnalisées CloudWatch à l'aide de l'interface de ligne de commande EB

Vous pouvez utiliser l'interface de ligne de commande EB pour configurer des métriques personnalisées en enregistrant la configuration de votre environnement en local, en ajoutant une entrée qui définit les métriques à publier, puis en chargeant la configuration dans Elastic Beanstalk. Vous pouvez appliquer la configuration enregistrée à un environnement pendant ou après la création.

Pour configurer des métriques personnalisées CloudWatch avec l'interface de ligne de commande EB et les configurations enregistrées
  1. Initialisez votre dossier de projet avec eb init.

  2. Créez un environnement en exécutant la commande eb create.

  3. Enregistrez un modèle de configuration localement en exécutant la commande eb config save. L'exemple suivant utilise l'option --cfg pour spécifier le nom de la configuration.

    $ eb config save --cfg 01-base-state Configuration saved at: ~/project/.elasticbeanstalk/saved_configs/01-base-state.cfg.yml
  4. Ouvrez le fichier de configuration enregistrée dans un éditeur de texte.

  5. Sous OptionSettings > aws:elasticbeanstalk:healthreporting:system:, ajoutez une clé ConfigDocument pour activer chacune des métriques CloudWatch de votre choix. Par exemple, le ConfigDocument suivant publie des métriques ApplicationRequests5xx et ApplicationRequests4xx au niveau de l'environnement et des métriques ApplicationRequestsTotal au niveau de l'instance.

    OptionSettings: ... aws:elasticbeanstalk:healthreporting:system: ConfigDocument: CloudWatchMetrics: Environment: ApplicationRequests5xx: 60 ApplicationRequests4xx: 60 Instance: ApplicationRequestsTotal: 60 Version: 1 SystemType: enhanced ...

    Dans l'exemple, 60 indique le nombre de secondes entre les mesures. C'est la seule valeur actuellement prise en charge.

    Note

    Vous pouvez combiner CloudWatchMetrics et Rules dans le même paramètre d'option ConfigDocument. Le paramètre Rules est décrit dans Configuration de règles d'intégrité améliorée pour un environnement.

    Si vous avez précédemment utilisé Rules pour configurer les règles d'intégrité améliorée, le fichier de configuration que vous récupérez à l'aide de la commande eb config save possède déjà une clé ConfigDocument avec une section Rules. Ne la supprimez pas : ajoutez une section CloudWatchMetrics dans la même valeur d'option ConfigDocument.

  6. Enregistrez le fichier de configuration et fermez l'éditeur de texte. Dans cet exemple, le fichier de configuration mis à jour est enregistré avec un nom qui est différent (02-cloudwatch-enabled.cfg.yml) de celui du fichier de configuration téléchargé. Cela crée une configuration enregistrée distincte lorsque le fichier est téléchargé. Vous pouvez utiliser le même nom que le fichier téléchargé pour remplacer la configuration existante sans en créer une.

  7. Utilisez la commande eb config put pour charger le fichier de configuration mis à jour dans Elastic Beanstalk.

    $ eb config put 02-cloudwatch-enabled

    Lorsque vous utilisez les commandes eb config get et put avec des configurations enregistrées, n'incluez pas l'extension de fichier.

  8. Appliquez la configuration enregistrée à votre environnement en cours d'exécution.

    $ eb config --cfg 02-cloudwatch-enabled

    L'option --cfg spécifie un fichier de configuration nommé qui est appliqué à l'environnement. Vous pouvez enregistrer le fichier de configuration en local ou dans Elastic Beanstalk. Si un fichier de configuration avec le nom spécifié existe dans les deux emplacements, l'interface de ligne de commande EB utilise le fichier local.

Fourniture des documents de configuration des métriques personnalisées

Le document de configuration pour les métriques personnalisées Amazon CloudWatch est un document JSON qui répertorie les métriques à publier aux niveaux de l'instance et de l'environnement. L'exemple suivant illustre un document de configuration qui active toutes les métriques personnalisées disponibles.

{ "CloudWatchMetrics": { "Environment": { "ApplicationLatencyP99.9": 60, "InstancesSevere": 60, "ApplicationLatencyP90": 60, "ApplicationLatencyP99": 60, "ApplicationLatencyP95": 60, "InstancesUnknown": 60, "ApplicationLatencyP85": 60, "InstancesInfo": 60, "ApplicationRequests2xx": 60, "InstancesDegraded": 60, "InstancesWarning": 60, "ApplicationLatencyP50": 60, "ApplicationRequestsTotal": 60, "InstancesNoData": 60, "InstancesPending": 60, "ApplicationLatencyP10": 60, "ApplicationRequests5xx": 60, "ApplicationLatencyP75": 60, "InstancesOk": 60, "ApplicationRequests3xx": 60, "ApplicationRequests4xx": 60 }, "Instance": { "ApplicationLatencyP99.9": 60, "ApplicationLatencyP90": 60, "ApplicationLatencyP99": 60, "ApplicationLatencyP95": 60, "ApplicationLatencyP85": 60, "CPUUser": 60, "ApplicationRequests2xx": 60, "CPUIdle": 60, "ApplicationLatencyP50": 60, "ApplicationRequestsTotal": 60, "RootFilesystemUtil": 60, "LoadAverage1min": 60, "CPUIrq": 60, "CPUNice": 60, "CPUIowait": 60, "ApplicationLatencyP10": 60, "LoadAverage5min": 60, "ApplicationRequests5xx": 60, "ApplicationLatencyP75": 60, "CPUSystem": 60, "ApplicationRequests3xx": 60, "ApplicationRequests4xx": 60, "InstanceHealth": 60, "CPUSoftirq": 60 } }, "Version": 1 }

Pour la AWS CLI, vous transmettez le document sous forme de valeur pour la clé Value dans un argument de paramètres d'option, qui est lui-même un objet JSON. Dans ce cas, vous devez utiliser des guillemets d'échappement dans le document intégré.

$ aws elasticbeanstalk validate-configuration-settings --application-name my-app --environment-name my-env --option-settings '[ { "Namespace": "aws:elasticbeanstalk:healthreporting:system", "OptionName": "ConfigDocument", "Value": "{\"CloudWatchMetrics\": {\"Environment\": {\"ApplicationLatencyP99.9\": 60,\"InstancesSevere\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"InstancesUnknown\": 60,\"ApplicationLatencyP85\": 60,\"InstancesInfo\": 60,\"ApplicationRequests2xx\": 60,\"InstancesDegraded\": 60,\"InstancesWarning\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"InstancesNoData\": 60,\"InstancesPending\": 60,\"ApplicationLatencyP10\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"InstancesOk\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60},\"Instance\": {\"ApplicationLatencyP99.9\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": 60,\"ApplicationLatencyP95\": 60,\"ApplicationLatencyP85\": 60,\"CPUUser\": 60,\"ApplicationRequests2xx\": 60,\"CPUIdle\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": 60,\"RootFilesystemUtil\": 60,\"LoadAverage1min\": 60,\"CPUIrq\": 60,\"CPUNice\": 60,\"CPUIowait\": 60,\"ApplicationLatencyP10\": 60,\"LoadAverage5min\": 60,\"ApplicationRequests5xx\": 60,\"ApplicationLatencyP75\": 60,\"CPUSystem\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": 60,\"InstanceHealth\": 60,\"CPUSoftirq\": 60}},\"Version\": 1}" } ]'

Pour un fichier de configuration .ebextensions au format YAML, vous pouvez fournir le document JSON en l'état.

option_settings: - namespace: aws:elasticbeanstalk:healthreporting:system option_name: ConfigDocument value: { "CloudWatchMetrics": { "Environment": { "ApplicationLatencyP99.9": 60, "InstancesSevere": 60, "ApplicationLatencyP90": 60, "ApplicationLatencyP99": 60, "ApplicationLatencyP95": 60, "InstancesUnknown": 60, "ApplicationLatencyP85": 60, "InstancesInfo": 60, "ApplicationRequests2xx": 60, "InstancesDegraded": 60, "InstancesWarning": 60, "ApplicationLatencyP50": 60, "ApplicationRequestsTotal": 60, "InstancesNoData": 60, "InstancesPending": 60, "ApplicationLatencyP10": 60, "ApplicationRequests5xx": 60, "ApplicationLatencyP75": 60, "InstancesOk": 60, "ApplicationRequests3xx": 60, "ApplicationRequests4xx": 60 }, "Instance": { "ApplicationLatencyP99.9": 60, "ApplicationLatencyP90": 60, "ApplicationLatencyP99": 60, "ApplicationLatencyP95": 60, "ApplicationLatencyP85": 60, "CPUUser": 60, "ApplicationRequests2xx": 60, "CPUIdle": 60, "ApplicationLatencyP50": 60, "ApplicationRequestsTotal": 60, "RootFilesystemUtil": 60, "LoadAverage1min": 60, "CPUIrq": 60, "CPUNice": 60, "CPUIowait": 60, "ApplicationLatencyP10": 60, "LoadAverage5min": 60, "ApplicationRequests5xx": 60, "ApplicationLatencyP75": 60, "CPUSystem": 60, "ApplicationRequests3xx": 60, "ApplicationRequests4xx": 60, "InstanceHealth": 60, "CPUSoftirq": 60 } }, "Version": 1 }