Splunk是日志/流式数据领域中做的最好的商业软件实现,它的核心能力只有一个:
像Google那样搜索企业内部所有产生的日志
这个的威力非常大,现在的企业不缺数据,缺的是有效挖掘数据的能力。而显然大部分企业没有Google的能力去做搜索,于是Splunk提供这样的能力。与之相竞争的开源实现有Logstash。
Splunk ≈ Logstash
Logstash = Redis(传输) + ElasticSearch(搜索) + Kibana(展现)
ElasticSearch = Lucene + Search
Splunk官网上有,我就不替他们做广告了,总之,很贵,一万美元能买1G的流量每天。言归正传,我还是分析一下这个玩意儿的一些功能特性吧。
首先,Splunk有一个很炫酷的界面
可以看到,Splunk的主要使用方式就是那个搜索框,在里面输入一种叫做SPL的搜索语言,就能获取到你想要的各种信息了。Splunk能在后台对数据进行过滤、聚合、统计,最后得到各种报表、图像
SPL是一种向SQL致(chao)敬(xi)的语言,语法非常的类似,不同的是,SPL搜索的不是关系数据库,而是输入到Splunk系统中所有的日志数据,以下是几个具体的案例:
可以看到,对于一行SPL搜索语句
sourcetype = syslog ERROR | top user | fields - precent
Splunk是这么干的,
最后看到,这个搜索干了什么事情呢?它一下子就把日志中出错最多的前十个用户给统计出来了,这样后续程序员就能跟踪这些错误为什么产生,然后着手去解决。
| where distance/time > 100
使用where,对日志中两个字段进行相除后比较。
Splunk主要做了3件事
以上几点,就决定了Splunk的市场非常的大,这家公司的概念是流式数据领域的数据仓库,2012在纳斯达克上市,不过这两年被人做空,股票大跌。因为很多云计算厂商都能提供这种服务,例如阿里云1MB/S都是免费的。
Logstash是个开源的日志搜索工具,也是一体化的开箱即用的产品。基本上,能实现Splunk六成的功力。Web没有那么强,也没有SPL这样简单的语言,ElasticSearch需要通过Json来查询,Kibana的搜索语句能力有限。目前可以说Logstash这个项目还在成熟期。需要后续很多的工作才能做好。
这么比较其实不是很公平。
Kafka只解决了日志的统一搜集、传输、序列化存储问题。Splunk做的更多些,还做了数据索引的深加工。
同时,Kafka需要在源头使用schema来定义数据格式,严格,有利于后期的消费程序使用。
Splunk却对源头数据要求没有那么高,对现有系统改动小,因为是个企业软件,需要追求兼容性。
从高可用方面来看,Splunk目前还没有一天搜集几个T的数据的案例,Kafka在这方面的能力绝对没有问题。
Kafka是个比较好的车身框架,但还缺一个强大的发动机和不少内饰;Splunk是一辆功能完善的车子,就是价格很贵,而且没有在150码以上开过的案例。
所以,对于Kafka,可能的总体解决方案有:
Kafka + YARN + Hadoop = Samza(Linkin)
Kafka + Strom + MySQL
Kafka + ElasticSearch + Kibana
Splunk和Logstash可以说是日志处理领域较为成功的商业和开源产品了
—— 但是,我认为对于云计算厂商来讲,还有两个产品可以做分析,那就是2014年开始有的阿里云的简单日志服务SLS,以及亚马逊的Amazon kinesis。
欲知后事如何,且听下回分解 ~~
探索 Splunk ,搜尋處理語言 (SPL) 入門和操作手冊 —— 繁体的技术手册,估计是Splunk找台湾人翻译的吧
ElasticSearch 权威指南 —— 上海的一家互联网公司,做EverMemo和食色的那家,的某位员工翻译的
访谈与书评:《LogStash,使日志管理更简单》 —— 英文原书要9刀,作者穷疯了……还是看看评论吧
《通过 ElasticSearch 进行可伸缩搜索》
《使用logstash+elasticsearch+kibana快速搭建日志平台》
《LogStash日志分析系统》
《logstash VS splunk》