Linux安装ELK
ELK简介
ES是一个基于RESTful web接口并且构建在Apache Lucene之上的开源分布式搜索引擎。
特点:
分布式实时文件存储、检索、分析
零配置、集群自动发现
索引自动分片、副本机制
RESTful风格接口
多数据源
自动搜索负载
高可用
高扩展
一种NOSQL的数据存储工具
ELK安装
安装包: https://pan.baidu.com/s/16pqipw8MnfFbsgvIlNu-sw
提取码: f3tb
在根目录下创建一个software目录:
[root@hadoop03 ~]# mkdir /software
移动到software目录下:
[root@hadoop03 ~]# cd /software
把六个安装包拖进来
查看安装包:
[root@hadoop03 software]# ll
解压elasticsearch-6.2.2.tar.gz到opt目录下:
[root@hadoop03 software]# tar -zxvf elasticsearch-6.2.2.tar.gz -C /opt
解压kibana-6.2.2-linux-x86_64.tar.gz到opt目录下:
[root@hadoop03 software]# tar -zxvf kibana-6.2.2-linux-x86_64.tar.gz -C /opt
解压logstash-6.2.2.tar.gz到opt目录下:
[root@hadoop03 software]# tar -zxvf logstash-6.2.2.tar.gz -C /opt
解压node-v8.9.1-linux-x64.tar.gz到opt目录下:
[root@hadoop03 software]# tar -zxvf node-v8.9.1-linux-x64.tar.gz -C /opt
下载zip解压工具:
[root@hadoop03 software]# yum install -y unzip
解压elasticsearch-head-master.zip到当前目录下:
[root@hadoop03 software]# unzip elasticsearch-head-master.zip
把解压好的elasticsearch-head-master文件夹移动到opt目录下,并改名为head:
[root@hadoop03 software]# mv elasticsearch-head-master /opt/head
进入opt目录下:
[root@hadoop03 software]# cd /opt
把elasticsearch-6.2.2改名为es6:
[root@hadoop03 opt]# mv elasticsearch-6.2.2/ es6
把kibana-6.2.2-linux-x86_64 改名为kibana:
[root@hadoop03 opt]# mv kibana-6.2.2-linux-x86_64/ kilbana
把logstash-6.2.2改名为log:
[root@hadoop03 opt]# mv logstash-6.2.2/ log
把node-v8.9.1-linux-x64/改名为node:
[root@hadoop03 opt]# mv node-v8.9.1-linux-x64/ node
ELK配置
es6配置
修改主机名:
[root@hadoop03 opt]# hostnamectl set-hostname hadoop01
修改主机列表:
[root@hadoop03 opt]# vi /etc/hosts
配置es6目录下的config目录下的elasticsearch.yml:
[root@hadoop03 opt]# vi /opt/es6/config/elasticsearch.yml
SHIFT+G快速定位到尾部,插入:
cluster.name : bigdata --集群名
node.name : master --节点名
node.master : true --是否是主节点
network.host : 192.168.136.37 --本机地址
discovery.zen.ping.unicast.hosts : ["192.168.136.37"] --同上地址
http.cors.enabled : true
http.cors.allow-origin : "*"
配置etc目录下的sysctl.conf:
[root@hadoop03 opt]# vi /etc/sysctl.conf
SHIFT+G快速定位到尾部,插入:
vm.max_map_count=655360
保存退出,输入:
[root@hadoop03 opt]# sysctl -w vm.max_map_count=655360
配置etc目录下的security目录下的limits.conf:
[root@hadoop03 opt]# vi /etc/security/limits.conf
SHIFT+G快速定位到尾部,插入
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
保存退出,添加一个普通用户:
[root@hadoop03 opt]# useradd es
修改es6目录的属组(es6不能使用root用户启动)
[root@hadoop03 opt]# chown -R es:es es6
切换到es用户:
[root@hadoop03 opt]# su es
启动elasticsearch
(前提配置好jdk,安装配置jdk请见
http://blog.csdn.net/sanjiang521/article/details/107757646)
[es@hadoop03 opt]# ./es6/bin/elasticsearch
若地步出现started就是启动成功,若想在后台运行就要在命令后面加-d的参数。
[es@hadoop03 opt]# ./es6/bin/elasticsearch -d
使用网页验证启动成功:
http://192.168.136.37:9200
node和head配置
修改环境变量:
[root@hadoop03 opt]# vi /etc/profile
插入:
export NODE_HOME=/opt/node
export PATH=$NODE_HOME/bin
保存退出,使环境变量生效:
[root@hadoop03 opt]# source /etc/profile
查看版本号:
[root@hadoop03 opt]#node -v
下载文件(等待的时间可能比较长,要有点耐心):
[root@hadoop03 opt]# npm install -g grunt-cli
下载文件
[root@hadoop03 opt]# npm install
若等待时间过长按ctrl+c强制退出执行以下命令:
[root@hadoop03 opt]# npm install phantomjs-prebuilt@2.1.14 --ignore-scripts
配置文件Gruntfile.js:
[root@hadoop03 opt]# vi head/Gruntfile.js
输入:
hostname: '*',
配置文件_site/app.js:
[root@hadoop03 opt]# vi head/_site/app.js
进入文件输入4360gg快速定位到,把localhost改为ip地址:
启动head-master
启动head-master:
[root@hadoop03 head]# npm run start
后台运行:
[root@hadoop03 head]# nohup grunt server &
用网页验证启动成功:
http://192.168.136.37:9100
kibana安装和配置
进入kibana目录:
[root@hadoop03 /]# cd /opt/kibana/
配置文件kibana.yml:
[root@hadoop03 kibana]# vi config/kibana.yml
进入文件,按SHIFT+G跳转至末行,添加内容:
server.host: "192.168.136.37"
elasticsearch.url : "http://192.168.136.37:9200"
启动kibana
启动kibana:
[root@hadoop03 kibana]# ./bin/kibana
后台启动:
[root@hadoop03 kibana]# nohup ./bin/kibana &
打开网页,验证启动成功:
http://192.168.136.37:5601/
logstash
进入log目录:
[root@hadoop03 kibana]# cd /opt/log
输入:
[root@hadoop03 log]# ./bin/logstash -e 'input{ stdin{} } output { stdout{} }'
测试logstash是否正常运行:
hello logatash,i love you
输入:
[root@hadoop03 log]# ./bin/logstash -e 'input{ stdin{} } output { stdout{ codec => json } }'
把控制台输入的数据转换成json格式,也可以把rubydebug格式:
hello logatash,i love you
启动测试
输入:
[root@hadoop03 log]# /bin/logstash -e 'input{ stdin{} } output { stdout{ codec => json } elasticsearch{ hosts => [ "192.168.56.102:9200" ] } }'
输入信息,把控制台输入的数据转换成rubydebug类型的数据,同时上传到es服务器,可以在对应192.168.136.37:9100的页面进行查看:
使用logstash读取文件:
在log目录下新建一个temp文件夹:
[root@hadoop03 log]# mkdir temp
在temp目录下新建一个文件a.txt:
[root@hadoop03 log]# vi temp/a.txt
输入:
ad
sdfdsa
sadfasdfsdffdsafsa
sdfgdsfgds
在temp目录下新建如下内容的格式文件:
[root@hadoop03 log]# vi temp/logstash.conf
输入:
input{
file{
path =>"/opt/log/temp/a.txt"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter{
ruby{
code => "event.timestamp.time.localtime"
}
}
#输出格式
output{
stdout{
codec => rubydebug
}
elasticsearch{
hosts => ["192.168.56.102:9200"]
}
}
运行命令测试:
[root@hadoop03 log]# ./bin/logstash -f temp/logstash.conf