ELKstack 是 Elasticsearch、Logstash、Kibana 三个开源软件的组合。在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称。
ELKstack 具有如下几个优点:
处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,是目前最通用的配置语法设计;
检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到百亿级数据查询的秒级响应;
集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。
[Elasticsearch]
Elasticsearch是一个分布式实时搜索分析引擎,其搜索引擎基于Lucene。 ES官网再三强调自己不仅仅是一个Lucence,再Lucence之上还可以做到:
A distributed real-time document store where every field is indexed and searchable
A distributed search engine with real-time analytics
Capable of scaling to hundreds of servers and petabytes of structured and unstructured data
【ES安装】
最新版本ES是2.0.0 官方下载链接 下载deb包安装
在此之前,因为ES依赖java,所以我们需要先安装1.7以上版本的jre。
【ES配置】
关于ES的配置都在这个目录下,我们主要配置elasticsearch.yml
配置文件注释非常的详细,主要是配置集群信息、节点信息、索引、网络等参数。这里图中红色箭头标识出的字段值得注意一下
cluster.name : ES通过该字段来配置集群。当我们在一个节点上安装一个ES之后,它默认集群名字是elasticsearch,然后我们又去内网中另外一个节点安装ES,它默认名字也是elasticsearch,你会发现,这两个ES自动构建成一个集群。
node.name : 该字段是该节点名字。
ES http默认监听端口 9200, tcp默认监听端口是9300
【ES API】
这里介绍一些简单的API,目的是为了验证我们安装成功以及验证后面的例子。
curl 'http://localhost:9200/?pretty' ES基本信息,可以判断我们ES集群运行正常。
curl 'localhost:9200/_cat/health?v' 查看节点状态
这里我们关注的字段是 status
status一共有3个取值 : red (挂了),yellow(有一些问题,但不要紧)、green(完全正常)
通常yellow是因为存储未完全同步,问题不大。
curl 'localhost:9200/_cat/indices?v' 查看索引
ES提供更多的API加载一个doc,建立索引,搜索等功能。在这里我们主要介绍如何搭建一个日志管理平台,因此后续API不一一做介绍。更多API详见 这里。
[Logstash]
Logstash是一个基于java开源的数据收集引擎。
【Logstash安装】
Logstash依赖java,需要安装jre1.7以上版本.
最新版本Logstash是2.0.0 官方下载链接
与ES一样,下载deb包安装。
【Logstash配置】
我们主要配置的是
/etc/logstash/con.d/logstash.conf
一个标准的conf由三部分组成:
配置完成后,需要重启logstash服务。
[kibana]
kibana作为ES可视化web平台而设计。在早期,logstash自带web叫做 logstash-web用于查看ES中的数据,然而功能过于简单,于是后期又开发了Kibana。第一个Kibana用php语言发布,随后又用ruby重写,发布了Kibana2,再之后又有了angularjs版本的Kibana3.最后由ES公司重构出Kibana4。由于Kibana3和Kibana4的侧重点不一样,因此3和4在并存使用。
本文使用的是Kibana4
【Kibana安装】
最新版本Kibana4.2.0 官方下载链接