ELK 环境搭建1-Elasticsearch
一、安装前准备
1、节点
192.168.30.41
192.168.30.42
192.168.30.43
2、操作系统: Centos7.5
3、安装包
a、java8: jdk-8u181-linux-x64.tar.gz
b、elasticsearch elasticsearch-6.4.3.tar.gz
4、备注:
相应版本安装包可直接在本人网盘下载,链接:https://pan.baidu.com/s/1cs4IidkSVoMDAdQW93VDYQ
二、开始安装elasticsearch
1、安装java环境,因为elk所有插件都需要用到java环境因此建议将java环境安装到系统环境变量中。
mkdir -p /application/java8
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /application/java8
修改环境变量:vi /etc/profile.d/java.sh
export JAVA_HOME=/application/java8
export PATH=$PATH:$JAVA_HOME/jre/bin:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
修改权限:chmod 644 /etc/profile.d/java.sh
加载环境变量: source /etc/profile && source /etc/profile.d/java.sh
查看是否生效: 执行java,javac命令
2、安装elasticsearch
useradd -s /sbin/nologin elasticsearch
mkdir -p /application/elk/elasticsearch && chown -R elasticsearch:elasticsearch /application/elk/elasticsearch
su - elasticsearch && cd /application/elk/elasticsearch
然后上传elasticsearch包
tar -zxvf elasticsearch-6.4.3.tar.gz -C /application/elk/elasticsearch && rm -rf elasticsearch-6.4.3.tar.gz
配置elasticsearch环境变量: vim ~/.bash_profile添加如下内容:
export ELASTICSEARCH_HOME=/application/elk/elasticsearch
export PATH=$PATH:$ELASTICSEARCH_HOME/bin
source ~/.bash_profile
添加配置文件: vim /application/elk/elasticsearch/config/elasticsearch.yml
# ---------------------------------- Cluster -----------------------------------
#集群的名称
cluster.name: elk-elasticsearch
# ------------------------------------ Node ------------------------------------
#节点名称,其余2个节点分别为elasticsearch2,elasticsearch3
node.name: elasticsearch1
#指定该节点是否有资格被选举成为master节点,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master
node.master: true
#允许该节点存储数据(默认开启)
node.data: true
##实际生产可以master节点和data数据分离
# ----------------------------------- Paths ------------------------------------
#索引数据的存储路径,多个目录使用 , 分割
path.data: /application/elk/elasticsearch/data/esdata
#日志文件的存储路径
path.logs: /application/elk/elasticsearch/logs
# ----------------------------------- Memory -----------------------------------
#设置为true来锁住内存。因为内存交换到磁盘对服务器性能来说是致命的,当jvm开始swapping时es的效率会降低,所以要保证它不swap
bootstrap.memory_lock: true
# ---------------------------------- Network -----------------------------------
#绑定的ip地址
network.host: 0.0.0.0
#设置对外服务的http端口,默认为9200
http.port: 9200
# 设置节点间交互的tcp端口,默认是9300
transport.tcp.port: 9300
#Elasticsearch将绑定到可用的环回地址,并将扫描端口9300到9305以尝试连接到运行在同一台服务器上的其他节点。
# --------------------------------- Discovery ----------------------------------
##这提供了自动集群体验,而无需进行任何配置。数组设置或逗号分隔的设置。每个值的形式应该是host:port或host
###(如果没有设置,port默认设置会transport.profiles.default.port 回落到transport.tcp.port)。
###请注意,IPv6主机必须放在括号内。默认为127.0.0.1, [::1]
#
discovery.zen.ping.unicast.hosts: ["192.168.30.41:9300", "192.168.30.42:9300", "192.168.30.43:9300"]
#如果没有这种设置,遭受网络故障的集群就有可能将集群分成两个独立的集群 - 分裂的大脑 - 这将导致数据丢失,一般设置(N/2)+1
discovery.zen.minimum_master_nodes: 3
#为了使新加入的节点快速确定master位置,可以将data节点的默认的master发现方式有multicast修改为unicast:选择性配置
# Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
# ---------------------------------- Gateway -----------------------------------
# ---------------------------------- Various -----------------------------------
http.cors.enabled: true
http.cors.allow-origin: "*"
注意:
a、其中的 node.name
配置每个节点必须不一样
设置启动时节点分配内存量: vim /application/elk/elasticsearch/config/jvm.options 修改:
-Xms512m
-Xmx512m
注意:
a、最小与最大必须设置一样
b、由于jvm内存回收的原因,当内存使用超过32G时,性能会降低,故每个节点推荐最高设置31G
c、elasticsearch 2.x 版本设置内存使用在 $ELASTICSEARCH_HOME/bin/elasticsearch.in.sh中 ES_MIN_MEM=512m 与 ES_MAX_MEM=512m
创建所需目录:
mkdir -p /application/elk/elasticsearch/data/esdata
mkdir -p /application/elk/elasticsearch/logs
3、至此elasticsearch已经安装完成,在其它两个相应节点上分别按照此安装方法安装elasticsearch
注意:
a、其它两个节点上elasticsearch.yml中cluster.name参数都设置为elk-elasticsearch
b、剩余两个节点上elasticsearch.yml中node.name分别为 elasticsearch2 和 elasticsearch3
4、优化所有主机参数,否则无法启动
a、vi /etc/sysctl.conf添加:
vm.max_map_count=655360
然后执行sysctl -p 生效
b、 vi /etc/security/limits.conf 和 vi /etc/security/limits.d/20-nproc.conf添加以下内容:
注意:有两种添加内容的方法,第一种是网上普遍的优化方式,但是在当前版本的elasticsearch中我使用此方式任然无法启动,具体原因不知道是系统原因还是elasticsearch版本原因,因此我使用第二种优化方式使问题得到解决,建议读者先使用第一种优化方式,如果不行请使用第二种优化方式。
方法一:
/etc/security/limits.conf中添加如下内容:
* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536
/etc/security/limits.d/20-nproc.conf中添加如下内容:
* soft nproc 65536
root soft nproc unlimited
方法二:
/etc/security/limits.conf中添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
* hard memlock unlimited
* soft memlock unlimited
/etc/security/limits.d/20-nproc.conf中添加如下内容:
* soft nproc 4096
c、重启后执行 ulimit -a 查看是否生效
5、elasticsearch服务相应操作
a、启动
/application/elk/elasticsearch/bin/elasticsearch -d
-d 后台服务的方式启动
如果启动异常,查看日志/application/elk/elasticsearch/logs/elk-elasticsearch.log
b、查看进程
jps
c、停止
kill pid
6、更多elasticsearch操作详见标签下 ELK使用1-elasticsearch使用
三、elasticsearch插件工具head安装
1、ElasticSearch-head是一个H5编写的ElasticSearch集群操作和管理工具,可以对集群进行傻瓜式操作。
a、显示集群的拓扑,并且能够执行索引和节点级别操作
b、搜索接口能够查询集群中原始json或表格格式的检索数据
c、能够快速访问并显示集群的状态
d、有一个输入窗口,允许任意调用RESTful API。这个接口包含几个选项,可以组合在一起以产生有趣的结果;
e、5.0版本之前可以通过plugin安装,直接解压便可运行,很绿色,5.0之后安装就需要使用nodejs,然后以独立服务的方式启动,不太方便,可以直接通过安装谷歌浏览器插件 elasticsearch-head-chrome。
2、开始安装(在任意一台主机上安装即可,这儿我选择的192.168.30.41)
a、首先在es集群所有节点配置文件添加如下内容 vim /application/elk/elasticsearch/config/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
b、在192.168.30.41上面安装,然后其他主机可以选装,安装方法一样。
安装NodeJS
wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.5.0-linux-x64.tar.gz
tar zxvf node-v4.5.0-linux-x64.tar.gz -C /application/elk/elasticsearch/nodejs/node
rm -f node-v4.5.0-linux-x64.tar.gz
添加环境变量 vim ~/.bash_profile
#node
export NODE_HOME= /application/elk/elasticsearch/nodejs/node
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
加载环境变量
source ~/.bash_profile
安装npm与grunt
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm install -g grunt
npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy
下载head插件并安装
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
unzip master.zip
mv elasticsearch-head-master /application/elk/elasticsearch
修改配置文件 vim /application/elk/elasticsearch/elasticsearch-head/Gruntfile.js 修改以下内容(也可以不修改,默认监听9100)
connect: {
server: {
options: {
hostname: '0.0.0.0',
port: 9100,
base: '.',
keepalive: true
}
}
}
修改配置文件 vim /application/elk/elasticsearch/elasticsearch-head/_site/app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.30.41:9200";
如果不修改,默认会连接192.168.30.41,这里可以修改为集群任一主机
下载依赖安装(必须在head插件目录中操作)
cd /application/elk/elasticsearch/elasticsearch-head && npm install
3、相应操作
a、启动。有两种启动方式
方式一:
cd /application/elk/elasticsearch/elasticsearch-head && npm run start
方式二:
cd /application/elk/elasticsearch/elasticsearch-head && grunt server
b、注意
必须在head插件目录中操作
npm 启动方式本质上都是调用grunt启动
两种启动方式都不是后台启动,如需后台运行,请使用nohup
c、访问head
http://192.168.30.41:9100
d、停止head
首先通过 ps aux|grep grunt 查找到进程 pid ,然后 kill pid