Collecter des métriques AWS CloudWatch à l'aide de l'exportateur Prometheus CloudWatch

Ce document explique comment utiliser l'exportateur Prometheus CloudWatch Open Source et l'Agent Ops exécuté sur une instance Compute Engine pour collecter des métriques AWS CloudWatch et les stocker dans un projet Google Cloud.

Ce document est destiné aux développeurs et aux administrateurs système qui doivent collecter des métriques AWS CloudWatch. Ce document explique comment configurer l'exportateur CloudWatch pour Prometheus afin de collecter des métriques AWS CloudWatch.

Avec Cloud Monitoring, vous pouvez afficher vos métriques AWS dans le même contexte que vos métriques Google Cloud . Par exemple, vous pouvez créer un tableau de bord avec des graphiques qui affichent l'utilisation du processeur pour vos instances Amazon EC2 et vos instances Compute Engine. Vous pouvez également créer des règles d'alerte pour surveiller vos métriques AWS. Pour plus d'informations, consultez les sections suivantes :

Avant de commencer

Pour collecter des métriques AWS CloudWatch à l'aide de l'exportateur Prometheus CloudWatch, vous avez besoin des éléments suivants:

  • Un projet Google Cloud avec les autorisations suivantes :
    • Créer une VM
    • Écrire des journaux dans Cloud Logging
    • Écrire des métriques dans Cloud Monitoring
  • Un compte AWS avec des identifiants AWS pouvant être utilisés par l'exportateur Prometheus pour extraire des métriques. Pour en savoir plus, consultez la section Exécuter l'exportateur Prometheus.

Créer une VM Compute Engine

Nous vous recommandons de créer une VM Compute Engine Linux à utiliser spécifiquement pour exécuter l'Agent Ops et l'exportateur Prometheus CloudWatch. Cette VM sert de site de collecte pour toutes les métriques AWS.

  1. Pour créer une VM Linux Debian nommée aws-exporter-test dans une zone que vous spécifiez, exécutez la commande suivante:

    gcloud compute instances create \
      --image-project debian-cloud \
      --image-family debian-11 \
      --zone ZONE \
      aws-exporter-test
    

    Configurez la commande comme suit:

    • Remplacez ZONE par la zone de votre nouvelle VM.
    • Facultatif. Remplacez aws-exporter-test par un autre nom pour votre VM.

    Pour en savoir plus sur cette commande, consultez la documentation de référence sur gcloud compute instances create.

  2. Pour accéder à votre VM afin d'installer l'exportateur Prometheus CloudWatch et l'agent Ops, vous pouvez utiliser la commande suivante:

    gcloud compute ssh --zone ZONE  --project PROJECT_ID  aws-exporter-test
    

    Configurez la commande comme suit:

    • Remplacez ZONE par la zone dans laquelle vous avez créé votre VM.
    • Remplacez PROJECT_ID par l'ID de votre projet Google Cloud.
    • Remplacez aws-exporter-test si vous avez créé votre VM avec un autre nom.

    Pour en savoir plus sur cette commande, consultez la documentation de référence sur gcloud compute ssh.

Configurer l'exportateur Prometheus CloudWatch

Les sections suivantes décrivent la procédure de téléchargement, d'installation et de configuration de l'exportateur Prometheus CloudWatch sur votre VM Compute Engine.

Télécharger l'exportateur Prometheus et le JRE

Pour exécuter l'exportateur CloudWatch pour Prometheus, vous devez télécharger l'exportateur et l'environnement d'exécution Java (JRE), version 11 ou ultérieure.

  1. Pour télécharger le fichier JAR contenant l'exportateur CloudWatch pour Prometheus, exécutez la commande suivante sur votre instance Compute Engine:

    curl -sSO https://github.com/prometheus/cloudwatch_exporter/releases/download/v0.15.1/cloudwatch_exporter-0.15.1-jar-with-dependencies.jar
    
  2. Pour installer le JRE, vous pouvez utiliser une commande comme celle-ci:

    sudo apt install default-jre
    

Configurer l'exportateur Prometheus

Pour configurer l'exportateur Prometheus CloudWatch, vous devez créer un fichier de configuration pour le ou les services AWS à partir desquels vous souhaitez collecter des métriques. Pour en savoir plus, consultez la documentation de configuration de l'exportateur Prometheus CloudWatch.

  • Migrer des utilisateurs: si vous migrez vos métriques AWS CloudWatch existantes vers l'exportateur Prometheus CloudWatch, vous pouvez utiliser les fichiers de configuration dans Configurations de l'exportateur Prometheus CloudWatch pour la migration. Ces fichiers de configuration sont conçus pour reproduire les métriques existantes le plus fidèlement possible, mais ils ne collectent pas toutes les métriques disponibles à l'aide de l'exportateur Prometheus CloudWatch pour les services AWS.

  • Nouveaux utilisateurs: si vous ne migrez pas de métriques existantes, nous vous recommandons de ne pas utiliser les configurations de migration. Pour savoir comment définir des configurations d'exportateur pour d'autres services, consultez la documentation du service AWS CloudWatch. Vous trouverez également d'autres exemples dans le dépôt GitHub de l'exportateur Prometheus CloudWatch.

Vous pouvez combiner la configuration de plusieurs services AWS dans un seul fichier de configuration. Les exemples de ce document partent du principe que votre fichier de configuration est nommé config.yml.

Exécuter l'exportateur Prometheus

Avant de pouvoir exécuter l'exportateur Prometheus CloudWatch, vous devez lui fournir des identifiants et une autorisation. L'exportateur Prometheus CloudWatch utilise le SDK Java AWS, qui permet de fournir des identifiants à l'aide des variables d'environnement suivantes:

Pour en savoir plus sur la fourniture d'identifiants au SDK, consultez le SDK AWS pour Java 2.x.

Vous devez également être autorisé à utiliser l'API CloudWatch pour récupérer des métriques. Vous avez besoin des autorisations CloudWatch AWS IAM suivantes:

  • cloudwatch:ListMetrics
  • cloudwatch:GetMetricStatistics
  • cloudwatch:GetMetricData

L'utilisation de la fonctionnalité aws_tag_select nécessite également l'autorisation IAM AWS tag:GetResources.

Pour en savoir plus sur l'autorisation d'accès aux services AWS, consultez la section Gestion de l'authentification et des accès AWS.

Pour exécuter l'exportateur Prometheus CloudWatch, procédez comme suit:

  1. Pour fournir des identifiants à l'exportateur, définissez les variables d'environnement de la clé d'accès:

    export AWS_ACCESS_KEY=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
    export AWS_SESSION_TOKEN=YOUR_SESSION_TOKEN
    

    Remplacez les variables YOUR_KEY par vos clés d'accès. Vous ne devez définir la variable d'environnement AWS_SESSION_TOKEN que si vous utilisez des identifiants temporaires.

  2. Pour tester votre configuration, démarrez l'exportateur et chargez votre fichier de configuration. Pour ce faire, exécutez la commande suivante:

    java -jar cloudwatch_exporter-0.15.1-jar-with-dependencies.jar 9106 config.yml
    

    Modifiez les valeurs du port (9106) et du fichier de configuration (config.yml) si nécessaire.

    Si vous modifiez votre fichier config.yml pendant l'exécution de l'exportateur, vous pouvez le recharger en exécutant la commande suivante:

    curl -X POST localhost:9106/-/reload
    

    Pour une utilisation dans un environnement de production, vous pouvez configurer l'exportateur pour qu'il redémarre si la VM redémarre. Par exemple, sur les systèmes Debian, vous pouvez utiliser le gestionnaire de système et de services, systemd.

Configurer l'agent Ops

Les sections suivantes expliquent comment installer, configurer et démarrer l'agent Ops. Ces sections fournissent des informations de configuration minimales pour l'agent Ops à utiliser avec l'exportateur Prometheus CloudWatch. Pour en savoir plus sur ces sujets, consultez la présentation de l'agent Ops.

Installer l'agent Ops

Pour installer l'agent Ops, utilisez les commandes suivantes pour télécharger et exécuter le script d'installation de l'agent:

curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install

Configurer l'agent Ops

Pour configurer l'agent Ops, vous devez ajouter des éléments de configuration au fichier de configuration utilisateur de l'agent. Sous Linux, le fichier de configuration utilisateur est /etc/google-cloud-ops-agent/config.yaml.

Lorsque vous configurez l'agent Ops pour collecter des métriques AWS à partir de l'exportateur Prometheus CloudWatch, vous utilisez le récepteur Prometheus de l'agent. Ce document décrit deux configurations de base pour l'agent Ops. Sélectionnez l'une des configurations et ajoutez-la au fichier de configuration utilisateur:

sudo vim /etc/google-cloud-ops-agent/config.yaml

Configuration de base pour l'agent Ops

La configuration suivante fournit une configuration minimale pour l'agent Ops. Cette configuration effectue les opérations suivantes :

  • Crée un récepteur nommé aws de type prometheus. Le récepteur est configuré pour extraire les métriques de la tâche aws_exporter. Le port spécifié doit correspondre au port sur lequel l'exportateur Prometheus CloudWatch exporte les métriques. Consultez Exécuter l'exportateur Prometheus.

  • Crée un pipeline nommé aws_pipeline qui utilise le récepteur de métriques aws.

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

Configuration qui supprime les métriques JVM

La configuration suivante effectue tout ce que fait la configuration de base, mais elle ajoute également une configuration de renumérotation qui supprime les métriques JVM générées par l'exportateur. Supprimer ces métriques réduit les données de métriques ingérées, mais cela peut rendre le débogage des problèmes liés à l'exportateur plus difficile, car vous n'obtenez pas les propres métriques de l'exportateur:

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
            # Drop the exporter's own JVM metrics to reduce noise.
            metric_relabel_configs:
              - source_labels: [ __name__ ]
                regex: 'jvm_.*'
                action: drop
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

Vous pouvez créer des configurations beaucoup plus complexes pour l'agent Ops.

Redémarrer l'agent Ops

Pour appliquer les modifications de configuration à l'agent Ops, vous devez le redémarrer.

  1. Pour redémarrer l'agent, exécutez la commande suivante sur votre instance :
    sudo service google-cloud-ops-agent restart
    
  2. Pour vérifier que l'agent a redémarré, exécutez la commande suivante et vérifiez que les composants "Agent de métriques" et "Agent de journalisation" ont démarré :
    sudo systemctl status google-cloud-ops-agent"*"
    

Afficher les métriques dans Cloud Monitoring

Dans Cloud Monitoring, vous pouvez interroger vos métriques AWS CloudWatch et créer des graphiques comme vous le feriez pour n'importe quelle autre métrique. Dans l'interface de l'explorateur de métriques, vous pouvez utiliser PromQL, le langage MQL (Monitoring Query Language) ou une interface de générateur de requêtes. Pour en savoir plus, consultez Créer des graphiques avec l'explorateur de métriques.

Si vous avez créé des graphiques que vous souhaitez conserver, vous pouvez les enregistrer dans des tableaux de bord personnalisés. Pour en savoir plus, consultez la page Présentation des tableaux de bord.

Le graphique suivant montre une requête PromQL pour la métrique aws_ec2_cpuutilization_sum des VM AWS:

Le graphique montre le résultat de la récupération de la statistique aws_ec2_cpuutilization_sum pour les VM AWS à l'aide de PromQL.

Vous pouvez interroger n'importe quelle métrique dans Cloud Monitoring à l'aide de PromQL. Pour en savoir plus, consultez la section Mapper des métriques Cloud Monitoring à PromQL.

Vous pouvez interroger les métriques Prometheus à l'aide de PromQL ou d'outils Cloud Monitoring tels que le langage MQL (Monitoring Query Language). Lorsque les métriques Prometheus sont ingérées dans Cloud Monitoring, chaque métrique est transformée à l'aide de la transformation OpenTelemetry-to-Prometheus standard et mappée au type de ressource surveillée prometheus_target de Cloud Monitoring. La transformation inclut les modifications suivantes:

  • Le nom de la métrique est précédé de la chaîne prometheus.googleapis.com/.
  • Tous les caractères non alphanumériques, tels que les points (.), dans le nom de la métrique sont remplacés par des traits de soulignement (_).
  • Le nom de la métrique est précédé d'une chaîne indiquant le genre de métrique, tel que /gauge ou /counter.

Pour interroger la métrique aws_ec2_cpuutilization_sum Prometheus à l'aide de MQL, utilisez prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge comme nom de la métrique et spécifiez le type de ressource surveillée prometheus_target:

fetch prometheus_target :: 'prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge'

Le graphique suivant montre le résultat de la requête MQL pour la métrique aws_ec2_cpuutilization_sum Prometheus:

Le graphique montre le résultat de la récupération de la statistique aws_ec2_cpuutilization_sum pour les VM AWS à l'aide de MQL.

Alerte sur le comportement des métriques

Dans Cloud Monitoring, vous pouvez créer des [règles d'alerte][alert-intro] pour surveiller vos métriques AWS CloudWatch et vous informer des pics, des baisses ou des tendances des valeurs des métriques.

  • Pour en savoir plus sur la création d'alertes basées sur MQL, consultez la section Règles d'alerte avec MQL.
  • Pour en savoir plus sur l'utilisation de l'interface de création de requêtes pour créer des règles d'alerte, consultez Créer des règles d'alerte.

Surveiller plusieurs régions

La configuration de l'exportateur Prometheus CloudWatch n'autorise qu'une seule région par fichier de configuration. Si vous devez surveiller plusieurs régions, nous vous recommandons d'exécuter plusieurs instances de l'exportateur Prometheus, une pour chaque région que vous souhaitez surveiller. Vous pouvez exécuter plusieurs exportateurs sur une seule VM ou les répartir entre plusieurs VM. L'exportateur Prometheus images Docker peut être utile dans cette situation.

Vous pouvez configurer l'agent Ops exécuté sur la VM Compute Engine pour extraire plusieurs points de terminaison Prometheus. Lorsque vous configurez plusieurs instances de l'exportateur Prometheus, nous vous recommandons d'utiliser un nom job différent pour la configuration d'extraction de chacune d'elles afin de pouvoir distinguer les instances de l'exportateur si vous devez les résoudre.

Pour en savoir plus sur la configuration de l'agent Ops et du récepteur Prometheus, consultez la section Configurer l'agent Ops.

Coût

Amazon facture chaque requête API CloudWatch ou chaque métrique CloudWatch que vous demandez. Pour connaître les tarifs actuels, consultez la page Tarifs Amazon CloudWatch. L'exportateur Prometheus CloudWatch présente les caractéristiques de requête suivantes, qui peuvent avoir un impact sur vos coûts Amazon:

  • Lorsque vous utilisez la méthode GetMetricStatistics (par défaut), chaque métrique nécessite une requête API. Chaque requête peut inclure plusieurs statistiques.
  • Lorsque vous utilisez aws_dimensions, l'exportateur doit effectuer des requêtes d'API pour déterminer les métriques à demander. Le nombre de requêtes de dimension est généralement négligeable par rapport au nombre de requêtes de métrique.

Les frais liés à Cloud Monitoring pour les métriques AWS CloudWatch de l'exportateur Prometheus sont basés sur le nombre d'échantillons ingérés. Pour connaître les tarifs actuels, consultez la page Synthèse des tarifs de Monitoring.

Configuration de l'exportateur Prometheus CloudWatch pour la migration

Cette section fournit des configurations qui reproduisent, le plus fidèlement possible, les métriques des services AWS documentées dans la liste des métriques AWS. Ces fichiers de configuration sont destinés aux clients qui migrent vers l'exportateur Prometheus CloudWatch à partir de l'ancienne solution. Si vous configurez l'exportateur Prometheus CloudWatch en tant que nouvel utilisateur plutôt qu'en tant qu'utilisateur en cours de migration et que vous utilisez ces configurations, vous ne collectez pas toutes les métriques AWS que l'exportateur Prometheus CloudWatch met à disposition.

Pour afficher un exemple de fichier de configuration pour les métriques AWS CloudWatch, développez l'une des sections suivantes.

region: us-east-1
metrics:
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: ActiveConnectionCount
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: ClientTLSNegotiationErrorCount
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: ConsumedLCUs
  aws_dimensions: [LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: DesyncMitigationMode_NonCompliant_Request_Count
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: DroppedInvalidHeaderRequestCount
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: DroppedInvalidHeaderRequestCount
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: ForwardedInvalidHeaderRequestCount
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: GrpcRequestCount
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTP_Fixed_Response_Count
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTP_Redirect_Count
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTP_Redirect_Url_Limit_Exceeded_Count
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTPCode_ELB_3XX_Count
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTPCode_ELB_4XX_Count
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTPCode_ELB_5XX_Count
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTPCode_ELB_500_Count
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTPCode_ELB_502_Count
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTPCode_ELB_503_Count
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTPCode_ELB_504_Count
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: IPv6ProcessedBytes
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: IPv6RequestCount
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: NewConnectionCount
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: NonStickyRequestCount
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: ProcessedBytes
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: RejectedConnectionCount
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: RequestCount
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: RuleEvaluations
  aws_dimensions: [LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HealthyHostCount
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTPCode_Target_2XX_Count
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTPCode_Target_3XX_Count
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTPCode_Target_4XX_Count
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HTTPCode_Target_5XX_Count
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: RequestCountPerTarget
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: TargetConnectionErrorCount
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: TargetResponseTime
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: TargetTLSNegotiationErrorCount
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: UnHealthyHostCount
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HealthyStateDNS
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: HealthyStateRouting
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: UnhealthyRoutingRequestCount
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: UnhealthyStateDNS
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: UnhealthyStateRouting
  aws_dimensions: [AvailabilityZone, TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: LambdaInternalError
  aws_dimensions: [TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: LambdaTargetProcessedBytes
  aws_dimensions: [LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: LambdaUserError
  aws_dimensions: [TargetGroup, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: ELBAuthError
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: ELBAuthFailure
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: ELBAuthLatency
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: ELBAuthRefreshTokenSuccess
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: ELBAuthSuccess
  aws_dimensions: [AvailabilityZone, LoadBalancer]
- aws_namespace: AWS/ApplicationELB
  aws_metric_name: ELBAuthUserClaimsSizeExceeded
  aws_dimensions: [AvailabilityZone, LoadBalancer]

region: us-east-1
metrics:
- aws_dimensions:
  - DistributionId
  - Region
  aws_metric_name: Requests
  aws_namespace: AWS/CloudFront
- aws_dimensions:
  - DistributionId
  - Region
  aws_metric_name: BytesDownloaded
  aws_namespace: AWS/CloudFront
- aws_dimensions:
  - DistributionId
  - Region
  aws_metric_name: BytesUploaded
  aws_namespace: AWS/CloudFront
- aws_dimensions:
  - DistributionId
  - Region
  aws_metric_name: 4xxErrorRate
  aws_namespace: AWS/CloudFront
- aws_dimensions:
  - DistributionId
  - Region
  aws_metric_name: 5xxErrorRate
  aws_namespace: AWS/CloudFront
- aws_dimensions:
  - DistributionId
  - Region
  aws_metric_name: TotalErrorRate
  aws_namespace: AWS/CloudFront

region: us-east-1
metrics:
- aws_dimensions:
  - TableName
  - GlobalSecondaryIndexName
  aws_metric_name: ConsumedReadCapacityUnits
  aws_namespace: AWS/DynamoDB
  aws_statistics:
  - Maximum
- aws_dimensions:
  - TableName
  - GlobalSecondaryIndexName
  aws_metric_name: ConsumedWriteCapacityUnits
  aws_namespace: AWS/DynamoDB
  aws_statistics:
  - Maximum
- aws_dimensions:
  - TableName
  - Operation
  aws_metric_name: ThrottledRequests
  aws_namespace: AWS/DynamoDB
  aws_statistics:
  - Sum
- aws_dimensions:
  - TableName
  - Operation
  aws_metric_name: SystemErrors
  aws_namespace: AWS/DynamoDB
  aws_statistics:
  - Sum
- aws_dimensions:
  - TableName
  - Operation
  aws_metric_name: SuccessfulRequestLatency
  aws_namespace: AWS/DynamoDB
  aws_statistics:
  - Maximum
- aws_dimensions:
  - TableName
  - GlobalSecondaryIndexName
  aws_metric_name: WriteThrottleEvents
  aws_namespace: AWS/DynamoDB
  aws_statistics:
  - Sum
- aws_dimensions:
  - TableName
  - GlobalSecondaryIndexName
  aws_metric_name: ReadThrottleEvents
  aws_namespace: AWS/DynamoDB
  aws_statistics:
  - Sum

region: us-east-1
metrics:
- aws_dimensions:
  - VolumeId
  aws_metric_name: VolumeWriteBytes
  aws_namespace: AWS/EBS
  aws_statistics:
  - Maximum
  - Average
- aws_dimensions:
  - VolumeId
  aws_metric_name: VolumeReadBytes
  aws_namespace: AWS/EBS
  aws_statistics:
  - Maximum
  - Average
- aws_dimensions:
  - VolumeId
  aws_metric_name: VolumeReadOps
  aws_namespace: AWS/EBS
  aws_statistics:
  - Average
- aws_dimensions:
  - VolumeId
  aws_metric_name: VolumeWriteOps
  aws_namespace: AWS/EBS
  aws_statistics:
  - Average
- aws_dimensions:
  - VolumeId
  aws_metric_name: VolumeTotalReadTime
  aws_namespace: AWS/EBS
  aws_statistics:
  - Sum
  - Average
- aws_dimensions:
  - VolumeId
  aws_metric_name: VolumeTotalWriteTime
  aws_namespace: AWS/EBS
  aws_statistics:
  - Sum
  - Average
- aws_dimensions:
  - VolumeId
  aws_metric_name: VolumeQueueLength
  aws_namespace: AWS/EBS
  aws_statistics:
  - Average
- aws_dimensions:
  - VolumeId
  aws_metric_name: BurstBalance
  aws_namespace: AWS/EBS
  aws_statistics:
  - Average
- aws_dimensions:
  - VolumeId
  aws_metric_name: VolumeIdleTime
  aws_namespace: AWS/EBS
  aws_statistics:
  - Sum


region: us-east-1
metrics:
- aws_dimensions:
  - InstanceId
  aws_metric_name: CPUUtilization
  aws_namespace: AWS/EC2
  aws_tag_select:
    resource_type_selection: ec2:instance
    resource_id_dimension: InstanceId
- aws_dimensions:
  - InstanceId
  aws_metric_name: NetworkIn
  aws_namespace: AWS/EC2
- aws_dimensions:
  - InstanceId
  aws_metric_name: NetworkOut
  aws_namespace: AWS/EC2
- aws_dimensions:
  - InstanceId
  aws_metric_name: NetworkPacketsIn
  aws_namespace: AWS/EC2
- aws_dimensions:
  - InstanceId
  aws_metric_name: NetworkPacketsOut
  aws_namespace: AWS/EC2
- aws_dimensions:
  - InstanceId
  aws_metric_name: DiskWriteBytes
  aws_namespace: AWS/EC2
- aws_dimensions:
  - InstanceId
  aws_metric_name: DiskReadBytes
  aws_namespace: AWS/EC2
- aws_dimensions:
  - InstanceId
  aws_metric_name: CPUCreditBalance
  aws_namespace: AWS/EC2
- aws_dimensions:
  - InstanceId
  aws_metric_name: CPUCreditUsage
  aws_namespace: AWS/EC2
- aws_dimensions:
  - InstanceId
  aws_metric_name: StatusCheckFailed
  aws_namespace: AWS/EC2
- aws_dimensions:
  - InstanceId
  aws_metric_name: StatusCheckFailed_Instance
  aws_namespace: AWS/EC2
- aws_dimensions:
  - InstanceId
  aws_metric_name: StatusCheckFailed_System
  aws_namespace: AWS/EC2

region: us-east-1
metrics:
- aws_namespace: AWS/ElastiCache
  aws_metric_name: ActiveDefragHits
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: AuthenticationFailures
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: BytesReadIntoMemcached
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: BytesUsedForCache
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: BytesUsedForCacheItems
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: BytesUsedForHash
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: BytesWrittenOutFromMemcached
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CPUCreditBalance
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CPUCreditUsage
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CPUUtilization
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CacheHits
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CacheMisses
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CasBadval
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CasHits
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CasMisses
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CmdConfigGet
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CmdConfigSet
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CmdFlush
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CmdGet
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CmdSet
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CmdTouch
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CommandAuthorizationFailures
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CrawlerItemsChecked
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CurrConfig
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CurrConnections
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CurrItems
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: CurrVolatileItems
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: DatabaseMemoryUsageCountedForEvictPercentage
  aws_dimensions:
  - NodeGroupId
  - ReplciationGroupId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: DatabaseMemoryUsagePercentage
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: DecrHits
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: DecrMisses
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: DeleteHits
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: DeleteMisses
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: EngineCPUUtilization
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
  - NodeGroupId
  - ReplicationGroupId
  - Role
- aws_namespace: AWS/ElastiCache
  aws_metric_name: EvictedUnfetched
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: Evictions
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: ExpiredUnfetched
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: FreeableMemory
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: GetHits
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: GetMisses
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: IamAuthenticationExpirations
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: IamAuthenticationThrottling
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: IncrHits
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: IncrMisses
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: IsMaster
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: KeyAuthorizationFailures
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: KeyBasedCmds
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: ListBasedCmds
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: KeysTracked
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: MasterLinkHealthStatus
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: MemoryFragmentationRatio
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NetworkBandwidthInAllowanceExceeded
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NetworkBandwidthOutAllowanceExceeded
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NetworkBytesIn
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NetworkBytesOut
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NetworkConntrackAllowanceExceeded
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NetworkPacketsIn
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NetworkPacketsOut
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NetworkPacketsPerSecondAllowanceExceeded
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NewConnections
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NewItems
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NonKeyTypeCmds
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: NonKeyTypeCmdsLatency
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: Reclaimed
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: ReplicationBytes
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: ReplicationLag
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: SetBasedCmds
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: SetTypeCmds
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: SlabsMoved
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: SortedSetBasedCmds
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: StringBasedCmds
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: SaveInProgress
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: SwapUsage
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: TouchHits
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: TouchMisses
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: TrafficManagementActive
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId
- aws_namespace: AWS/ElastiCache
  aws_metric_name: UnusedMemory
  aws_dimensions:
  - CacheNodeId
  - CacheClusterId

region: us-east-1
metrics:
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: BackendConnectionErrors
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: HTTPCode_Backend_5XX
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: HTTPCode_Backend_4XX
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: HTTPCode_Backend_3XX
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: HTTPCode_Backend_2XX
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: HTTPCode_ELB_5XX
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: RequestCount
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: HTTPCode_ELB_4XX
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: Latency
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: SurgeQueueLength
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: ActiveFlowCount
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: ActiveFlowCount_TLS
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: ProcessedBytes
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: ProcessedBytes_TLS
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: HealthyHostCount
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: UnHealthyHostCount
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: NewFlowCount
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: NewFlowCount_TLS
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: TCP_Client_Reset_Count
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: TCP_Target_Reset_Count
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: TCP_ELB_Reset_Count
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: ClientTLSNegotiationErrorCount
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: TargetTLSNegotiationErrorCount
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: ConsumedLCUs
  aws_namespace: AWS/ELB
- aws_dimensions:
  - AvailabilityZone
  aws_metric_name: SpilloverCount
  aws_namespace: AWS/ELB

region: us-east-2
metrics:
- aws_dimensions:
  - StreamName 
  aws_metric_name: IncomingBytes
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: PutRecord.Bytes
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: PutRecords.Bytes
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: GetRecords.Latency
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: PutRecord.Success
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: PutRecords.Success
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: GetRecords.Latency
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: PutRecord.Latency
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: PutRecords.Latency
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: GetRecords.Latency
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: GetRecords.Records
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: GetRecords.Bytes
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: GetRecords.Success
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: GetRecords.IteratorAgeMilliseconds
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: IncomingRecords
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: IncomingBytes
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: WriteProvisionedThroughputExceeded
  aws_namespace: AWS/Kinesis
- aws_dimensions:
  - StreamName
  aws_metric_name: ReadProvisionedThroughputExceeded  
  aws_namespace: AWS/Kinesis

region: us-east-1
metrics:
- aws_dimensions:
  - FunctionName
  - Resource
  aws_metric_name: Invocations
  aws_namespace: AWS/Lambda
- aws_dimensions:
  - FunctionName
  - Resource
  aws_metric_name: Errors
  aws_namespace: AWS/Lambda
- aws_dimensions:
  - FunctionName
  - Resource
  aws_metric_name: Duration
  aws_namespace: AWS/Lambda
- aws_dimensions:
  - FunctionName
  - Resource
  aws_metric_name: Throttles
  aws_namespace: AWS/Lambda
- aws_dimensions:
  - FunctionName
  - Resource
  aws_metric_name: ConcurrentExecutions
  aws_namespace: AWS/Lambda
- aws_dimensions:
  - FunctionName
  - Resource
  aws_metric_name: UnreservedConcurrentExecutions
  aws_namespace: AWS/Lambda

region: us-east-1
metrics:
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: ActiveFlowCount
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Average
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: ActiveFlowCount_TCP
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Average
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: ActiveFlowCount_UDP
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Average
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: ClientTLSNegotiationErrorCount
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - LoadBalancer
  aws_metric_name: ConsumedLCUs
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Average
- aws_dimensions:
  - LoadBalancer
  aws_metric_name: ConsumedLCUs_TCP
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Average
- aws_dimensions:
  - LoadBalancer
  aws_metric_name: ConsumedLCUs_TLS
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Average
- aws_dimensions:
  - LoadBalancer
  aws_metric_name: ConsumedLCUs_UDP
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Average
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: HealthyHostCount
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Minimum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: NewFlowCount
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: NewFlowCount_TCP
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: NewFlowCount_TLS
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: NewFlowCount_UDP
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: ProcessedBytes
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: ProcessedBytes_TLS
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: ProcessedBytes_UDP
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: ProcessedPackets
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: TargetTLSNegotiationErrorCount
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: TCP_Client_Reset_Count
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: TCP_Target_Reset_Count
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Sum
- aws_dimensions:
  - AvailabilityZone
  - LoadBalancer
  - TargetGroup
  aws_metric_name: UnHealthyHostCount
  aws_namespace: AWS/NetworkELB
  aws_statistics:
  - Maximum


region: us-east-1
metrics:
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: BinLogDiskUsage 
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: DatabaseConnections
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: FreeStorageSpace
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: FreeableMemory
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: ReadIOPS
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: WriteIOPS
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: ReadLatency
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: WriteLatency
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: ReadThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: WriteThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: CPUCreditUsage
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: ReplicaLag
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: CPUUtilization
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: CPUCreditBalance
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: DiskQueueDepth
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: NetworkTransmitThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: NetworkReceiveThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: TransactionLogsDiskUsage
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DBInstanceIdentifier
  aws_metric_name: SwapUsage
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: BinLogDiskUsage 
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: DatabaseConnections
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: FreeStorageSpace
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: FreeableMemory
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: ReadIOPS
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: WriteIOPS
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: ReadLatency
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: WriteLatency
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: ReadThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: WriteThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: CPUCreditUsage
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: ReplicaLag
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: CPUUtilization
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: CPUCreditBalance
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: DiskQueueDepth
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: NetworkTransmitThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: NetworkReceiveThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: TransactionLogsDiskUsage
  aws_namespace: AWS/RDS
- aws_dimensions:
  - EngineName
  aws_metric_name: SwapUsage
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: BinLogDiskUsage 
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: DatabaseConnections
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: FreeStorageSpace
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: FreeableMemory
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: ReadIOPS
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: WriteIOPS
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: ReadLatency
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: WriteLatency
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: ReadThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: WriteThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: CPUCreditUsage
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: ReplicaLag
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: CPUUtilization
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: CPUCreditBalance
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: DiskQueueDepth
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: NetworkTransmitThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: NetworkReceiveThroughput
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: TransactionLogsDiskUsage
  aws_namespace: AWS/RDS
- aws_dimensions:
  - DatabaseClass
  aws_metric_name: SwapUsage
  aws_namespace: AWS/RDS

region: us-east-2
metrics:
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: HealthStatus
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: CPUUtilization
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: DatabaseConnections
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: MaintenanceMode
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: NetworkReceiveThroughput
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: NetworkTransmitThroughput
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: ReadIOPS
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: WriteIOPS
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: ReadLatency
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: WriteLatency
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: ReadThroughput
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: WriteThroughput
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: QueryDuration
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: QueriesCompletedPerSecond
  aws_namespace: AWS/Redshift
- aws_dimensions:
  - ClusterIdentifier
  - NodeID
  aws_metric_name: PercentageDiskSpaceUsed
  aws_namespace: AWS/Redshift

region: us-east-1
metrics:
- aws_dimensions:
  - BucketName
  - FilterId
  aws_metric_name: 4xxErrors
  aws_namespace: AWS/S3
- aws_dimensions:
  - BucketName
  - FilterId
  aws_metric_name: 5xxErrors
  aws_namespace: AWS/S3
- aws_dimensions:
  - BucketName
  - FilterId
  aws_metric_name: AllRequests
  aws_namespace: AWS/S3
- aws_dimensions:
  - BucketName
  - FilterId
  aws_metric_name: FirstByteLatency
  aws_namespace: AWS/S3
- aws_dimensions:
  - BucketName
  - FilterId
  aws_metric_name: TotalRequestLatency
  aws_namespace: AWS/S3
- aws_dimensions:
  - BucketName
  - FilterId
  aws_metric_name: BytesDownloaded
  aws_namespace: AWS/S3
- aws_dimensions:
  - BucketName
  - FilterId
  aws_metric_name: BytesUploaded
  aws_namespace: AWS/S3
- aws_dimensions:
  - BucketName
  - FilterId
  aws_metric_name: PutRequests
  aws_namespace: AWS/S3
- aws_dimensions:
  - BucketName
  - FilterId
  aws_metric_name: ListRequests
  aws_namespace: AWS/S3
- aws_dimensions:
  - BucketName
  - FilterId
  aws_metric_name: HeadRequests
  aws_namespace: AWS/S3
- aws_dimensions:
  - BucketName
  - FilterId
  aws_metric_name: GetRequests
  aws_namespace: AWS/S3
- aws_namespace: AWS/S3
  aws_metric_name: BucketSizeBytes
  aws_dimensions: [BucketName, StorageType]
  range_seconds: 172800
  period_seconds: 86400
  set_timestamp: false
- aws_namespace: AWS/S3
  aws_metric_name: NumberOfObjects
  aws_dimensions: [BucketName, StorageType]
  range_seconds: 172800
  period_seconds: 86400
  set_timestamp: false
  # In case you want to use some bucket level Tag to select buckets to monitor,
  # or to have additional `info` metric with all bucket Tags as labels, use `aws_tag_select`:
  aws_tag_select:
    tag_selections:
      Monitoring: ["enabled"]
    resource_type_selection: "s3:"
    resource_id_dimension: BucketName

region: us-east-1
metrics:
- aws_namespace: AWS/SES
  aws_metric_name: Bounce
  aws_dimensions: []
  aws_statistics: []
- aws_namespace: AWS/SES
  aws_metric_name: Complaint
  aws_dimensions: []
  aws_statistics: []
- aws_namespace: AWS/SES
  aws_metric_name: Delivery
  aws_dimensions: []
  aws_statistics: []
- aws_namespace: AWS/SES
  aws_metric_name: Reputation.BounceRate
  aws_dimensions: []
  aws_statistics: []
- aws_namespace: AWS/SES
  aws_metric_name: Reputation.ComplaintRate
  aws_dimensions: []
  aws_statistics: []
- aws_namespace: AWS/SES
  aws_metric_name: Send
  aws_dimensions: []
  aws_statistics: []
- aws_namespace: AWS/SES
  aws_metric_name: Reject
  aws_dimensions: []
  aws_statistics: []

region: us-east-1
metrics:
- aws_dimensions:
  - TopicName
  - Platform
  aws_metric_name: NumberOfMessagesPublished
  aws_namespace: AWS/SNS
  aws_statistics:
  - Sum
- aws_dimensions:
  - TopicName
  - Platform
  aws_metric_name: NumberOfNotificationsDelivered
  aws_namespace: AWS/SNS
  aws_statistics:
  - Sum
- aws_dimensions:
  - TopicName
  - Platform
  aws_metric_name: NumberOfNotificationsFailed
  aws_namespace: AWS/SNS
  aws_statistics:
  - Sum
- aws_dimensions:
  - TopicName
  - Platform
  aws_metric_name: PublishSize
  aws_namespace: AWS/SNS
  aws_statistics:
  - Average
  - Sum
  - Maximum
  - Minimum
  - Count
- aws_dimensions:
  - TopicName
  - Platform
  aws_metric_name: NumberOfNotificationsFilteredOut
  aws_namespace: AWS/SNS
  aws_statistics:
  - Sum

region: us-east-1
metrics:
- aws_dimensions:
  - QueueName
  aws_metric_name: NumberOfMessagesSent
  aws_namespace: AWS/SQS
  aws_statistics:
  - Average
  - Minimum
  - Maximum
  - SampleCount
  - Sum
- aws_dimensions:
  - QueueName
  aws_metric_name: NumberOfMessagesReceived
  aws_namespace: AWS/SQS
  aws_statistics:
  - Average
  - Minimum
  - Maximum
  - SampleCount
  - Sum
- aws_dimensions:
  - QueueName
  aws_metric_name: NumberOfEmptyReceives
  aws_namespace: AWS/SQS
  aws_statistics:
  - Average
  - Minimum
  - Maximum
  - SampleCount
  - Sum
- aws_dimensions:
  - QueueName
  aws_metric_name: NumberOfMessagesDeleted
  aws_namespace: AWS/SQS
  aws_statistics:
  - Average
- aws_dimensions:
  - QueueName
  aws_metric_name: ApproximateNumberOfMessagesDelayed
  aws_namespace: AWS/SQS
  aws_statistics:
  - Average
  - Minimum
  - Maximum
  - SampleCount
  - Sum
- aws_dimensions:
  - QueueName
  aws_metric_name: ApproximateAgeOfOldestMessage
  aws_namespace: AWS/SQS
  aws_statistics:
  - Average
  - Minimum
  - Maximum
  - SampleCount
  - Sum
- aws_dimensions:
  - QueueName
  aws_metric_name: ApproximateNumberOfMessagesNotVisible
  aws_namespace: AWS/SQS
  aws_statistics:
  - Average
  - Minimum
  - Maximum
  - SampleCount
  - Sum
- aws_dimensions:
  - QueueName
  aws_metric_name: ApproximateNumberOfMessagesVisible
  aws_namespace: AWS/SQS
  aws_statistics:
  - Average
  - Minimum
  - Maximum
  - SampleCount
  - Sum
- aws_dimensions:
  - QueueName
  aws_metric_name: SentMessageSize
  aws_namespace: AWS/SQS
  aws_statistics:
  - Average
  - Minimum
  - Maximum
  - SampleCount
  - Sum