你不会是程序猿吧?

新手想请教大家在公司里边是有什么应用会用到ES和kibana吗?

默认分类 | 作者 mangolzy | 发布于2016年07月15日 | 阅读数:8051

接触ELK已经有快三个月了,但是是在架构部的实习中接触的,只了解其部署,导入数据,建立索引,查询等简单操作。
 
但是,我一直想不明白的是它的应用场景,比如,github网站本身有利用es来进行全站搜索我是明白的。
 
再但是,那其他大型公司在自己的企业级问题上面,是怎么用到ES、kibana的呢?因为我能查到的资料都是他们很好用,但是并不理解具体的使用场景,即使是在自己的公司集群上,在导入了数据的集群上面使用kibana,也不知道输入某个字段的数据去搜索,然后对企业级的问题有什么意义????  
 
资料显示ELK一般用在日志检索(指的是运维数据?)和业务数据(比如订单?)上面,意思是系统部署好,被关注的数据流入以后,是个人去针对自己碰到的问题去查询搜索????还是有别的场景呢?
 
能做统计?或者筛选?但是这些在没有ES之前是怎么做的呢?
 
最好能分享一个具体的使用场景,给我们新手一个直观的印象。
 
非常感谢~~~~
 
(PS: 错过了杭州线下分享真是很桑心呢)
已邀请:

yqcute

赞同来自: mangolzy

同样作为一名es的新手,也有跟楼主同样的疑问。简述一下在我们公司接触到的es的使用场景。主要分为三个方面:日志检索,线上业务搜索,零散功能的统计。
1、日志检索
  像楼主说的,也是将日志存入es,进行搜索。这些日志不仅仅是运维的数据(如nginx,apache的日志),更多的是主动记录的一些线上业务的一些访问日志(如某个公共服务的访问日志)。简述一个使用es日志检索的例子(该例子让我觉得es真是一个好东西)。
  在某个月的25号(时间大概就好,不要纠结),运营人员来反应某个用户的账号被锁定了,不能够登陆。这时候开发需要搞清楚这是什么原因。系统里查出该用户的最后一次登录实在17号,接下去就没有登录了。可以确定用户是在17到25号这段时间账号被锁定的。
  这时候如果按照以前的思路,则需要去线上多台机器将系统的访问日志打包聚合并下载下来(并且要切割好的17-25号的日志,不然会太大),然后用shell+awk对日志进行筛选,辨别,查找原因。
  这时候,刚好我们将这块的日志导入到了es里面(es里面日志之保存一个月)。这时,我们直接通过kibana写了一个uid:"123456789"的搜索语法,搜索17-25号的该用户相关的访问日志。花了大概2秒左右,搜索出来了20几条记录。简单筛选一下访问记录,就找到原因。是因为有一个业务需要先锁定用户,再解锁用户。然而在解锁的时候,请求失败了,发生了304的错误。导致了解锁账户失败,而调用方又没对该情况做处理。导致了这个问题。
  本来至少要一个下午导数据,筛选数据,分析数据的过程(运维+开发的时间),用了es以后,2秒就搞定了。
2、线上业务搜索
  本来公司的业务的的全文索引是使用mysql的sphinx的。sphinx有一个缺点,如果有新创建的数据,就需要做增量索引,并且在第二天的凌晨对之前的所有数据进行重建索引。即使做增量索引,其新增数据到可以搜索出来,至少要10-15分钟的时间。并且sphinx是不允许修改单条记录的信息的。导致如商品信息的搜索如果用sphinx的话,如果商品库存发生变化,没办法及时更新相关数据。
  后来我们将搜索切换到es引擎上。以社区的帖子搜索为例子。新增一个帖子,如果用sphinx的话要延时一段时间才能够生效。如果用es,在帖子发布或者编辑的时候,可以直接通过es提供的restful服务,通过post请求增加修改数据。基本上可以做到实时搜索。更重要的是,创建或更新es的索引的成本很低,速度很快。其他的如电商品台的商品搜索等都可以使用es达到很好的搜索效果。
 
3、统计需求
  统计的话。es结合kibana来做会很强大。具体业务上有一些零散的统计需求。如某个业务上线,需要统计某个功能点的使用人数,每天的使用分布。
如果按照以前的思路,则需要写代码记日志(或者直接存redis,简单算一个总量),然后用代码(shell或python等)对日志进行解析统计。
如果用es+kibana的话。根据需要统计的字段,将数据存入es。通过kibana的图形界面进行展示。会非常方便
 
写的不好,似乎都和楼主说的差不多,只不过附上了一些使用场景。希望大家可以分享一下其他的使用场景
 
 
 
 
 
 
 
 
 
 
 
 

mangolzy

赞同来自:

手动再赞一遍啊!还有原来方案和es的对比,场景还是很生动的,感觉答主才是在弄es的,如果不知道上层需求是啥,或者只知道数据量、查询反应要求等等来配置感觉还是有点蒙~

要回复问题请先登录注册