前言
Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速,近实时地存储,搜索和分析大量数据。它通常用作支持具有复杂搜索功能和需求的应用程序的底层引擎/技术。
架构图
一、安装前准备
服务器环境
Node1: ES、
Node2: ES、filebeat、logstash
Node3: ES、kibana
1、系统优化(在正式安装前需要进行系统优化,负责无法启动)
单个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 unlimited
2、基础环境
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
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-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.ymlcluster.name: myescluster
node.name: node1
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port:9300
bootstrap.memory_lock: true
cluster.initial_master_nodes: ["node1", "node2","node3"]
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_backup
path.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中的主机名和ip
5、启动集群(全部节点)
启动:
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/
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.confinput { 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插件
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
cd /data/logstash-7.4.0/config
vim logstash.confinput {beats {port => 5044}
}output {elasticsearch {hosts => "172.16.12.110:9200"manage_template => falseindex => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"document_type => "%{[@metadata][type]}"}
}
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: logenabled: truepaths:- /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.ymlserver.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 &
页面访问: