2
votes

Pourquoi GetMetricData renvoie-t-il un ensemble de valeurs vide?

Utilisation du kit JS AWS SDK et transmission des paramètres suivants:

[
  {
    "Id": "m1",
    "Label": "NetworkOut",
    "Timestamps": [],
    "Values": [],
    "StatusCode": "Complete",
    "Messages": []
  }
]

Voici le résultat:

{
  "StartTime": 1548111915,
  "EndTime": 1549321515,
  "MetricDataQueries": [
    {
      "Id": "m1",
      "MetricStat": {
        "Metric": {
          "MetricName": "NetworkOut",
          "Namespace": "AWS/EC2",
          "Dimensions": [
            {
              "Name": "InstanceId",
              "Value": "i-[redacted]"
            }
          ]
        },
        "Period": 300,
        "Stat": "Average",
        "Unit": "Gigabytes"
      }
    }
  ]
}
  1. La requête correspond étroitement à l'exemple de requête trouvé à https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html#API_GetMetricData_Examples

  2. Je suis sûr que l'instance est une instance valide qui a certainement eu du trafic NetworkOut pendant cette plage de dates.

Quelle raison pourrait expliquer le manque d'éléments dans le tableau Values ​​?


0 commentaires

3 Réponses :


1
votes

Je l'ai essayé et j'ai obtenu le même résultat (vide) que vous.

J'ai ensuite changé Gigaoctets en Bytes et j'ai obtenu un résultat. Il se peut donc que vous deviez réduire la taille de votre unité.

Voici la commande que j'ai utilisée pour l'AWS CLI:

aws cloudwatch get-metric-data --start-time 1548111915 --end-time 1549321515 --metric-data-queries '[
    {
      "Id": "m1",
      "MetricStat": {
        "Metric": {
          "MetricName": "NetworkOut",
          "Namespace": "AWS/EC2",
          "Dimensions": [
            {
              "Name": "InstanceId",
              "Value": "i-xxx"
            }
          ]
        },
        "Period": 300,
        "Stat": "Average",
        "Unit": "Bytes"
      }
    }
  ]'


0 commentaires

1
votes

Une meilleure solution consistait à omettre complètement "Unité", ce qui permettait à AWS de choisir l'unité appropriée, non seulement en échelle, mais en catégorie.


0 commentaires

1
votes

Pour les futurs inquisiteurs, il y a plusieurs raisons pour lesquelles le client aws renvoie silencieusement un ensemble de données vide au lieu d'une erreur, car les exigences d'entrée sont plus strictes que les attentes de l'utilisateur standard, mais les exigences de sortie sont beaucoup plus lâches. Exemples

  • mauvaise unité
  • liste incomplète des dimensions
  • fautes de frappe, respect de la casse, etc.

Références:


0 commentaires