概述
日志对于分析系统及应用状态十分重要,但一般日志的数据量会比较大,并且分散在各个地方。
如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看,分析。
但如果服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此,一些集中式的日志系统也就应用而生。
目前比较有名成熟的有,Splunk(商业)、FaceBook 的Scribe、Apache 的 Chukwa Cloudera 的 Fluentd、还有ELK 等等。
ELK
什么是ELK
ELK不是一款软件,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana。这三款软件都是开源的,现在归于 Elastic.co 公司。
Elasticsearch
Elasticsearch 是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。作为ELK协议栈的核心,它用于集中存储数据。
截止2018年5月已更新至6.2.4
其具有如下特点:
- 实时(准实时)
- 分布式
- 面向文档
- 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)。
- 接口友好(RESTful)
Logstash
Logstash 是一个具有实时渠道能力的数据收集引擎。使用 JRuby 语言编写。
截止2018年5月已更新至6.2.4
其具有如下特点:
- 几乎可以访问任何数据
- 可以和多种外部应用结合
- 支持弹性扩展
组成部分包括:
- INPUTS, 从各种地方获取各种数据数据
- FILTERS, 过滤处理获取到的数据
- OUTPUTS, 将处理完的数据输出到指定地方(消息队列,或者 ElasticSearch中)
Kibana
Kibana 是一款基于 Apache 开源协议,使用 JavaScript 语言编写,为 Elasticsearch 提供分析和可视化的 Web 平台。它可以在 Elasticsearch 的索引中查找,交互数据,并生成各种维度的表图。
截止2018年5月已更新至6.2.4
ELK Stack
什么是ELK Stack
Elastic Stack 是 原 ELK Stack 在 5.0 版本加入 Beats 套件后的新称呼。Elastic Stack 在最近两年迅速崛起,成为机器数据分析,或者说实时日志处理领域,开源界的第一选择。
优势
和传统的日志处理方案相比,Elastic Stack 具有如下几个优点:
处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL设计,都是目前业界最通用的配置语法设计;
检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应;
集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。