我一直在为一个吸引了大量数据的项目做了一些亚马逊AWS的修补工作。大多数服务都是超级便宜的,然而,云手表的日志存储占据了主导地位,云手表日志存储在18美元的总账单中只有13美元。我已经在删除日志了。


我如何从存储中删除日志(从控制台中删除组似乎没有做到这一点),或者降低日志的成本(this post指出它应该是0.03美元/GB,我的应该更高)或其他什么?
人们在使用什么策略?
发布于 2016-05-25 13:02:06
不要记录所有内容
您能告诉我们您正在推送多少日志/小时吗?
多年来我学到的一件事是,虽然拥有多级日志记录很好(Debug、Info、Warn、Error、Fatal),但它有两个严重的缺点:
Warn、Error和Fatal",调试和信息仍然都是以runtime!根据记录,我已经为以前的项目支付了超过1000美元/月的日志记录。安全审计的PCI合规性需要2年的日志,而我们每秒发送1000个日志。
我甚至谈到了你应该如何在上下文中记录一切:
http://go-talks.appspot.com/github.com/eduncan911/go-slides/gologit.slide#1
在对我的应用程序和功能以及生产中的劳动力和日志存储的总体成本进行基准测试后,我从这个立场上收回了。
Google现在只记录最小的(错误),如果没有设置日志级别,就使用在运行时否定评估的包,比如
的
Glog。
此外,自从转到Go开发以来,我采用了非常少量的代码(例如微服务和包)和专用的CLI实用程序的策略,从而消除了在整体堆栈中使用大量Debug和Info语句的需要-如果我可以只记录进出每个服务的RPC的话。更好的是--只监控事件总线。
最后,通过对这些小型服务进行单元测试,您可以确信代码是如何运行的-因为您不需要这些Info和Debug语句,因为您的测试显示了好的和坏的输入条件。这些Info和Debug语句可以放在您的单元测试中,让您的代码远离横切关注点。
所有这些最终基本上减少了您的日志记录需求。
另一种方法:过滤日志
你是如何运送你的日志的?
如果您不能排除所有调试、信息和其他行,另一个想法是在发送日志之前,使用sed、awk或类似工具将日志过滤到另一个文件。
当您需要调试某些东西时,需要更改sed/awk并发送额外的日志信息。调试完成后,返回到筛选,只记录最小的异常和错误。
发布于 2016-05-25 00:32:34
你要付出的代价有两个组成部分:
1)摄取费用:在发送/上传日志时付费
2)存储成本:您需要付费保存日志。
存储成本非常低(3美分/GB,所以猜测这不是问题所在--即增加的使用量是转移注意力的问题--在cloudwatch的总账单中花费3美分)。当它发生时,你是在为摄取付出代价。减少这种情况的唯一真正方法是减少您正在做的日志记录量和/或停止使用cloudwatch。
发布于 2016-05-25 00:15:06
听起来您需要修改Log Retention Settings,这样就不会保留太多的日志数据。
This page列出了CloudWatch和CloudWatch日志的当前定价。如果您认为您被多收了费用,您需要联系AWS支持。
https://stackoverflow.com/questions/37418629
复制相似问题