一千万条每条 500Byte 大约 5GB/Day,不算大,但日志系统这个范畴比较大了
1. 如果是应用日志查询与统计,一般使用 ELK
2. 如果是日志处理系统(流处理),一般使用 Kafka + Logstash/FluentD
3. 如果是日志离线存储,一般使用 Flume,或者 Kafka Connect,Hadoop,Hive/Spark
所以取决于你要做的事情当前、以及未来的需求,如果要从长远去建设一个日志系统,以上几点都需要考虑支持,一般而言一个合理的日志架构是:
1. 一套健全的日志采集系统(能够从各渠道将日志统一):例如 Web Click,Access Log,Database BinLog,Metric,IoT 等等
2. 一个弹性海量日志处理中间件,将日志从收集端与下游消费者统一。例如 Storm、Flink 等都可以实时处理采集的日志程序,不用拉若干条线
3. 一个能够实时索引保存查询日志的软件,例如 ELK
4. 一个将采集日志准实时同步到数仓库的软件,例如 Kafka Connect
5. 找到对接流计算,离线计算的机制与系统
非功能需求:保证系统保序(负责事物处理)、高可用、稳定、低成本、弹性伸缩,这些一般都是发展中需要考虑的。拿一台机器作为“日志服务器”,这个有点像 10 年前的 syslog 服务器,用来做日志查看可以,如果真作为一个依赖的基础设施,有点勉强。
一个“好的架构”在一开始物理和人力投入还是比较多的,好处是一旦建设完成后,后面加需求或加日志都会非常轻松很多。
最后一段是广告(利益相关:阿里云日志服务工程师)
如果你需要一个 SaaS 化日志服务,可以考虑使用阿里云日志服务(
http://www.aliyun.com/product/sls/),支持各种线上 IDC、以及云环境。在性能、稳定性、成本以及专业程度都是国内比较可以的,因为阿里巴巴内部也是用同样一套产品在不断磨练升级,很多大场和创业公司都在使用。
至于成本,无论是前期投入还是计费都是开源方案的 25%一下,这里有一个比较(
https://help.aliyun.com/document_detail/51097.html),可以参考。