ELK - centOS7安装Elasticsearch
一.官方网址
1. 如下 https://www.elastic.co/downloads
2. 安装准备
Elk平台环境 |
|
系统 |
版本 |
服务器操作系统 |
Centos 7 |
ElasticSearch |
6.1.1 |
Logstash |
2.3.4 |
Kibana |
4.5.3 |
Jdk |
1.8 |
注:由于Logstash的运行依赖于Java环境,而Logstash1.5以上版本不低于java 1.7,因此推荐使用最新版本的Java。因为我们只需要Java的运行环境,所以可以只安装JRE,不过这里我依然使用JDK,我这里准备使用1.8
二.JDK安装 jdk-8u151-linux-i586.tar.gz
方法一:手动解压JDK的压缩包,然后设置环境变量
1.在/usr/目录下创建java目录
[[email protected] ~]# mkdir/usr/java
[[email protected] ~]# cd /usr/java
2.下载jdk,然后解压
[[email protected] java]# curl -O http://download.Oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
[[email protected] java]# tar -zxvf jdk-7u79-linux-x64.tar.gz
3.设置环境变量 ( vi也行, 我一直用vim )
[[email protected] java]# vim /etc/profile
在profile中添加如下内容:
# vim /etc/profile 配置系统参数
export JAVA_HOME=/usr/java/jdk1.8.0_45
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
让修改生效:
[[email protected] java]# source /etc/profile
4.验证JDK有效性
[[email protected] java]# java -version
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
方法二:用yum安装JDK
1.查看yum库中都有哪些jdk版本(暂时只发现了openjdk)
[[email protected] ~]# yum search java|grep jdk
ldapjdk-javadoc.x86_64 : Javadoc for ldapjdk
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment
java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle
ldapjdk.x86_64 : The Mozilla LDAP Java SDK
2.选择版本,进行安装
//选择1.7版本进行安装
[[email protected] ~]# yum install java-1.7.0-openjdk
//安装完之后,默认的安装目录是在: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64
3.设置环境变量
[[email protected] ~]# vim /etc/profile
在profile文件中添加如下内容
#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
让修改生效
[[email protected] java]# source /etc/profile
4.验证(同上一方法)
方法三:用rpm安装JDK
1.下载rpm安装文件
[[email protected] ~]$ curl -O http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm
2.使用rpm命令安装
[[email protected] ~]# rpm -ivh jdk-7u79-linux-x64.rpm
3.设置环境变量
[[email protected] java]# vim /etc/profile
在打开的profile文件中添加如下内容
#set java environment
JAVA_HOME=/usr/java/jdk1.7.0_79
JRE_HOME=/usr/java/jdk1.7.0_79/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
让修改生效
[[email protected] java]# source /etc/profile
4.验证(同上一方法)
注:和yum安装类似,不用设置环境变量就可以运行java命令。rpm安装方式默认会把jdk安装到/usr/java/jdk1.7.0_79,然后通过三层链接,链接到/usr/bin,具体链接如下:
[[email protected] ~]# cd /bin
[[email protected] bin]# ll|grep java
lrwxrwxrwx. 1 root root 25 Mar 28 11:24 jar ->/usr/java/default/bin/jar
lrwxrwxrwx. 1 root root 26 Mar 28 11:24 java -> /usr/java/default/bin/java
lrwxrwxrwx. 1 root root 27 Mar 28 11:24 javac ->/usr/java/default/bin/javac
lrwxrwxrwx. 1 root root 29 Mar 28 11:24 javadoc ->/usr/java/default/bin/javadoc
lrwxrwxrwx. 1 root root 28 Mar 28 11:24 javaws ->/usr/java/default/bin/javaws
lrwxrwxrwx. 1 root root 30 Mar 28 11:24 jcontrol ->/usr/java/default/bin/jcontrol
[[email protected] bin]# cd /usr/java/
[[email protected] java]# ll
total 4
lrwxrwxrwx. 1 root root 16 Mar 28 11:24 default-> /usr/java/latest
drwxr-xr-x. 8 root root 4096 Mar 28 11:24 jdk1.7.0_79
lrwxrwxrwx. 1 root root 21 Mar 28 11:24 latest -> /usr/java/jdk1.7.0_79
三.Elasticsearch安装
1. 命令下载
2. 下载软件包,离线安装解压也行。我下载的ZIP包。
剪贴或者复制到虚拟机,手动解压安装 或者 命令解压:unzip elasticsearch-6.1.1.zip
tar -xvf elasticsearch-2.3.4.tar.gz
cd elasticsearch-2.3.4
3. 然后编辑ES的配置文件
( 这步后面插件安装时修改,现在里面默认配置已经可以了 )
vi config/elasticsearch.yml
# 集群的名字
cluster.name: my-application
# 节点名字
node.name: node-1
# 数据存储目录(多个路径用逗号分隔)
path.data: /home/wjy/es/data
# 日志目录
path.logs: /home/wjy/es/logs
#本机的ip地址
network.host: 192.168.161.128
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点 discovery.zen.ping.unicast.hosts: ["192.168.161.128"]
# 设置节点间交互的tcp端口(集群),(默认9300)
transport.tcp.port: 9300
# 监听端口(默认)
http.port: 9200
# 增加参数,使head插件可以访问es
http.cors.enabled: true http.cors.allow-origin: "*"
4. 其他的选项保持默认,然后启动ES
./bin/elasticsearch
可以看到,它跟其他的节点的传输端口为9300,接受HTTP请求的端口为9200。
使用ctrl+C停止。当然,也可以使用后台进程的方式启动ES:
./bin/elasticsearch &
然后可以打开页面localhost:9200,将会看到以下内容:
返回展示了配置的cluster_name和name,以及安装的ES的版本等信息。
四.Elasticsearch插件安装
1. 下载head插件
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
或者
下载地址:https://github.com/mobz/elasticsearch-head,下载后解压缩。
2. 先安装编译器: gcc, g++和所需的包
安装gcc
yum install gcc
安装g++
yum install gcc-c++
安装编译所需的包
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
Yum install gcc perl-ExtUtils-MakeMaker
3. 安装nodejs ( node-v8.9.4.tar.gz ; 新版的nodejs已经集成了npm)
官网下载(记得下载源码资源包): https://nodejs.org/en/download/
# wget https://nodejs.org/dist/v6.10.2/node-v6.10.2.tar.gz
解压下载的压缩包 ( ***是版本号 )
tar zxvf node-v8.9.4.tar.gz
进入解压后的文件夹
cd node-v***
依次执行下面命令
./configure --prefix=/usr/local/node/***
make
make install
查看node -v 安装是否成功(默认配置就是全局的,若不行再配置)
配置Node环境
[[email protected] node-v4.2.6]# vim /etc/profile
vim进入profile后,按下键盘i进入编辑模式,然后在文本最后面写下如下内容。
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
export NODE_PATH=$NODE_HOME/lib/node_modules:$PATH
输完后,按Esc退出编辑模式,然后按下:wq,就会退出保存。
然后输入以下命令就会生效:
4. 安装grunt
grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等的工作,head插件就是通过grunt启动。
进入下载解压的head文件
cd /opt/elasticsearch-head-master
npm install -g grunt-cli //执行后会生成node_modules文件夹
检查是否安装成功
5. 修改head插件源码
修改服务器监听地址:Gruntfile.js
6. 修改连接地址:_site/app.js
7. 确认下配置文件是否修改elasticsearch.yml
# 集群的名字
cluster.name: my-application
# 节点名字
node.name: node-1
# 数据存储目录(多个路径用逗号分隔)
path.data: /home/wjy/es/data
# 日志目录
path.logs: /home/wjy/es/logs
#本机的ip地址
network.host: 192.168.161.128
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["192.168.161.128"]
# 设置节点间交互的tcp端口(集群),(默认9300)
transport.tcp.port: 9300
# 监听端口(默认)
http.port: 9200
# 增加参数,使head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"
# 最后由于报错启动不了添加的配置
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
8. #启动elasticsearch
启动es ./elasticsearch
9. 运行head
在elasticsearch-head-master目录下
npm install(安装下载下来的包)
grunt server
10. 访问http://xxx:9100
五. elk中elasticsearch安装启动报错
1. 问题一
[2016-11-06T16:27:21,712][WARN ][o.e.b.JNANatives ] unable to install syscall filter:
Java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMPandCONFIG_SECCOMP_FILTERcompiledinatorg.elasticsearch.bootstrap.Seccomp.linuxImpl(Seccomp.java:349) ~[elasticsearch-5.0.0.jar:5.0.0]
at org.elasticsearch.bootstrap.Seccomp.init(Seccomp.java:630) ~[elasticsearch-5.0.0.jar:5.0.0]
原因:报了一大串错误,大家不必惊慌,其实只是一个警告,主要是因为你Linux版本过低造成的。
解决方案:重新安装新版本的Linux系统, 警告不影响使用,可以忽略
2. 问题二
ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
原因:无法创建本地文件问题,用户最大可创建文件数太小
解决方案:
切换到root用户,编辑limits.conf配置文件, 添加类似如下内容:
添加如下内容 ( 注意和原来里面的配置上下对齐,尤其每列之间的空格距离位置 )
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
备注:* 代表Linux所有用户名称(比如 pengfei)
保存、退出、重新登录才可生效
3. 问题三
max number of threads [1024] for user [es] likely too low, increase to at least [2048]
原因:无法创建本地线程问题,用户最大可创建线程数太小
解决方案:切换到root用户,进入limits.d目录下,修改90-nproc.conf 配置文件。
vi /etc/security/limits.d/90-nproc.conf
找到如下内容:
* soft nproc 1024
#修改为
* soft nproc 2048
4. 问题四
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
原因:最大虚拟内存太小; 解决方案:切换到root用户下,修改配置文件sysctl.conf
添加下面配置: vm.max_map_count=655360
并执行命令: sysctl -p
然后重新启动elasticsearch,即可启动成功。
5. 问题五
ElasticSearch启动找不到主机或路由
原因:ElasticSearch 单播配置有问题
解决方案: 检查ElasticSearch中的配置文件
找到如下配置:
discovery.zen.ping.unicast.hosts:["192.168.**.**:9300","192.168.**.**:9300"]
一般情况下,是这里配置有问题,注意书写格式
6. 问题六
org.elasticsearch.transport.RemoteTransportException: Failed to deserialize exception response from stream
原因:ElasticSearch节点之间的jdk版本不一致
解决方案:ElasticSearch集群统一jdk环境
7. 问题七
Unsupported major.minor version 52.0
原因:jdk版本问题太低
解决方案:更换jdk版本,ElasticSearch5.0.0支持jdk1.8.0
8. 问题八:
bin/elasticsearch-plugin install license
ERROR: Unknown plugin license
原因:ElasticSearch5.0.0以后插件命令已经改变
解决方案:使用最新命令安装所有插件
bin/elasticsearch-plugin install x-pack
9. 启动异常:ERROR: bootstrap checks failed
system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
问题原因:因为Centos6不支持SecComp,而ES5.2.1默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。详见 :https://github.com/elastic/elasticsearch/issues/22899
解决方法:在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false