1 软件介绍
1.1 Elasticsearch
Elasticsearch is a distributed, RESTful search and analytics engine capable of solving a growing number of use cases. As the heart of the Elastic Stack, it centrally stores your data so you can discover the expected and uncover the unexpected.
Elasticsearch是一个分布式的RESTful搜索和分析引擎,能够解决越来越多的用例。 作为弹性堆栈的核心,它集中存储您的数据,所以你能够自主的操作您的数据。
大概意思是说,ES既可以为用户提供数据存储,有能为用户提供用户接口以作数据分析。
官网:https://www.elastic.co/products/elasticsearch
1.2 Logstash
Logstash is an open source, server-side data processing pipeline that ingests data from a multitude of sources simultaneously, transforms it, and then sends it to your favorite “stash.” (Ours is Elasticsearch, naturally.)
Logstash是一个开源的服务器端数据处理管道,它从多个源同时获取数据,对其进行转换,然后将其发送到您所想要的“存储”(这里主要是ES)。
大概意思是说,Logstash是一个不局限于数据源和目的源的数据管道工具,它提供了各种数据源插件,以供用户搜集、转换不同的日志。
官网:https://www.elastic.co/products/logstash
1.3 Kibana
Kibana lets you visualize your Elasticsearch data and navigate the Elastic Stack, so you can do anything from learning why you're getting paged at 2:00 a.m. to understanding the impact rain might have on your quarterly numbers.
Kibana让你可视化你的Elasticsearch数据和导航弹性堆栈。让您清晰的了解到您的但不局限于系统日志等信息的操作。
官网:https://www.elastic.co/products/kibana
2 环境搭建
2.1 软件环境要求
系统:CentOS 6.5 x86_64
Java:JDK 1.8_64bit
Nodejs:v6.10.0
软件:Elasticsearch-5.2.2、Logstash-5.2.2、Kibana-5.2.2-x86_64
2.2 Elasticsearch安装
说明:新版ES必须要使用普通用户启动,不能使用root用户。
1)下载ES安装包
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz
~]#sudo tar -xvzf elasticsearch-5.2.2.tar.gz
2)修改ES的配置文件
编辑config下的elasticsearch.yml
cluster.name: elk-sdnware
node.name: elk-node1
node.attr.rack: r1
path.data: /home/esuser/es/data
path.logs: /home/esuser/es/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 192.168.200.201
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.200.201", "[::1]"]
discovery.zen.minimum_master_nodes: 1
gateway.recover_after_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: "*"
表1 - ES配置参数说明
参数含义
cluster.name 集群名称
node.name 节点名称
node.attr.rack 默认参数描述
path.dataES 数据文件
path.logsES 日志文件路径
bootstrap.memory_lock 是否锁定使用内存,为了不产生内存交换以保证性能(CentOS7以下不支持SecComp)
bootstrap.system_call_filter 同上
network.host 网络主机
http.port HTTP端口
discovery.zen.ping.unicast.hosts 初始节点列表
discovery.zen.minimum_master_nodes 集群至少有n个master
gateway.recover_after_nodes n个节点启动后开始数据恢复
http.cors.enabled 是否支持跨域
http.cors.allow-origin 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/
3)启动ES
~/bin/elasticsearch >/dev/null 2>&1 &
启动成功后访问http://192.168.200.201:9200,如下图:
4)安装Elasticsearch-head插件
该插件是为了方便简单的管理ES中的索引、集群等信息,新版head插件安装与老版ES有所差异,官方已经独立出来成为了一个插件库,需要独立安装。
a)下载head插件安装包
git clone git://github.com/mobz/elasticsearch-head.git
b)下载安装nodejs
wget https://nodejs.org/dist/v6.10.0/node-v6.10.0-linux-x64.tar.xz
tar -xvf node-v6.10.0-linux-x64.tar.xz
设置NODE环境变量,node -v、npm -v测试安装是否成功
c)进入刚下载的elasticsearch-head目录,执行npm install
~/elasticsearch-head/ ] # npm install
在执行安装head插件时会去下载phantomjs,网络不好情况下下载极慢而导致npm install执行失败,为了保证正常安装,建议下载好该安装包,默认放在/tmp/phantomjs/,当前版本使用的是phantomjs-2.1.1-linux-x86_64.tar.bz2,具体版本看安装时打印信息;
d)安装完成后,需要修改相应的web文件
i.修改服务器监听地址
目录:head/Gruntfile.js
connect: {
server: {
options: {
port: 9100,
hostname: '*',
base: '.',
keepalive: true
}
}
}
增加hostname属性,设置为*
ii.修改连接地址
目录:head/_site/app.js
修改head的连接地址:
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
把localhost修改成你es的服务器地址,如:
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.200.201:9200";
e)启动head服务
elasticsearch-head ] # node_modules/grunt/bin/grunt server &
在此之前保证ES已经启动成功
打开http://192.168.200.201:9100,如下图:
2.3 Logstash安装
1)下载Logstash安装包
https://artifacts.elastic.co/downloads/logstash/logstash-5.2.2.tar.gz
~]#sudo tar -xvzflogstash-5.2.2.tar.gz
2)添加Logstash的用户(agent)配置
vim log4jes.conf,内容如下:
input {
log4j {
mode => "server"
host => "192.168.200.201"
port => 4567
}
}
filter {
#Only matched data are send to output.
}
output {
elasticsearch {
action => "index"
hosts => ["192.168.200.201:9200"]
index => "cloudap-%{+YYYY.MM.dd}"
}
}
3)模拟Log4j的java应用
a)创建一个maven项目,结构如下:
b)编辑Log4jDemo.java文件
c)修改log4j.properties配置文件
4)启动Logstash服务
logstash-5.2.2 ] # bin/logstash -f log4jes.conf>/dev/null 2>&1 &
启动成功后,运行java应用,然后打开elasticsearch-head,如图:
会看到有cloudap-2017.03.08的索引,切换数据浏览,可以查看到详细的数据信息:
2.4 Kibana安装
1)下载Kibana安装包
https://artifacts.elastic.co/downloads/kibana/kibana-5.2.2-linux-x86_64.tar.gz
~]#sudo tar -xvzf kibana-5.2.2-linux-x86_64.tar.gz
2)修改Kibana配置
kibana-5.2.2 ] # vim config/kibana.yml
server.port: 5601
server.host: “192.168.200.201”
elasticsearch.url: http://192.168.200.201:9200
kibana.index: “.kibana”
3)启动Kibana
kibana-5.2.2 ] #bin/kibana>/dev/null 2>&1 &
打开浏览器输入:http://192.168.200.201:5601
初始进入是,需要自行添加索引,如图:
创建成功,后便可以针对索引进行数据的查看了。