Elastic Stack
是 原 ELK Stack 在 5.0 版本加入 Beats 套件后的新称呼。
Elastic Stack
在最近两年迅速崛起,成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。和传统的日志处理方案相比,Elastic Stack 具有如下几个优点:
处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
配置简易上手。Elasticsearch 全部采用 JSON
接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计;
检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应;
集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。
ELKstack官方网站
图样功能展示
一、简介
ELK由Elasticsearch
、Logstash
和Kibana
三部分组件组成;
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用
kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
redis 缓存或中间件 本次没有添加,如果您的业务需要,自己加入即可,主要功能 解耦 异步提高效率。 也可以对 Kubernetes 集群进行日志的收集,具体的应用,请查阅K8S专栏。
ELKstack官方网站
二、Elkstack 常见架构
1 Elasticsearch Logstash Kibana
- 这是一种最
简单
的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。这种架构虽然是官网介绍里的方式,但是往往在生产中很少使用。
2 Elasticsearch Logstash filebeat Kibana
- 本次部署采用这种架构,架构图见文章头部
- 与上一种架构相比,这种架构增加了一个
filebeat
模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,但是这种架构有一个缺点,当logstash出现故障, 会造成日志的丢失。
3 Elasticsearch Logstash filebeat redis
- Kibana Elasticsearch Logstash filebeat redis(也可以是其他中间件,比如kafka)
- 这种架构是上面那个架构的完善版,通过
增加中间件
,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。目前我司使用的就是这种架构,我个人也比较推荐这种方式。