logstash VS splunk

web 系统是典型的分布式部署,由此对其运行情况,硬件运转状况监控也显得尤其重要,这些监控数据表面上对业务运行没有多大的用处(属于基础数据),但正是这些基础数据造成了业务“流”。好比,用户搜索爱好,浏览商品爱好,购买爱好、分布,用户成员之间的关系(在推荐系统中比较常见)。java

 

如今成熟的web监控系统,有logstash—开源免费,splunk—不开源,有免费的版本但数据大小有限制,如今对比下这两个系统,我跳过这两个系统安装步奏。python

LogStashweb

一、定义: 时间+事件=日志;redis

二、语言实现:windows

          客户端用ruby实现,依赖JRuby等,嵌入了elasticsearch,造成logstash-1.2.2-flatjar.jar 大约20M的包,我的而言很不喜欢这种方式,在生产环境中是不会把存储和搜集放到一个地方的,但官方却加入了es且你不能修改配置。后端

三、体系架构:        ruby

能够看出这是典型的:数据源+Broker+存储+webUI,这套体系很是灵活从数据采集到数据输出均可以自定义,尤为是后端的Search 使用ES,ES这个搜索引擎鼎鼎大名,我很是喜欢他查询DSL,呵呵。架构

四、input ,output配置:elasticsearch

 

这是个最简单的日志监控了,结果输出到es中,固然也能够输出到redis中,这里的输出位置能够配置是个很讨人喜欢的功能;其input的type是ES的存储索引表,这个能够自定义,其余filter也是能够配置的这样能够只收集须要的信息,很是灵活,(splunk也可自定义的,下面我再分析)(题外话,logstash在windows安装有点麻烦,要仔细点),咱们看看官方提供的配置,以下分布式

这里我只截了部分图,能够说很是齐全,具体的能够参考http://logstash.net/docs/1.2.2/    

五、ES 存储:

这里存储也是能够配置的,我配置为3个片,2个副本,其实日志属于内部使用,访问量很小,因此能够节约点用存储成本,从上面能够看出索引名是系统自动生成的好处是很明显一天一个日志类别,很差的是若是我想某个域下的日志放到一块儿,是不能自定义的。

能够看出其日志搜集是一行一行读取的,若是你在记事本写一大块日志信息而存储到ES中,可能回出现多行日志的错觉,这个不是很重要

六、web UI:

logstash 1.2.2版本使用了全新的webUI 大体是htm5+JS构成,这样能够搭建个独立web Ui 而没必要像以前的版本那样”粘“在一块儿。这个UI和splunk UI有点相似,但其功能远没有splunk UI丰富

七、事件预警:

          logstash 能够执行script,exec程序达到预警的做用(本人没有使用这个功能)

八、外部接口:

           ES rest风格接口很是强大,彻底能够定制化

基于上面几个方面的对比,logstash 这套系统,配置灵活,天生融入ES引擎,webUI 就我我的来讲其体验很差,单调繁琐,可能之后的版本的会改进吧。若是你有时间彻底可使用其数据源服务,后端存储使用ES,WEbUI 本身写

 

 

 Splunk 

一、定义:IT数据收集,分析器 。范围挺广的

二、语言:C/C++,Python

三、架构:

splunk 不开源,其关键模块index,我猜测可能为luncen C++版本吧(现成的不要,难道从头至尾写搜索引擎?)

四、input,output 配置:

splunk配置更为强大,提供了默认的全局配置(default),及个性化定制(local),收集的数据颇多

从配置能够看出Index 这个关键配置,filter也是能够配置的,是能够把数据按需分别存储的,这个比logstash 灵活,其中host是机器名,推荐手写,不然splunk 自动收集未必是你想要的

五、服务端存储:

增长indexes.conf配置,默认全部数据存储到main索引中,推荐数据分开存储,因为其不开源,因此没法看到内部数据存储具体样式,固然能够看到存储文件路径的

六、web UI 

 几个关键字段,index,host,sourcetype这几个最好自定义处理,splunk 提供如下几个很是有用的功能

     1)、是“字段提取”,这样达到灵活日志切割,而logStash是没有这个功能的,可是splunk 的字段提取是在搜集以后执行的,若是在收集数据时就执行这个功能,那性能应该比收集完后提供高

     2)、splunk 提供了job配置功能,这个相似数据存储过程了,很是强大,如图。(我手动执行的这个job,统计30秒内日志中错误,按类别,host,因为Job太多因此不贴图了)

 

     3)、splunk 提供了权限管理,这个也很棒的

     4)、能够把除日志以外的数据手动上传到splunk,splunk实现分析,统计

     5)、splunk支持集群搜索

     6)、支持UI端索引操做

     7)、五花八门的报表,这个有点花俏了—我的观点

七、外部接口

    支持REST风格的python,java,C#客户端

八、预警功能

    预警功能是我本身开发的一个子程序,很简单,项目内部使用RX net EDA驱动和TASK协做实现,支持邮件,短信,只需配置就几个文件就好了,报警形式大体 如:

    “时段:xx,机器:xx,类别:xx,数量:xx”,项目结构以下:

九、splunk 提供的功能五花八门,经常使用的就那么几个

十、splunk其余功能这里我再也不赘诉

总结以下:

这两个系统,架构都遵循了,数据源+格式化,过滤+分布式存储+web UI,其实这里也隐含了监控系统架构的模式

1)、独立agent或者是寄宿式agent,(咱们内存net异常监控AIC系统就是使用的寄宿式agent)

2)、直接和服务端交互或者经过broker (分布式系统中大多使用了broker这种模式)

,在结构上logstash 更加灵活,而splunk 一手包办,从目前来看splunk功能更强大,之后呢?期待logstash,我更喜欢开源的项目

3)、这两个系统都缺少事件处理跟踪了,固然这个有点超出其系统自己范围了,而咱们内部的AIC系统是集成了net日志搜集,分析,事件跟踪但缺乏通常日志收集分析,正好两者互补了。

相关文章
相关标签/搜索