ES集群,kibana和es-head安装搭建
ES集群搭建
安装环境
需要至少准备两台服务器,并安装JDK环境。
我这里用了2台服务器虚拟机搭建的集群测试。
1.安装ES
下载ES的安装包,我这里用的是 elasticsearch-7.6.1-linux-x86_64.tar.gz
把安装包通过工具拷贝到要安装的目录下,执行下列命令解压:
tar -zxvf elasticsearch-7.6.1-linux-x86_64.tar.gz
进入config配置目录下,修改elasticsearch.yml配置文件
cd elasticsearch-7.6.1/config/
vim elasticsearch.yml
修改内容如下:
#集群名称,每台节点的名称必须相同
cluster.name: elasticsearch
#节点名称,每台不能一样
node.name: node01
#是否可被选举为主节点
node.master: true
#是否可保存数据
node.data: true
#节点IP
network.host: 192.168.187.131
#ES访问端口号
http.port: 9200
#数据保存路径
path.data: /tools/elasticsearch-7.6.1/data
#日志保存路径
path.logs: /tools/elasticsearch-7.6.1/logs
#锁住物理内存,不使用swap内存,有swap内存的可以开启此项
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
#设置节点之间交互的tcp端口,默认是9300
transport.tcp.port: 9300
#设置是否压缩tcp传输时的数据,默认为false,不压缩
transport.tcp.compress: true
# 为了避免ES脑裂,集群节点数最少为 半数+1
discovery.zen.minimum_master_nodes: 2
#自动发现拼其他节点超时时间
discovery.zen.ping_timeout: 3s
#设置集群的初始节点列表
discovery.zen.ping.unicast.hosts: ["192.168.187.131","192.168.187.132"]
#是否支持跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
除了节点名称,节点IP设置不一样,其他服务器节点的配置都相同,直接复制配置文件即可。
修改其他配置:
- jvm 内存不足,修改内存大小
vim elasticsearch/config/jvm.options
-Xms512m
-Xmx512m
- 操作系统调优,在/etc/sysctl.conf添加如下内容
#系统最大打开文件描述符数
fs.file-max=655360
#限制一个进程拥有虚拟内存区域的大小
vm.max_map_count=655360
sysctl -p生效
-
修改vim /etc/security/limits.conf文件
* soft nofile 65536 * hard nofile 65536 * soft nproc 65536 * hard nproc 65536 * soft memlock unlimited * hard memlock unlimited
-
修改/etc/security/limits.d/90-nproc.conf文件
* soft nproc 1024 修改前 * soft nproc 65536 修改后
-
ES的启动不能使用root用户,要创建一个普通用户,并把ES文件权限赋予它
# 创建用户组
groupadd es
# 创建用户并添加至用户组
useradd es -g es
# 更改用户密码(输入 123123)
passwd es
#赋予权限
chown -R es:123456 elasticsearch-7.6.1
chmod -R 777 elasticsearch-7.6.1
- 切换到es用户下elasticsearch-7.6.1/bin目录下,启动
su es
./elasticsearch
#后台启动
./elasticsearch -d
- 查看启动
netstat -tlnp | egrep '9200|9300'
service elasticsearch status
jps
- 启动成功可访问
其他节点ES也做如上修改即可
2.安装kibana
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。
Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。
设置Kibana非常简单。无需编码或者额外的基础架构,几分钟内就可以完成Kibana安装并启动Elasticsearch索引监测。
- 下载kibana的安装包kibana-7.6.1-linux-x86_64.tar.gz,注意kibana的版本要和安装的ES对应,只需要一台主节点安装即可
和ES放到一个目录下安装,执行解压命令
tar -zxvf kibana-7.6.1-linux-x86_64.tar.gz
- 编辑文件config/kibana.yml ,配置属性,做如下修改
#本机IP
server.host: "192.168.187.131"
#kibana访问端口号
server.port: 5601
#连接的ES地址
elasticsearch.hosts: ["http://192.168.187.131:9200"]
#编码格式
i18n.locale: "zh-CN"
#kibana的随机密匙设置
xpack.reporting.encryptionKey: "es"
xpack.security.encryptionKey: "122333444455555666666777777788888888"
xpack.encryptedSavedObjects.encryptionKey: "122333444455555666666777777788888888"
-
先启动ES之后,在启动kibana
#切换到kibana的bin目录下 执行命令 nohup ./kibana & #查看实时日志,在bin目录下 tail -f nohup.out #停止运行, 查到进程号,然后杀死 netstat -anltp|grep 5601
-
kibana访问 ip:5601,加载成功如下
3.安装es-head
elasticsearch-head 是一个界面化的集群操作和管理工具,可以对集群进行傻瓜式操作。你可以通过插件把它集成到es(首选方式),也可以安装成一个独立webapp。
es-head主要有三个方面的操作:
- 显示集群的拓扑,并且能够执行索引和节点级别操作
- 搜索接口能够查询集群中原始json或表格格式的检索数据
- 能够快速访问并显示集群的状态
- 有一个输入窗口,允许任意调用RESTful API。这个接口包含几个选项,可以组合在一起以产生有趣的结果;
- 请求方法(get、put、post、delete),查询json数据,节点和路径
- 支持JSON验证器
- 支持重复请求计时器
- 支持使用javascript表达式变换结果
- 收集结果的能力随着时间的推移(使用定时器),或比较的结果
- 能力图表转换后的结果在一个简单的条形图(包括时间序列)
-
下载es-head插件
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
-
安装node.js
##下载 wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz ##解压压缩包 tar -zxvf node-v4.4.7-linux-x64.tar.gz ##配置环境变量 vim /etc/profile export NODE_HOME=/tools/elasticsearch-7.6.1/elasticsearch-head/node-v4.4.7-linux-x64 export PATH=$PATH:$NODE_HOME/bin export NODE_PATH=$NODE_HOME/lib/node_modules ##让配置生效 source /etc/profile
-
安装grunt
grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等的工作,head插件就是通过grunt启动
##进入到插件目录下面 cd /tools/elasticsearch-7.6.1/elasticsearch-head/elasticsearch-head-master ##下载安装grunt npm install -g grunt-cli ##检测是否安装成功,如果执行命令后出现版本号就表明成功 grunt -version #修改 elasticsearch-head/Gruntfile.js,添加host正则匹配项 vim Gruntfile.js connect: { server: { options: { port: 9100, hostname: '*' base: '.', keepalive: true, } } } #修改 elasticsearch-head/_site/app.js,修改es的链接地址(在4388行),改为本机ES的IP var ui = app.ns("ui"); var services = app.ns("services"); app.App = ui.AbstractWidget.extend({ defaults: { base_uri: null }, init: function(parent) { this._super(); this.prefs = services.Preferences.instance(); this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.187.131:9200"; #安装npm的服务,然后再head目录下面启动插件 npm install grunt server
-
启动所有的ES集群后,在启动es-head后,可以查看到