目录
传送门
SpringMVC的源码解析(精品)
Spring6的源码解析(精品)
SpringBoot3框架(精品)
MyBatis框架(精品)
MyBatis-Plus
SpringDataJPA
SpringCloudNetflix
SpringCloudAlibaba(精品)
Shiro
SpringSecurity
java的LOG日志框架
Activiti(敬请期待)
JDK8新特性
JDK9新特性
JDK10新特性
JDK11新特性
JDK12新特性
JDK13新特性
JDK14新特性
JDK15新特性
JDK16新特性
JDK17新特性
JDK18新特性
JDK19新特性
JDK20新特性
JDK21新特性
其他技术文章传送门入口
前言
ELK设置后抓日志非常好用,当然也不只是用于抓日志。功能强大,全文检索等等。
以下文章不定时更新。
ELK的ElasticStack概念
ELK的ElasticStack语法
ELK的ElasticStack安装
ELK的Logstash
ELK的Kibana
ELK的Filebeat
一、组件概念
es是一个开源的高扩展的分布式全文搜索引擎;数据存储;旧叫法为ELK(es+logstash+kibana),由于logstash是收集+转化数据两个功能太重了 ,所以在新叫法elastic stack中,出现了beats,收集数据变为beats了,比如filebeat等,很多个beat。logstash就更偏向于转化和处理收集了。
各组件概念
EFK
ELK
ELFK
ELFK+kafka
效果图
二、下载地址
https://www.elastic.co/cn/downloads/elasticsearch
三、window下7.8版本安装单机
下载以后直接解压,然后运行bin目录里面的elasticsearch.bat,会提示需要jdk11版本,不影响,不用管,jdk8就可以,本次下载7.8版本的,和尚硅谷版本一致
http://localhost:9200/
四、window下7.8版本安装集群
拷贝两份出来,一共三份一模一样的。然后改配置吧。
第一个的yml修改内容。端口1001是浏览器访问的端口,端口9301是组件集群内部通信端口
第一个的yml配置(data文件夹要删除掉)
只配置第一个的时候的,请求效果,集群可以只有一个
第二个yml的配置,蓝色的是新增的配置,其他和第一个一样(第一个不用加这个)(data文件夹要删除掉)
五、Linux下7.8版本安装单机
1、ES安装
304MB
tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz
在吉帆Linux系统上面弄的,在/java文件夹下面。
useradd es
passwd es
chown -R es:es /java/elasticsearch-7.8.0
到这步是可以单机启动了,启动也能成功,但是会导致无法访问,访问失败,哪怕阿里云设置好了端口,防火墙也关闭了,还是不行。所以在Linux环境下必须加单节点集群的配置(注意,还是和真正集群配置不一样)。加上集群配置就可以正常访问了。
#用自己的Linux,需要在安全组开启9200和9300的端口设置。防火墙只要是关闭的就行了,防火墙不用加端口规则。
vim /java/elasticsearch-7.8.0/config/elasticsearch.yml
cluster.name: elasticsearch
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.memory_lock: false
# 注意冒号后面都有个空格。而且:后的单词的后面不能有空格。new 0000是让所有ip都可以访问es,最后cors是能让eshaed访问es,最后一句为true时,会引发9200不被监听
因为es生成的文件太多了。下面的配置还是要改。
vim /etc/security/limits.conf
es soft nofile 65535
es hard nofile 65535
vim /etc/security/limits.d/20-nproc.conf
es soft nofile 65535
es hard nofile 65535
* hard nproc 4096
vim /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
直接在root用户下启动会报错。而且首次出现的java11错误不用管,等待一下,会往下启动。
su es # 切换到es,都不用输入密码的(密码 es)
/java/elasticsearch-7.8.0/bin/elasticsearch -d # 启动es
chown -R es:es /java/elasticsearch-7.8.0 # 再次报这个错误,说明权限还不够,切回root,再执行一下这句,再切回es(重新打开个链接,执行就行了,不用切来切去的)
/java/elasticsearch-7.8.0/bin/elasticsearch -d# 后台启动es
启动有很多报错,可以忽略,能看到这个就对了
完整的yml配置:
# Pass an initial list of hosts to perform discovery when this node is started:
# The default list of hosts is ["127.0.0.1", "[::1]"]
#
#discovery.seed_hosts: ["host1", "host2"]
#
# Bootstrap the cluster using an initial set of master-eligible nodes:
#
#cluster.initial_master_nodes: ["node-1", "node-2"]
#
# For more information, consult the discovery and cluster formation module documentation.
#
# ---------------------------------- Gateway -----------------------------------
#
# Block initial recovery after a full cluster restart until N nodes are started:
#
#gateway.recover_after_nodes: 3
#
# For more information, consult the gateway module documentation.
#
# ---------------------------------- Various -----------------------------------
#
# Require explicit names when deleting indices:
#
#action.destructive_requires_name: true
cluster.name: elasticsearch
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
http.cors.enabled: true
http.cors.allow-origin: "*"
bootstrap.memory_lock: false
2、ES-HEAD安装
ElasticSearch-head,就是一个提供可视化界面的 ElasticSearch 插件,使用 Html5 开发,本质上还是一个 nodejs 的工程,因此在使用之前需要先安装 nodeJs。
1、安装nodejs
cd /java
wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.gz #下载nodejs压缩包,下载后就在java文件夹里面
tar -zxvf node-v10.9.0-linux-x64.tar.gz #解压压缩包
mv node-v10.9.0-linux-x64 /usr/local/nodejs #移动文件到/usr/local目录下,并将文件夹名称改为nodejs
ln -s /usr/local/nodejs/bin/node /usr/bin/node #创建软连接,让node命令全局生效
ln -s /usr/local/nodejs/bin/npm /usr/bin/npm #创建软连接,让npm命令全局生效
node -v #查看nodejs是否安装成功
npm -v
备注:当nodejs版本不符合时,直接到usr/local下降nodejs目录整个 rm -rf重新再解压一个版本就可以了。
sudo npm cache clean -f # 清除缓存信息
npm install -g [email protected] # 这个升级了npm到9.1.3版本
wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz
tar xvf node-v16.14.0-linux-x64.tar.xz
mv node-v16.14.0-linux-x64 /usr/local/nodejs
2、安装git并拉取ElasticSearch-head代码
yum install –y git #安装git 安装过则更新
git --version #查看是否安装成功
git clone https://github.com/mobz/elasticsearch-head.git#从github上拉取elasticsearch-head代码(网络波动,如果卡可以换个时间段再尝试,一下就好)
cd elasticsearch-head #进入elasticsearch-head文件夹
npm install cnpm -g --registry=https://registry.npm.taobao.org #因为npm安装非常非常慢,所以在这里先安装淘宝源地址
ln -s /usr/local/nodejs/bin/cnpm /usr/local/bin/cnpm #创建cnpm软链接,不然执行下面执行命令会报错
cnpm install #使用cnpm命令下载安装项目所需要的插件,如果这步报错,就用第一步的备注那边升级nodejs版本再尝试
vim _site/app.js #修改app.js 搜索 vim后直接按/然后输入单词 localhost,将localhost修改为安装ElasticSearch服务器的ip,这里换成吉帆外网服务器地址8.136.225.184,如上图
3、启动ElasticSearch-head
cd /java/elasticsearch-head/node_modules/grunt/bin #进入启动目录(java目录为当前目录)
nohup ./grunt server > eshead.txt & #使用nohup启动 日志会输出在当前文件夹nohup.out里面,启动端口默认为9100,exit退出
注意1:后台启动head命令:grunt server & 注意:加上&虽然执行了后台启动,但还是有日志打印出来,使用ctrl+c可以退出.这时如果直接关闭shell 工具, head进程就会终止
解决:执行命令后,不使用ctrl+c退出,使用exit退出shell即可
扩展:使用exit退出后,无法通过jps/ps查到head的进程,可使用lsof -i:port命令根据head端口号查到进程号
注意2:9100(es-head的) 9200(es浏览器访问的) 9300(es集群组件自己通信的) 都得开放安全组。还有就是集群健康值未链接要么是vim _site/app.js中的ip地址没对,要么就是浏览器问题
3、IK中文分词器安装
https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.8.0
这个网站下载zip压缩包(百度网盘已有)。并将该包放到es的安装包的plugins文件夹下面(建议减压以后直接拖文件夹过去), /java/elasticsearch-7.8.0/plugins (吉帆电脑是在/java文件夹下,一般在/usr/local下)
unzip -d /java/elasticsearch-7.8.0/plugins/elasticsearch-analysis-ik-7.8.0 elasticsearch-analysis-ik-7.8.0.zip(-d参数是指定解压后的目录 位置,必须在es安装包的plugins文件夹里面)(坑,减压以后要把原来的zip包删除,不然启动报错)
安装之前汉语的拆解不太准确。
su es
kill -9 28987
/java/elasticsearch-7.8.0/bin/elasticsearch -d
cd /java/elasticsearch-head/node_modules/grunt/bin
nohup ./grunt server > eshead.txt &
安装以后还是不行,这个时候bady参数要变了,要指定分词器才行。
坑,没删除zip包就会报错。要删除掉。所以最开始建议直接拷贝解压以后的文件夹过去。
用ik分词器就很准确了。
两种粒度,ik_max_word会将中国人分成 中国人 国人 中国三种。而ik_smart只是中国人。
可以自定义单词,ik并不知道弗雷尔卓德是一个完整的汉语词,所以默认会全部分解开。
新建个custom.dic里面直接写一句 弗雷尔卓德 就可以了。不用空格,不用其他什么。然后配置xml文件以后重启es就生效了。
六、Linux下7.8版本安装集群
分发就是把tar包拷贝到其他两个节点机器中
第一个yml配置
第一个yml配置(截图最后有配置指令)
第一个yml配置
第二个yml就这两个地方变了,其他地方和第一个yml一模一样。同理第三个yml改动也是这两个地方。
# 加入如下配置
#集群名称
cluster.name: cluster-es
#节点名称, 每个节点的名称不能重复
node.name: node-1
#ip 地址, 每个节点的地址不能重复
network.host: linux1
#是不是有资格主节点
node.master: true
node.data: true
http.port: 9200
# head 插件需要这打开这两个配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
#es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["node-1"]
#es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["linux1:9300","linux2:9300","linux3:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcp.compress: true
#集群内同时启动的数据任务个数,默认是 2 个
cluster.routing.allocation.cluster_concurrent_rebalance: 16
#添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个
cluster.routing.allocation.node_concurrent_recoveries: 16
#初始化数据恢复时,并发恢复线程的个数,默认 4 个
cluster.routing.allocation.node_initial_primaries_recoveries: 16
标签:node,ELK,java,ElasticStack,elasticsearch,7.8,安装,es
From: https://blog.csdn.net/qq_36858491/article/details/143112975