我们正在考虑向云迁移的长期计划。计划从小处着手,逐步将基础设施中不太重要的部分迁移到云中。目前一切顺利。
此次迁移的一部分包括来自 Web 服务器和其他东西的日志文件。请记住,服务器仍然位于云之外的数据中心。应该很容易在每天结束时使用 cron 作业抓取日志文件,对其进行压缩,然后将其推送到 Amazon S3,并可能将其备份到 Glacier。这很容易。
当 S3 是仅有的存储日志的位置,并且想要搜索日志中的各种事件。如果你不知道时间间隔,你可能必须从 S3 下载所有日志才能进行全面搜索,结果就是昂贵的- 将数据移动到云端很便宜,但将数据从云端移出则很昂贵。
或者我可以设置一个 EC2 实例模板。当有人想要进行日志搜索时,启动实例,将日志从 S3 下载到它,然后 grep 即可。将文件从 S3 下载到 EC2 很便宜。但下载可能需要一段时间;同样,如果您不知道要查找什么,则需要下载大量日志,这意味着在 EBS 中使用大量空间。
另一种方法是将日志上传到 DynamoDB 或类似的东西中。价格可能是一个问题。另一个问题是日志是完全非结构化的 Apache 和 Squid 日志等 - 因此查询可能需要很长时间。
我们讨论的是每年 500GB 的压缩日志,存储时间长达 5 年。
对我来说,像这样将日志存储在云中听起来不是一个好主意。也许只需使用 Glacier 作为“磁带备份”,但暂时将日志保存在本地的几个硬盘上。
你倾向哪一边?
答案1
Logstash + ElasticSearch + Kibana。这就是您需要的组合。
听起来你正在寻找 AWS,因此为此建立一个适度的 EC2 集群 - 也许是一个 logstash“路由器/代理”盒和两个 Elasticsearch 集群节点。
在 ES 索引中保留合理数量的“在线”数据,然后将较旧的索引存档到 S3。ElasticSearch 开箱即用地支持此功能,并且能够(相对无缝地)从 S3 导出和导入数据。
至于如何将日志发送到 EC2,我只需使用 IPsec 隧道从您的自托管服务器到 EC2 集群,然后使用您想要的任何协议发送日志。Logstash 广泛支持多种输入格式。
答案2
在云中运行 splunk 服务器怎么样,在小型实例上始终保持运行,可以使用 EBS 卷,或者如果 I/o 不会成为瓶颈,甚至可以尝试 S3 卷。
答案3
我们推出了云日志管理服务 (slicklog.com),它可能会解决您的问题。当您的日志到达平台时,
- 它们是可搜索的
- 可多次下载
- 您可以直观地看到一些统计数据,例如最小值、最大值、计数、总和、百分位数等。
经过一段时间(最少 1 个月)(可通过 UI 配置)后,日志将被归档($0.001/GB,未压缩),当日志被归档时
- 无法搜索。
- 您可以根据需要多次下载,无需支付额外费用。
考虑到您的要求,如果您可以接受存档日志文件不可搜索的事实,那么这可能被视为一种解决方案。
希望这可以帮助。