共计 2411 个字符,预计需要花费 7 分钟才能阅读完成。
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 由三部分组成:
- 1.input 数据来源,这里是抓 nova-scheduler 的日志信息。input 支持的插件
- 2.filter 用来配置过滤信息,可以没有。filter 支持的插件
- 3.output 数据去向,这里是将数据传递给 elasticsearch。output 支持的插件
配置完成后,需要重启 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 官方下载链接
【Kibana 配置】
通常我们配置 /kibana/config/kibana.yml 文件
简单的配置就是图中红色箭头标注内容,Kibana 监听的地址和端口,还有 ES 的地址。
[Kibana 运行]
/kibana/bin/kibana 或者丢到 nginx 运行。
运行后,访问 http://localhost:5601
Kibana 将日志信息一条一条的展示出来。
也可以通过 Visualization 模块用图表方式展现统计数据:
至此我们通过 ELKstack 捞出了 nova-scheduler 的日志信息。这只是简单的一个部署配置介绍,如果要在生产环境使用,还需要考虑更多的因素。ES 和 logstash 会消耗大量的 cpu 和内存,在配置时需要考虑性能调优,logstash 在传输日志基于 http,需要考虑其网络带宽消耗情况。万一我们监控的服务异常,日志疯狂输出,会带动 logstash 消耗大量资源和网络带宽,最终导致宿主机宕机。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-08/134167.htm