9
votes

Le journal Cloudwatch coûte trop cher

Je fais une Amazone AWS Tinkering pour un projet qui tire une quantité décente de données. La majorité des services ont été super bon marché, cependant, le stockage de journal pour Cloud Watch est dominant la facture, le stockage des journaux de surveillance de nuages ​​est de 13 $ la facture totale de 18 $. Je supprimons déjà des journaux comme je vais.

 Usage de surveillance de nuage

 Black Watch Bill

Comment puis-je vous débarrasser des bûches du stockage (enlever les groupes de la console ne semble pas le faire) ou réduire le coût des journaux ( Ce message indiquait qu'il devrait être 0,03 $ / gb que le mien est supérieur à cela) ou autre chose?

Quelles stratégies utilisent les personnes?


1 commentaires

Je ne sais pas si cela aide mais je mets des conseils pour que les flux de journaux génèrent les données comme réponse à une réponse à Stackoverflow.com/Questtions/43327714/...


3 Réponses :


1
votes

On dirait que vous devez modifier le Paramètres de conservation du journal Pour que vous ne reteniez pas autant de données de journal.

Cette page répertorie la tarification actuelle des journaux CloudWatch et Cloudwatch. Si vous pensez que vous êtes surchargé, vous devez contacter le support AWS.


1 commentaires

Même avec la rétention définie au minimum, les coûts de transfert sont ce qui m'accumulait pour moi. C'est certainement quelque chose qui pourrait importer à long terme cependant.



9
votes

Il y a 2 composants au prix que vous payez:
1) Frais d'ingestion: vous payez lorsque vous envoyez / téléchargez les journaux de
2) Coûts de stockage: vous payez pour garder les journaux autour.

Les coûts de stockage sont très bas (3cents / Go, donc devinant que ce n'est pas le problème - c'est-à-dire que l'utilisation accrue est un hareng rouge - qui vous coûte 3 cents de la facture Total Cloudwatch). Vous payez pour l'ingestion quand cela se produit. Le seul moyen réel de réduire ce qui consiste à réduire la quantité de journalisation que vous faites et / ou arrêtez d'utiliser CloudWatch.

https://aws.amazon.com/cloudwatch/pring/


0 commentaires

15
votes

Ne connecte pas tout

Pouvez-vous nous dire combien de journaux / heures vous poussez?

Une chose que j'ai apprise au fil des ans, c'est que la journalisation multi-niveaux est Nice ( débogage , info , warn , < Code> Erreur , fatal ), il a deux inconvénients graves:

  • ralentit l'application ayant pour évaluer tous ces niveaux au moment de l'exécution - même si vous dites "seulement journal avertir , Error et fatal ", Débogou et informations sont toujours évaluées au moment de l'exécution!
  • augmente les coûts d'exploitation de la journalisation (j'utilisais des logements et le déplacement pour utiliser Devops Travail et d'accueillir des coûts d'exécution d'une cluster de Logstash + Elasticsicsearch vient d'accroître les choses plus).

    Pour l'enregistrement, j'ai payé plus de 1000 $ / Mo pour la journalisation des projets précédents. La conformité PCI pour les audits de sécurité nécessite 2 années de journaux et nous envoyions des milliers de journaux par seconde.

    J'ai même donné des discussions sur la façon dont vous devriez tout enregistrer dans son contexte:

    http: // Go-Talks .appspot.com / github.com / eduncan911 / glisse / gologit.slide # 1

    j'ai depuis rétracté de cette position après avoir analysé mes applications et les funcs et les coûts globaux de la main-d'œuvre et du stockage de journal dans la production.

    Je ne connecte maintenant que les packages minimaux (erreurs) et utilisez des packages qui nient l'évaluation au moment de l'exécution si le niveau de journalisation n'est pas défini, tel que Google's GLOG . .

    De plus, depuis le début du développement de Go, j'ai adopté la stratégie de très petites quantités de code (par exemple, des microservices et des packages) et des utilisateurs de cli dédiés qui nient la nécessité de disposer de nombreux débogage et Info Déclarations dans les piles monolithiques - Si je peux simplement enregistrer le RPC à / de chaque service à la place. Mieux encore - il suffit de surveiller le bus d'événement.

    Enfin, avec des tests d'unités de ces petits services, vous pouvez être assuré de la manière dont votre code est actionné - comme vous n'aurez pas besoin de ces info et débogage de débogage car Vos tests montrent les bonnes et les mauvaises conditions d'entrée. Ces informations sur les informations et les déboges peuvent aller à l'intérieur de vos tests de l'unité, laissant votre code sans préoccupations transversales.

    Tout cela réduit fondamentalement vos besoins de journalisation à la fin.

    Alternative: filtrez vos journaux

    Comment expédiez-vous vos journaux?

    Si vous ne pouvez pas exclure tous les déboges, les infos et autres lignes, une autre idée est de filtrer vos journaux avant de les expédier à l'aide de SED , awk ou similaire à pipe à un autre fichier.

    Lorsque vous devez déboguer quelque chose, c'est lorsque vous modifiez le SED / AWK et envoyez les informations de journal supplémentaires. Lorsque vous avez fait le débogage, revenez au filtrage et enregistrez uniquement les exceptions et erreurs minimales telles que les exceptions et les erreurs.


4 commentaires

Il suffit de vous connecter à l'aide de la commande de console NODE.JS par défaut, c'est un nouveau projet et je n'ai tenu à vous connecter de suivre les différentes pièces et de vous assurer que les choses circulent correctement. J'ai réduit la journalisation à votre suggestion, mais je suis un peu confus à la deuxième question. Je ne les expédie pas n'importe où? Tout est fait avec AWS Services.


Pour la 2e partie (filtrage), comment envoyez-vous la sortie de journal à AWS? Utilisation d'un package nodejs pour parler directement à l'API AWS? Ou éventuellement utiliser des services gérés AWS comme Lambda qui lirait la sortie console.log pour vous? Si celles-ci sont le cas, vous ne pouvez pas filtrer - vous êtes tout directement à la force de l'API. Vous êtes seule l'option est de réduire la quantité de journalisation. Sur EC2 VMS, vous pouvez installer un agent agent qui lira la sortie du logfile de votre application et de l'expédier à AWS. Si tel est le cas, vous pouvez tuyer la sortie avec sed pour filtrer.


Si vous utilisez un service géré, vous pouvez envisager de migrer vers un package de nivellement de journal, au lieu de console.log , vous pouvez donc vous enregistrer définir différents niveaux tels que trace , info , avertir , erreur et ainsi de suite au moment de l'exécution (démarrage de l'application). Recherche Google rapide Arrivant de nombreuses saveurs . Ensuite, en production, réglez-le sur le journal avertir et inférieur ( erreur et fatal ) et ignore le reste (sauf si vous n'avez pas besoin de déboguer). Par exemple, effectuez un sed et remplacez tout console.log ( avec log.trace ( pour démarrer. Ensuite, revenez et faites de manière sélective < Code> log.Error .


Ouais, en utilisant Lambda, tout va juste dans les journaux. En train de le réduire considérablement. Merci beaucoup