Comment envoyer des métriques personnalisées dans CloudWatch ?

Date de la dernière mise à jour : 2021-06-21

Comment puis-je transférer des mesures personnalisées dans Amazon CloudWatch ?

Brève description

Par défaut, les services AWS transfèrent les points de données dans CloudWatch. Toutefois, dans certains cas, vous devez étalonner les performances de vos ressources en fonction de métriques qui ne sont pas prises en charge par les services AWS. Dans ces cas-là, vous pouvez transférer des métriques personnalisées dans CloudWatch à l'aide de l'agent CloudWatch unifié ou de l'API.

Important : les métriques personnalisées sont facturées en fonction de leur stockage et de leur utilisation de l'API.

Solution

Transférer des métriques personnalisées à l'aide de l'agent CloudWatch

L'agent CloudWatch unifié collecte des métriques au niveau du système et les envoie à CloudWatch sous forme de métriques personnalisées. Vous pouvez utiliser l'agent pour transférer des métriques personnalisées depuis :

  • Des serveurs Linux ou Windows
  • Des instances Amazon Elastic Compute Cloud (Amazon EC2) ou des serveurs sur site

Pour Linux, reportez-vous à la liste des métriques prises en charge.

Exemple de fichier de configuration de l'agent du bloc des métriques pour les métriques de disque (Linux) :

"disk": 
    {
        "measurement": [
          
          "used_percent"
        ],
        "resources": [
          
          "*"
        ],
        "drop_device": 
        true
      }

Pour Windows, vous pouvez référencer n'importe quel compteur mentionné dans le fichier de configuration d'agent de Windows Performance Monitor.

Exemple de fichier de configuration de l'agent du bloc des métriques pour Processor Counter (Windows) :

"Processor": {
        "measurement": [
          {"name": "% Idle Time", "rename": "CPU_IDLE", "unit": "Percent"},
          "% Interrupt Time",
          "% User Time",
          "% Processor Time"
        ],
        "resources": [
          "*"
        ],
        "append_dimensions": {
          "d1": "win_foo",
          "d2": "win_bar"
        }
      }

Vous pouvez également utiliser les protocoles « StatsD » et « collectd » pour récupérer des métriques personnalisées de vos applications ou services. Ces métriques sont ensuite transférées via l'agent. StatSD est pris en charge sur les serveurs Linux et Windows. Collectd est pris en charge uniquement sur les serveurs Linux. Pour utiliser ces protocoles :

1.    Installez l'agent CloudWatch unifié.

2.    Attribuez un rôle ou des informations d'identification à l'instance avec des autorisations CloudWatch.

3.    Créez le fichier de configuration de l'agent CloudWatch.

4.    Démarrez l'agent.

Transférer des métriques personnalisées à l'aide de PutMetricData

Si votre cas d'utilisation ne prend pas en charge l'utilisation de l'agent CloudWatch unifié, vous pouvez utiliser l'API PutMetricData pour transférer des métriques personnalisées dans CloudWatch.

Par exemple, pour transférer des connexions pour un port spécifique en tant que mesure personnalisée, vous pouvez récupérer les valeurs localement et les transférer dans l'API :

total_conn=$(netstat -an | grep <port> | wc -l) 

aws cloudwatch put-metric-data   --namespace "totalconn"   --metric-name <port> --dimensions Instance=<InstanceId> --value $  total_conn

De même, vous pouvez utiliser les kits SDK AWS pour utiliser l'API PutMetricData et envoyer des métriques personnalisées dans CloudWatch. Créez un script local qui s'exécute périodiquement pour envoyer des métriques personnalisées. L'API convient parfaitement au transfert de différentes métriques et de plusieurs valeurs pour les raisons suivantes :

  • Vous pouvez utiliser jusqu'à vingt métriques différentes dans une seule API.
  • À l'aide de la méthode de valeurs et de décomptes, vous pouvez publier jusqu'à 150 valeurs par métrique avec une seule requête PutMetricData.
  • Vous pouvez utiliser jusqu'à dix dimensions par métrique.
  • Chaque requête PutMetricData est limitée à 40 Ko pour les requêtes HTTP POST.

Par exemple, au lieu de passer un appel d'API distinct pour chaque métrique, vous pouvez envoyer plusieurs métriques à l'aide d'un seul appel d'API :

aws cloudwatch put-metric-data --namespace "Usage Metrics" --metric-data file://metric.json

lorsque metric.json  est:

[
  {
    "MetricName": "DiskMetric",
    "Value": <value_derived_by_some_calculation>,
    "Unit": "Count"
  },
  {
    "MetricName": "MemoryMetric",
    
    "Value": <value_derived_by_some_calculation>,
    "Unit": "Count"
  }
]

Cette approche réduit généralement les coûts car les métriques personnalisées sont facturées en fonction du nombre d'API et du stockage. Cette approche peut également contribuer à réduire la limitation de l'API PutMetricData.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?