1

J'ai reçu une facture de 1 200 $ d'Amazon pour les services Cloudwatch le mois dernier (spécifiquement pour 2 To d'ingestion de données de journal dans "AmazonCloudWatch PutLogEvents") alors que j'attendais quelques dizaines de dollars. Je me suis connecté à la section Cloudwatch d'AWS Console et je peux voir que l'un de mes groupes de journaux utilise environ 2 To de données, mais il y a des milliers de flux de journaux différents dans ce groupe de journaux. de données?Ma facture AWS Cloudwatch est énorme. Comment puis-je déterminer quel flux de données le provoque?

Répondre

1

D'accord, je suis answering my own question ici, mais ici nous aller (avec toutes les autres réponses bienvenue):

Vous pouvez utiliser une combinaison d'outils AWS CLI, le package csvfix CSV et un tableur pour travailler cela. Connectez-vous à la console AWS Cloudwatch et saisissez le nom du groupe de journaux qui a généré toutes les données. Dans mon cas, ça s'appelle "test01-ecs".

  • Malheureusement, dans la console Cloudwatch, vous ne pouvez pas trier les flux par "Octets stockés" (ce qui vous indiquerait les plus gros). S'il y a trop de flux dans le groupe de journaux à parcourir dans la console, vous devez les vider d'une manière ou d'une autre. Pour cela, vous pouvez utiliser l'outil AWS CLI:

    $ aws logs describe-log-streams --log-group-name test01-ecs

  • La commande ci-dessus vous donnera JSON (en supposant que votre outil AWS CLI est réglé sur JSON - le mettre à output = json en ~/.aws/config sinon) et il ressemblera à quelque chose comme ceci:

    { "logStreams": [ { "creationTime": 1479218045690, "arn": "arn:aws:logs:eu-west-1:902720333704:log-group:test01-ecs:log-stream:test-spec/test-spec/0307d251-7764-459e-a68c-da47c3d9ecd9", "logStreamName": "test-spec/test-spec/0308d251-7764-4d9f-b68d-da47c3e9ebd8", "storedBytes": 7032 } ] }

  • pipe cette sortie à un fichier JSON - dans mon cas, le fichier est de 31 Mo en taille:

    $ aws logs describe-log-streams --log-group-name test01-ecs >> ./cloudwatch-output.json

  • Utilisez le paquet in2csv (partie de csvfix) pour convertir le fichier JSON dans un fichier CSV qui peut facilement être importé dans une feuille de calcul, en vous assurant de définir les logStreams clé à utiliser pour importer sur:

    $ in2csv cloudwatch-output.json --key logStreams >> ./cloudwatch-output.csv

  • importer le fichier CSV résultant dans une feuille de calcul (j'utilise LibreOffice moi comme il semble grand à traiter avec CSV) en veillant à la storedBytes Le champ est importé en tant qu'entier.

  • Trier la colonne storedBytes dans la feuille de calcul pour déterminer le ou les flux de journal qui génèrent le plus de données. Dans mon cas cela a fonctionné - il s'est avéré qu'un de mes flux de journal (avec les logs d'un tuyau TCP cassé dans une instance redis) était 4000 fois la taille de tous les autres flux combinés!