一、 简介 Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速,近实时地存储,搜索和分析大量数据。它通常用作支持具有复杂搜索功能和需求的应用程序的底层引擎/技术。
架构图:
二、安装前准备 服务器环境
Node1: ES、 Node2: ES、filebeat、logstash Node3: ES、kibana1、系统优化(在正式安装前需要进行系统优化,负责无法启动) 单个JVM下支撑的线程数 vim /etc/sysctl.conf vm.max_map_count=655360 vm.swappiness=0
修改文件句柄数
root用户设置 vim /etc/security/limits.conf
root soft nofile 65535 root hard nofile 65535 * soft nofile 65536 * hard nofile 65536 * soft memlock unlimited * hard memlock unlimited普通账户设置(es使用非root启动) vim /etc/security/limits.d/20-nproc.conf
* soft nproc 65535 * hard nproc 65535 root soft nproc unlimited2、基础环境
#配置主机名 hostnamectl set-hostname node1 hostnamectl set-hostname node2 hostnamectl set-hostname node3 #主机映射 vim /etc/hosts 172.16.12.110 node1 172.16.12.111 node2 172.16.12.112 node3 #配置Java环境 tar zxf /root/jdk1.8.0_101.tar.gz -C /data/ echo 'export PATH=$PATH:/data/jdk1.8.0_101/bin' >>/etc/profile source /etc/profile #配置SSH无密码登陆(三台服务器都需要免密) ssh-keygen ssh-copy-id -i id_rsa.pub work@node1二、elasticsearch安装 1、下载安装
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.0-linux-x86_64.tar.gz tar zxf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /data/2、集群配置
vim /data/elasticsearch-7.4.0/config/elasticsearch.yml cluster.name: myescluster #自定义修改一个集群名称 node.name: node1 #节点名称 network.host: 0.0.0.0 #节点IP(或者解析的主机名) http.port: 9200 # 对外提供服务的端口,9300为集群服务的端口 transport.tcp.port:9300 #集群服务的端口 bootstrap.memory_lock: true #设置elasticsearch的进程锁住内存 cluster.initial_master_nodes: ["node1", "node2","node3"] # Elasticsearch7新增参数,写入候选主节点的设备地址,来开启服务时就可以被选为主节点 discovery.zen.ping.unicast.hosts:["172.16.12.110",172.16.12.111","172.16.12.112"] #集群个节点IP地址 path.logs: /data/elasticsearch-7.4.0/custom/logs/ #日志目录 path.data: /data/elasticsearch-7.4.0/custom/data/ #存放数据目录 path.repo: ["/data/elasticsearch-7.4.0/es_backup"] #备份目录 #保存退出 创建相应目录 mkdir -p /data/elasticsearch-7.4.0/custom/logs/ mkdir -p /data/elasticsearch-7.4.0/custom/data mkdir -p /data/elasticsearch-7.4.0/es_backuppath.data:用于设置数据文件的目录,可以指定多个目录,用逗号分隔即可。 path.logs:用于设置日志文件的目录
3、JVM配置
vim /data/elasticsearch-7.4.0/config/jvm.options -Xmx1g # 内存设置为服务器内存的一半4、分发es安装目录到其他两个节点
scp -r elasticsearch-7.4.0/ work@node2:/data scp -r elasticsearch-7.4.0/ work@node3:/data 修改node2,node3节点配置文件elasticsearch.yml中的主机名和ip5、启动集群(全部节点)
启动: cd /data/elasticsearch-7.4.0/bin ./elasticsearch -d页面查看,默认端口 9200
6、插件安装(node1) (1)head插件
介绍:head插件是ES的一个可视化插件,类似于navicat和mysql的关系。head插件是一个用来浏览、与ES数据进行交互的web前端展示插件,是一个用来监视ES状态的客户端插件。
由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包。(npm其实是Node.js的包管理工具,可以理解为maven)
#下载 wget https://github.com/mobz/elasticsearch-head/archive/master.zip #解压 unzip master.zip mv elasticsearch-head-master/ /data(2)下载安装NodeJS
#下载解压 wget https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.xz yum -y install xz xz -d node-v8.11.4-linux-x64.tar.xz tar xvf node-v8.11.4-linux-x64.tar -C /data/ #配置环境变量 vim /etc/profile export NODE_HOME=/data/node-v8.11.4-linux-x64 export PATH=$NODE_HOME/bin:$PATH #刷新配置 source /etc/profile(3)使用npm安装grunt 设置npm的代理镜像,由于国外的下载较慢,所以设置为国内的,进入到elasticsearch-head-master内执行以下命令
cd /data/elasticsearch-head-master npm config set registry https://registry.npm.taobao.org执行npm install,grunt是基于Node.js的项目构建工具,可以进行打包压缩,测试,执行等等的工作,head插件就是通过grunt启动
#安装 npm install -g grunt npm install phantomjs-prebuilt@2.1.16 --ignore-scripts npm install #版本确认: node -v npm -v grunt -version(4)修改Head源码 由于head的代码直接执行有很多限制,比如无法跨机器访问。因此需要用户修改两个地方:
a、修改 elasticsearch-head-master/Gruntfile.js 文件,红色部分为添加的,原来没有,设置hostname属性,设置为0.0.0.0
connect: { server: { options: { hostname: '0.0.0.0', port: 9100, base: '.', keepalive: true } } }b、修改跨域请求配置
修改连接的状态如下,修改之后才能连上,这样head插件才可以访问elasticsearch。 修改文件为elasticsearch-7.4.0/config/elasticsearch.yml,添加如下两行
http.cors.enabled: true http.cors.allow-origin: "*"c、修改head的连接地址 vim elasticsearch-head-master/_site/app.js
修改如下所示: cat app.js |grep app-base_uri 把localhost修改成你es的服务器地址,如: 重启elasticsearch
(5)启动head
cd /data/elasticsearch-head-master nohup grunt server &页面访问,默认端口9100,绿色为健康,黄色为警告
三 、logstash安装 1、 下载解压
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gz tar zxf logstash-7.4.0.tar.gz -C /data/2 、创建配置文件
一个Logstash的pipeline由3部分组成:input, filter, output。
mkdir /data/logstash-7.4.0/conf vim logstash-simple.conf input { stdin { } } output { elasticsearch { hosts => ["172.16.12.110:9200"] } stdout { codec => rubydebug } }3、 运行logstash
cd /data/logstash-7.4.0/bin ./logstash -f ../conf/logstash-simple.conf这个pipeline例子从标准输入获取数据 stdin,并把结构化数据输出到标准输出stdout。在启动后,看到日志Pipeline main started后,在终端中输入hello world,可以在终端中看到对应输出: 在企业架构中,一般Logstash的input是beat,output是ES,需要对应的插件。这种模式通常用来调试自己的logstash配置文件。
4、安装beat input插件:
#进入bin目录 cd /data/logstash-7.4.0/bin #构建离线插件包: ./logstash-plugin prepare-offline-pack logstash-input-beats #安装离线插件包: ./logstash-plugin install file:///data/logstash-7.4.0/logstash-offline-plugins-7.4.0.zip #安装: ./logstash-plugin install file:///data/logstash-7.4.0/logstash-offline-plugins-7.4.0.zip #配置 5044 端口作为 Filebeat 的连接和创建 ES 索引。新建 logstash.conf 配置文件, cd /data/logstash-7.4.0/config vim logstash.conf input { beats { port => 5044 } } output { elasticsearch { hosts => "172.16.12.110:9200" manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } } #Logstash 使用该配置使用 ES 的索引,和 Filebeat 做的事情是一样的,不过拥有了额外的缓存以及强大丰富的插件库。 #启动 logstash nohup ./bin/logstash -f config/logstash.conf &四 、filebeat安装 1、下载安装
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.4.0-linux-x86_64.tar.gz tar zxf filebeat-7.4.0-linux-x86_64.tar.gz -C /data/2、 编辑filebeat.yml
vim filebeat.yml filebeat.inputs: - type: log enabled: true paths: - /data/logs/*.log output.logstash: hosts: ["172.16.12.111:5044"]3、 启动filebeat
#启动 nohup ./filebeat -c filebeat.yml &五、kibana安装 1、简介 Kibana是一个开源的分析和可视化平台,旨在与 Elasticsearch 合作。Kibana 提供搜索、查看和与存储在 Elasticsearch 索引中的数据进行交互的功能。开发者或运维人员可以轻松地执行高级数据分析,并在各种图表、表格和地图中可视化数据
2、下载解压
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.4.0-linux-x86_64.tar.gz tar zxf kibana-7.4.0-linux-x86_64.tar.gz -C /data/3、 修改配置文件
cd /data/kibana-7.4.0-linux-x86_64/config vim kibana.yml server.port: 5601 server.host: "0.0.0.0" server.name: "node3" elasticsearch.hosts: ["http://172.16.12.110:9200"] kibana.index: ".kibana" i18n.locale: "zh-CN"4、 启动Kibana
cd /data/kibana-7.4.0-linux-x86_64/bin nohup ./kibana &页面访问: