SPLUNK和ELK商用解决方案用过的都来评价一下,优劣势都讲一讲,还有没有其他选择?

RT

2回答

刘康刘康  系统分析师 , 日志易
thzzc1994日志易Ardusty赞同了此回答
上面的回答已经说的很详细,作为日志分析领域的厂商 日志易 也对splunk很佩服。老牌的日志分析厂商,如果非要在splunk与ELK之间选择,还是使用splunk吧。ELK 在入库、搜索方面完全不是splunk对手,可以说不是在一个层级上。另外也建议关注一下 日志易,目前在某些方面比splunk...显示全部

上面的回答已经说的很详细,作为日志分析领域的厂商 日志易 也对splunk很佩服。老牌的日志分析厂商,如果非要在splunk与ELK之间选择,还是使用splunk吧。ELK 在入库、搜索方面完全不是splunk对手,可以说不是在一个层级上。
另外也建议关注一下 日志易,目前在某些方面比splunk还差点(已经很小了),但是我们做的项目,客户的认可度还是比较高的。

收起
 2019-09-07
浏览2058
aixchina 邀答
zhuhaiqiangzhuhaiqiang  项目经理 , 银行
Ardusty刘康赞同了此回答
Elk和splunk的区别调研报告 Splunk(商业软件,收费)介绍: 1、从功能上讲,Splunk是一款功能完善、强大的机器数据(MachineData)分析平台,涵盖机器数据收集、索引、搜索、监控、分析、可视化、告警等功能。2、Splunk还提供了强大API集,语言实现是用C/C++,Python,开发人员可以使用Pyth...显示全部

Elk和splunk的区别调研报告

Splunk(商业软件,收费)介绍:

1、从功能上讲,Splunk是一款功能完善、强大的机器数据(MachineData)分析平台,涵盖机器数据收集、索引、搜索、监控、分析、可视化、告警等功能。
2、Splunk还提供了强大API集,语言实现是用C/C++,Python,开发人员可以使用Python、Java、JavaScript、Ruby、PHP、C# 编程语言开发应用程序。
3、从技术上讲,Splunk是一个时间序列索引器(time-seriesindexer)。在Splunk索引数据时,它基于数据的时间戳(Timestamp)将数据拆分为事件(Event)。事件通常也称为记录或者数据行,并且每一个时间都有一个时间戳,它是Splunk数据分析的一个关键元素。

Elk(开源软件,免费)介绍:

1、ELK 由三部分组成elasticsearch、logstash、kibana,elasticsearch是一个近似实时的搜索平台。
2、Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是Elasticsearch能够执行复杂的全文搜索的原因之一。
3、Logstash:客户端用ruby实现,依赖JRuby等,日志收集工具,可以从本地磁盘,网络服务(自己监听端口,接受用户日志),消息队列中收集各种各样的日志,然后进行过滤分析,并将日志输出到Elasticsearch中。
4、Kibana:可视化日志Web展示工具,对Elasticsearch中存储的日志进行展示,还可以生成炫丽的仪表盘。本质上是elasticsearch web客户端,是一个分析和可视化elasticsearch平台,可通过kibana搜索、查看和与存储在elasticsearch的索引进行交互。可以很方便的执行先进的数据分析和可视化多种格式的数据,如图表、表格、地图等。Discover页面:交互式的浏览数据。
5Grafana 是一个开源仪表盘工具,它可用于Graphite、InfluxDB与 OpenTSDB 一起使用。最新的版本还可以用于其他的数据源,比如Elasticsearch。

Splunk和elk对比:

1、es是一个基于Lucene的开源搜索服务,是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
2、Elastic不支持搜索时的字段抽取,也就是说Elastic的文档中的所有字段在索引时已经固定了,而Splunk支持在搜索时,动态的抽取新的字段
3、Elastic的搜索是基于评分机制的,搜索的结果有一个打分,而Splunk没有对搜索结果评分
4、准实时(NRT)
Elasticsearch是一个准实时性的搜索平台,从数据索引到数据可以被搜索存在一定的时延。 Splunk同样是准实时的,Splunk的实时搜索(Realtime Search)可以提供不间断的搜索结果的数据流。
5、索引(Index)
es—索引是有共同特性的文档的集合,索引有自己的名字,可以对索引执行搜索,更新,删除等操作。 Splunk——类似Elastic的索引,所有的事件物理存储在索引上,可以把索引理解为一个数据库的表
6、文档(Document)–es
文档是索引信息的基本单元。Elastic中文档表现为JSON对象,文档物理存贮在索引中,并需要被制定一个类型。因为表现为JSON, 很自然的,文档是由一个个的字段(Feilds)组成,每个字段是一个名值对(Name Value Pair)
7、事件(Event)
对应于Elastic的文档,Splunk的数据索引的基本单元是事件,每一个事件包含了一组值,字段,时间戳。Splunk的事件可以是一段文本,一个配置文件,一段日志或者JSON对象。
8、(1)Elastic栈使用Logstash和Beats来进行数据的消化和获取。 Logstash用ruby实现,有点像一个数据管道,把输入的数据进行处理,变形,过滤,然后输出到其它地方。Logstash 设计了自己的 DSL,包括有区域,注释,数据类型(布尔值,字符串,数值,数组,哈希),条件判断,字段引用等。 Logstash的数据管道包含三个步骤,Input,Filter和Output,每一步都可以通过plugin来扩展。另外Input和Output还支持配置Codecs,完成对输入输出数据的编解码工作。

Beats是 Elastic 从 packetbeat 发展出来的数据收集器系统。beat 收集器可以直接写入 Elasticsearch,也可以传输给 Logstash。所有的 beat 工具,在配置上,除了 input 以外,在 output、filter、shipper、logging、run-options 上的配置规则都是完全一致的。目前 beat 可以发送数据给 Elasticsearch、Logstash、File、Kafka、Redis 和 Console 六种目的地址。

(2)Splunk使用Farwarder和Add-ons来进行数据的消化和获取。 Splunk内置了对文件,syslog,网络端口等input的处理。当配置某个节点为Forwarder的时候,Splunk Forwarder可以作为一个数据通道把数据发送到配置好的indexer去。这时候,它就类似logstash。这里一个主要的区别就是对数据字段的抽取,Elastic必须在logstash中通过filter配置或者扩展来做,也就是我们所说的Index time抽取,抽取后不能改变。Splunk支持Index time的抽取,但是更多时候,Splunk 在index time并不抽取而是等到搜索是在决定如何抽取字段。 对于特定领域的数据获取,Splunk是用Add-on的形式。Apps / Add-ons, Splunk提供大量的应用和数据获取的扩展

9、数据存储管理

在对数据的存储管理上,Elastic 和Splunk都是利用了倒排表。Splunk对数据进行压缩,所以存储空间的占用要少很多,尤其考虑到大部分数据是文本,压缩比很高的,当然这会损失一部分性能用于数据的解压。

10、数据分析和处理

对数据的处理分析,ElasticSearch主要使用 Search API来实现。而Splunk则使用的是SPL,相比起ES的Search API,Splunk的SPL要好用很多,可以说SPL就是非结构化数据的SQL(SPL文档链接:http://docs.splunk.com/Documentation/Splunk/latest/SearchReference/SQLtoSplunk)。无论是利用SPL来开发分析应用,还是直接在Splunk UI上用SPL来处理数据,SPL都非常易用。开源社区也在试图为Elastic增加类似SPL的DSL来改善数据处理的易用性。ES为用户提供两类查询API,一类是在查询阶段就进行条件过滤的query查询,另一类是在query查询出来的数据基础上再进行过滤的filter查询。这两类查询的区别是:

• query方法会计算查询条件与待查询数据之间的相关性,计算结果写入一个score字段,类似于搜索引擎。filter仅仅做字符串匹配,不会计算相关性,类似于一般的数据查询,所以filter得查询速度比query快。

• filter查询出来的数据会自动被缓存,而query不能。

11、数据展现和可视化 Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示 Splunk集成了非常方便的数据可视化和仪表盘功能,对于SPL的结果,可以非常方便的通过UI的简单设置进行可视化的分析,导出到仪表盘。

12、splunk 提供了权限管理,elk在安装了x-pack后或者将kibana替换为grafana支持对用户权限管理。( 是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,在Elasticsearch 5.0之前,你必须单独安装Shield插件,还要配套Watcher, Marvel等插件,现在X-Pack把它们都整合到一块儿了)

13、splunk操作界面支持全中文,elk不支持

14、几个关键字段,index,host,sourcetype这几个最好自定义处理,这样达到灵活日志切割,而logStash是没有这个功能的。

15、警告 Splunk的警告:

a) 根据搜索定义告警。 告警在后台实时运行报表(按计划或实时),使用告警以监视和响应特定事件。 告警使用保存的搜索来实时或按计划查找事件。 当搜索结果符合特定条件时会触发告警。 在告警触发后, 您可以使用告警操作来响应 。

b) 采用计划告警来定期搜索事件, 并监视他们是否满足特定条件。 计划告警适用于立即或实时监视并非优先事项的场景。

c) 实时告警持续搜索事件。 他们适用于要求立即监视和响应的场景。 您可以使用每个结果都会触发一次的实时告警, 或只有在指定滚动时间窗内满足特定条件时才会触发的实时告警。

Elk的警告:

a) elk环境 + ElastAlert(基于es层面的监控告警框架) 实现告警功能,eg:每10秒轮询Elasticsearch的mysql-connection-log-*索引,若在10分钟内mysql总连接数超过750个的次数超过2次,则向相关人员发送告警短信。

b) 使用grafana替换kibana实现告警和监控 利用Grafana实现报警, Grafana是一个开源的指标量监测和可视化工具(类似于kibana)。

Grafana的介绍参见kibana与grafana区别文档。

  1. Elk中涉及到的机器学习内容:5 月份 Elaticsearch 推出了新版本 5.4,在 X-pack 中的 beta 特性中,加入了 Machine Learning 这个特性。目前,X-Pack Machine Learning 功能的着眼点是,利用无监督式机器学习,提供 “时间序列异常检测” 功能。以后将计划增加更多 Machine Learning 功能,但是我们目前只专注于为用户存储的时间序列数据(例如日志文件、应用程序和性能指标、网络流量或 Elasticsearch 中的财务/交易数据)提供附加值。” 这就是说,大家可能比较期待的有监督学习或者什么深度学习并没有集成进来,而更多的还是 Elasticsearch 更擅长的时间序列分析。
收起
 2019-09-04
浏览2190

提问者

张富贵数据库运维工程师, 京港地铁

日志分析平台选型优先顺序调研

发表您的选型观点,参与即得50金币。

问题状态

  • 发布时间:2019-08-30
  • 关注会员:4 人
  • 问题浏览:3177
  • 最近回答:2019-09-07