1. 什么是ELK
官网:https://www.elastic.co/
ELK系统主要由三部分组成,分别是elasticsearch、logstash、kibana。
ELK系统收到推送过来的日志后,首先由logstash解析日志中的字段,分解成一个一个的关键字。elasticsearch将关键字与日志信息关联起来,以一种特定的格式化方式存储数据到硬盘。kibana提供与用户的交互界面,根据用户需求,从elasticsearch中读取信息并在网页上显示。
2. Elasticsearch(实时的查询和分析数据)
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的问题。
3. Logstash(收集、美化和传输数据)
Logstash具有灵活、开源、收集、美化和传输数据等功能,它能够处理不断增长的日志、事件和非结构化的数据来分配到多样的输出源,包括Elasticsearch。
3.1. 特性
l 集中处理所有类型的数据
l 规范化不同的模式和格式
l 快速实现自定义日志格式
l 简便的为指定数据源添加插件
4. Kinbana(浏览和可视化你的数据)
Kinbana是一个开源的可视化数据平台,通过巧妙的数据互动、强大的自定义图形仪表板能够帮你广泛的分享你独特的见识与洞察力。
4.1. 特性
l 灵活的分析和可视化平台
l 基于流数据的实时汇总与图表
l 为不同需求的用户提供直观的界面
l 即时分享和嵌入式仪表板
5. Linux环境下的elk搭建
5.1. 安装JDK
5.1.1. 下载JDK
elk运行依赖于 Java 运行环境,推荐使用最新版本的Java。下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
JDK 的安装方式比较简单,只需将下载回来的程序包解压到相应的目录即可。
# mkdir/usr/local/java
# tar-zxf jdk-8u45-linux-x64.tar.gz -C /usr/local/java/
5.1.2. 配置环境变量
#cd /etc
#vim profile
exportJAVA_HOME=/usr/local/java/jdk1.8.0_45
exportPATH=$PATH:$JAVA_HOME/bin
exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
在 Shell 提示符中执行 java-version 命令,显示如下结果,说明安装成功:
#java -version
javaversion "1.8.0_45"
Java(TM)SE Runtime Environment (build 1.8.0_45-b14)
JavaHotSpot(TM) 64-Bit Server VM (build 25.45-b02,mixed mode)
5.2. 安装node.js
5.2.1. 下载node.js
Kibana的运行依赖在node.js基础上,如果系统中没有node.js需要安装一下。下载地址:
https://nodejs.org/en/download/
假设我们把它们放在/usr/local下
5.2.2. 设置软链接
ln -s/usr/local/node-v6.2.0-linux-x64/bin/node /usr/local/bin/node
ln -s/usr/local/node-v6.2.0-linux-x64/bin/npm /usr/local/bin/npm
5.3. 准备工作(ELK软件下载)
5.3.1. 下载elasticsearch、logstash、kibana
下载地址:https://www.elastic.co/downloads/
假设我们把它们放在/usr/local下
5.3.2. 设置软链接
ln -s/usr/local/elasticsearch-2.3.3/ /usr/local/elasticsearch
ln -s/usr/local/logstash-2.3.2/ /usr/local/logstash
ln -s/usr/local/kibana-4.5.1-linux-x64/ /usr/local/kibana
5.3.3. 更改配置文件
5.3.3.1. Elasticsearch增加如下配置(/usr/local/elasticsearch/config/elasticsearch.yml)
cluster.name:my-application
node.name:node-1
node.master:true
node.data:true
path.conf:/usr/local/elasticsearch/config
path.data:/data/es-data
path.work:/data/es-work
path.logs:/usr/local/elasticsearch/logs
path.plugins:/usr/local/elasticsearch/plugins
bootstrap.mlockall:true
network.host:ip
http.port:9200
index.number_of_shards:5
index.number_of_replicas:1
5.3.3.2. Logstash新建logstash-indexer.conf文件(/usr/local/logstash/bin/conf/logstash-indexer.conf)
配置如下(最简配置):
input {
stdin {}
}
output{
stdout {
codec => rubydebug
}
elasticsearch { hosts =>["localhost:9200"] }
}
注:input为输入源,output为输出源
Stdin表示控制台输入
Stdout表示在控制台输出
codec=> rubydebug表示以rubydebug风格展示
elasticsearch{ hosts => ["localhost:9200"] }表示输出到本机9200端口
当然在实际生产中会加入更多的元素,比如:input是从log文件输入,还可能会加入filter过滤器来过滤数据的输入和输出样式,output中也可能是多输出源等,相关资料请参看官方网站。
5.3.3.3. 修改kibana.yml(/usr/local/kibana/config/)
在kibana.yml中增加elasticsearch.url:"http://localhost:9200"
5.3.3.4. 创建elasticsearch配置目录
mkdir/data
mkdir/data/es-data
mkdir/data/es-work
mkdir/usr/local/elasticsearch/logs
mkdir/usr/local/elasticsearch/plugins
5.3.4. 由于elasticsearch不能用root启动,所以我们创建es用户来操作
5.3.4.1. 创建es用户:
useradd es 设置密码:passwd es
5.3.4.2. 更改/usr/local/elasticsearch/、/usr/local/logstash/、/usr/local/kibana/文件夹及子目录所有者为es
# cd /usr/local
# chown-R es:es elasticsearch
# chown-R es:es elasticsearch-2.3.3
# chown-R es:es logstash
# chown-R es:es logstash-2.3.2
# chown-R es:es kibana
# chown-R es:es kibana-4.5.1-linux-x64
# cd /
# chown-R es:es data
至此,整个环境的搭建已经完成,让我们来启动程序测试吧!
# su es
启动elasticsearch
# /usr/local/elasticsearch/bin/elasticsearch
新开窗口启动logstash
#/usr/local/logstash/bin/logstash –f conf/logstash-indexer.conf
新开窗口启动kibana
#/usr/local/kibana/bin/kibana
大功告成,Let’senjoy it!
http://ip:5601/
谢谢阅读,^_^