我一直在为一个吸引大量数据的项目做一些亚马逊AWS修补工作。大多数服务都是超级便宜的,但Cloud Watch的日志存储占主导地位,云计算日志存储在18美元的总账单中占13美元。我去的时候已经删除了日志。
如何从存储中删除日志(从控制台删除组似乎没有这样做)或降低日志的成本(this帖子表明它应该是0.03美元/ GB哪个不止于此)或其他什么?
人们使用什么策略?
答案 0 :(得分:11)
你能告诉我们你推动了多少小时的日志?
多年来我学到的一件事是多级日志记录很好(Debug
,Info
,Warn
,Error
,{{ 1}}),它有两个严重的缺点:
Fatal
,Warn
和Error
",Debug和Info仍然在运行时进行评估!为了记录,我为以前的项目记录支付了超过1000美元/月。用于安全审计的PCI合规性需要2年的日志,而我们每秒发送1000个日志。
我甚至讨论了如何在上下文中记录所有内容:
http://go-talks.appspot.com/github.com/eduncan911/go-slides/gologit.slide#1
在对我的应用程序和功能进行基准测试以及生产中的人工和日志存储的总体成本之后,我已经退出了这一立场。
我现在只记录最小(错误),并且如果没有设置日志级别,则使用在运行时否定评估的包,例如Google
Fatal
。
此外,自从转向Go开发以来,我采用了极少量代码(例如微服务和软件包)和专用CLI工具的策略,无需使用大量Glog
和Debug
单片堆栈中的语句 - 如果我可以将RPC记录到每个服务中或从每个服务中记录RPC。更好 - 只需监控事件总线。
最后,通过对这些小型服务的单元测试,您可以确信代码的行为方式 - 因为您不需要那些Info
和Info
语句,因为您的测试显示了输入条件好坏。那些Info和Debug语句可以放在单元测试中,使代码不受跨领域的关注。
所有这些基本上都会最终降低您的日志记录需求。
您如何运送日志?
如果您无法排除所有调试,信息和其他行,另一个想法是在发送日志之前使用Debug
,sed
或类似的方式过滤日志文件。
当您需要调试某些内容时,更改sed / awk并发送额外的日志信息时。完成调试后,返回过滤并仅记录最小值,如异常和错误。
答案 1 :(得分:7)
您支付的价格有两个组成部分:
1)摄取费用:您在发送/上传日志时付款
2)存储成本:你付钱保存日志。
存储成本非常低(3美分/ GB,所以猜测不是问题 - 即增加使用量是一个红色鲱鱼 - 花费你总共3美分的云计算账单)。当它发生时,你正在支付摄入费用。减少这种情况的唯一真正方法是减少正在进行的日志记录和/或停止使用云监视。
答案 2 :(得分:1)
听起来您需要修改Log Retention Settings,这样您才能保留尽可能多的日志数据。
This page列出了CloudWatch和CloudWatch Logs的当前价格。如果您认为自己被多收费用,则需要联系AWS支持。