快速理解ELK

ELK是什么

ELK主要是代指Elastic Stack,它是elastic技术生态栈中的3个主要组件的缩写.这3个组件是: elasticsearch,logstash,kibana.

后面随着技术的完善又加入了beats.其中最为大家熟知的就是filebeats. filebeats不是beats里面的唯一组件,beats是一个大的家族,更多的beats组件请看: beats

多年的发展后,Elastic Stack已经从最初的elasticsearch发展为一个完善的由多个组件共同协作的完善的生态.

它主要用于如下几个场景:

  • 搜索

    • 一些在线购物网站基于elasticsearch做为商品搜索.比如京东,腾讯和阿里有广泛的使用
    • 通用网页搜索引擎,比如duckduckgo
    • 社交网站,博客网站的垂直搜索
  • 日志检索

    • 云端日志的检索,方便开发人员定位问题,以往需要在Linux上手动查看日志现在可以直接在kibana上快速收集服务群的日志
  • 系统状态信息的收集,检索,可视化展示. 大量用于云端服务群的状态感知上

    • 服务集群的指标信息可视化展示
    • 服务日志的检索
    • 业务运营信息的可视化
    • 服务集群的状态感知和异常状态捕获,告警
  • 大数据分析

ELK间的关系是什么

简单的讲是上下关系:

  • elasticsearch是核心负责数据的存储,对数据做索引并提供检索服务
  • logstash是原始数据的传输通道,提供一些高级的功能,比如对原始数据做一些处理将无格式的数据转化为某种格式的数据后提供给elasticsearch
  • beats是数据的采集代理,一般安装在被采集的服务器上,抓取目标服务器的各项数据传输给logstash

原始数据其实可以直接发送到elasticsearch,这是最原始的方式,这种方式的话对elasticsearch的压力会大一些,比如数据量周期性波动会导致承载elasticsearch的服务器周期性的面临压力.

为了解决上面的问题,logstash出现了,它相当于elasticsearch的小秘书,将原本要发送到elasticsearch的数据先简单整理归纳一遍然后再发送到elasticsearch中,这样省去了elasticsearch接受原始数据的压力,让elasticsearch专注于数据的处理和保存

logstash的功能比较全面并且资源耗费略大,如果只是需要采集目标的数据并不需要做过多的数据处理,那么我们只需要一个轻量的采集器即可,这时就出现了go语言写的beats,你可以认为beats就是快递员,它将各个零散目标上的数据不断的快递到秘书logstash这里. 这样就不必再每个目标上安装logstash了. beats除了可以发送数据到logstash外,也可以直接发送到elasticsearch

有些公司也会在快递员beats和秘书logstash间建一个类似于快递柜功能的缓存销峰系统. 比如在beatslogstash间使用kafka来做传输的管道,这样就可以在日志数据瞬间变大的时候挡住这个瞬间的峰值,让logstashelasticsearch始终以相对平滑的资源占用稳定的运行.

Elastic Stackelasticsearch处于核心地位,其余的部分其实是可选的.elasticsearch通过RESTFul API和SDK暴露自己的交互接口,外围的服务能发送自己的数据到elasticsearch中就行.

至于kibana则是前端的展示,用于将elasticsearch的数据直观的呈现出来.

下面的图片清晰的展示的上面我讲的关系

image

本文原创链接: 快速理解ELK

你可能感兴趣的:(快速理解ELK)