上面我们介绍了三种日志系统。那这些日志系统该如何做技术选型呢?来看看对比图吧
依据 | flume + hadoop + hive | kids | ELK |
---|---|---|---|
是否满足需求 | 满足,过滤与清洗采用hadoop的mapreducce | 基本满足,需自己写过滤和挖掘算法 | 满足 |
性能 | |||
是否开源 | 开源 | 开源 | 开源 |
是否继续迭代 | 至今任在持续更新中 | 最近一次在两年前 | 任持续更新中 |
占用硬件资源 | 至少需要三台服务器,且需要搭建ftp服务器用于存储日志文件 | 服务器占用少,通常一两台足够 | 至少需要三台服务器,搭建es集群,logstash,且es占用内存打,建议单独使用一台 |
运行是否稳定 | 取决于flume采集,需要对flume架构有一定了解,并且flume三个核心组件的采集速率不一致,可能导致采集不稳定 | 经过知乎的调教,现已稳定运行,但后续如何无从知晓 | logstash占用内存大,且存在数据丢失问题,需搭配filebeat和kafka解决 |
安全性 | 可能存在数据丢失问题 | 有可能存在数据丢失问题 | |
维护开发成本 | 学习路线陡峭,架构复杂,维护难度适中 | 简单,便于维护 | 学习路线适中,架构复杂臃肿,维护难度适中 |
社区支持程度 | 社区稳定 | 开发者少,以知乎为主 | 社区活跃,官网主导 |
文档是否健全 | 源于apache基金会,文档健全 | 使用者少,文档几乎没有 | elastic.co官方详细文档支持 |
是否支持扩展 | 支持 | 不支持 | 支持 |
上手速度 | 需要有一定的大数基础,但有相应视频支持 | 架构简单上手速度快,无视频支持 | 操作相对简单,用户操作透明,有相应视频支持,但不全面 |
项目耦合 | 耦合性较小 | 耦合性较小 | 耦合性较小 |
易调试性 | 架构稍许复杂,但提供了对应的配置文件和监控台 | 调试简单 | 整体架构调试较为难 |
技术栈一致性 | 不一致 | 一致 | 一致 |
对高并发支持 | 支持 | 支持 | 支持 |