ELKstack 搭建日志管理平台

来源:互联网 发布:js实现select效果 编辑:程序博客网 时间:2024/06/05 06:53

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消耗大量资源和网络带宽,最终导致宿主机宕机。

so…
To be continue…

0 0