Linux环境安装
架构设计以及ELK关键配置
https://blog.csdn.net/W_98_B/article/details/109359039
JDK1.8以上(必须有)
主要参考网站 https://www.cnblogs.com/fswhq/p/10713429.html#autoid-1-0-0
推荐步骤如下(其他方式可能出现不兼容):
下载jdk-8u251-linux-x64.tar.gz 安装包(注意是.gz,而且后面所有的操作都是按照自己下的版本来)
使用Xftp把安装包传入虚拟机下的任意位置(建议在home里)
解压命令
tar -zxvf jdk-8u251-linux-x64.tar.gz
建议把jdk安装在usr/java当中,建立文件
mkdir /usr/java
再把解压后的jdk文件夹剪切到usr/java中
mv /home/jdk1.8.0_251 /usr/java
修改环境变量
vim /etc/profile
修改内容:
export JAVA_HOME=/usr/java/jdk1.8.0_251
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
通过命令让内容生效
source /etc/profile
通过命令javac和java -version测试安装是否成功
elasticsearch安装
主要参考网站:
https://www.cnblogs.com/socketqiang/p/11363024.html
https://blog.csdn.net/qq_17625317/article/details/93143669
https://blog.51cto.com/jonyisme/1919075.
https://blog.csdn.net/qq_38636133/article/details/105621876
https://jingyan.baidu.com/article/7908e85c9fc626af491ad263.html
https://www.cnblogs.com/sloveling/p/elasticsearch.html
推荐下载.gz安装包,通过xftp的方式传入Linux中
压缩包下载地址:https://www.elastic.co/cn/downloads/
!!!注意版本号要一致
解压缩:(版本写为自己下载的版本)
tar -xzvf elasticsearch-7.9.1.tar.gz
将文件夹移到 /user/local目录下(推荐)
mv elasticsearch-7.9.1/usr/local
修改es配置文件
cd /usr/local/elasticsearch-7.9.1/config
vim elasticsearch.yml
修改内容:
#配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: my-es
#设置索引数据的存储路径
path.data: /usr/local/elasticsearch-7.9.1/data
#设置日志的存储路径
path.logs: /usr/local/elasticsearch-7.9.1/logs
(上面两个位置自己选,因为es不能用root账号启动,必须用其他账号启动,选后的位置要给权限,如果设置的路径没有文件夹,还要在设置的路径上建立文件夹)
新建用户,并赋予权限,例:
创建账号
useradd testuser
输入密码
passwd testuser
给新建用户赋予es的权限
chown -R testuser:testuser /usr/local/elasticsearch-7.9.1
(这里我偷了个懒,把data和logs放入了解压文件夹中,这么做有危害,如果重新安装es,可能会覆盖里面的内容,或者删除es时,一起被删除。建议放在其他位置例如:/opt/product/data,同时修改对应内容)
继续修改elasticsearch.yml配置文件
#设置当前的ip地址,通过指定相同网段的其他节点会加入该集群中
network.host: 0.0.0.0
#设置对外服务的http端口
http.port: 9200
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.seed_hosts: ["172.29.12.35", "[::9200]"]
cluster.initial_master_nodes: ["node-1"]
启动方式为,用非root账户进入elasticsearch-7.9.1文件夹里,输入下面代码
bin/elasticsearch
配置内容就此结束,可以不用再更改,下面是会出现的报错现象以及解决方法:(3,4很重要)
1. 使用root用户启动
`报错信息为java.lang.RuntimeException:can not run elasticsearch as root`
解决方法为:
报错内容为root用户启动问题,用赋予了es文件夹权限的用户进入,并启动
2. 使用testuser启动
报错权限不够
解决方法为:
赋权限,testuser是用户名
chown -R testuser:testuser /usr/local/elasticsearch
然后使用es用户启动 :su testuser
cd /usr/local/elasticsearch
再启动
3. 启动后报错
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]
解决方法为:
使用root账号,修改文件夹
vim /etc/security/limits.conf
往尾部添加配置(不用加#号)
* soft nofile 65536
* hard nofile 65536
* soft nproc 32000
* hard nproc 32000
* hard memlock unlimited
* soft memlock unlimited
(这里很可能存在一个limits.conf 修改不生效的问题)
解决方法:
使用root账号,修改limits.conf文件
vim /etc/security/limits.conf
需要设置内容:
UsePAM yes
UseLogin yes
同时,还要修改另外三个文件
vim /etc/pam.d/login
vim /etc/pam.d/system-auth
vim /etc/pam.d/sshd
这三个文件内必须要有一行配置,没有就添加
session required pam_limits.so
4. 启动后报错
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
解决方法:
使用root账号,修改文件夹
vi /etc/sysctl.conf
往尾部添加配置(不用加#号)
fs.nr_open = 10000000
vm.max_map_count=65536
vm.max_map_count=262144
并执行重启命令
sysctl -p
可能还存在两个小问题和一个端口占用问题,并不会太麻烦,只需要把错误信息百度即可,上面的3和4两个错误,是我花费大量时间才解决的,网上的解决方案并不直观。
注意事项:
如果需要在其他服务器访问Linux系统下的es
- 关掉Linux的防火墙
- 开放设置的端口,一般为9200
- 关掉windos的防火墙
通过ping测试,是否能连接
通过Linux本机curl http://172.29.12.35:9200
测试,服务是否启动
版本7.9.1启动成功的结果展示:
[2020-09-22T04:06:43,125][INFO ][o.e.n.Node ] [node-1] started
[2020-09-22T04:06:43,364][INFO ][o.e.l.LicenseService ] [node-1] license [20e698fa-b150-462a-8945-afb4d9ac1b94] mode [basic] - valid
[2020-09-22T04:06:43,366][INFO ][o.e.x.s.s.SecurityStatusChangeListener] [node-1] Active license is now [BASIC]; Security is disabled
[2020-09-22T04:06:43,378][INFO ][o.e.g.GatewayService ] [node-1] recovered [0] indices into cluster_state
Logstash安装
相比较而言,logstash的安装较为简单
参考网站:
https://blog.csdn.net/qq_33257527/article/details/83180815
https://www.houjit.com/index.php/bbs/show-113.html
https://blog.csdn.net/qq_17625317/article/details/93143669
https://www.cnblogs.com/wzxmt/p/11031110.html
https://blog.csdn.net/u010739163/article/details/82022327
这里依旧推荐的是下载安装包
官方地址:https://www.elastic.co/cn/downloads/
!!!注意版本号要一致
安装步骤如下:
解压下载的安装包,我使用的版本为:7.9.1
tar -xzvf logstash-7.9.1.tar.gz
接下来还是把文件夹移到usr下的local中
mv logstash-7.9.1 /usr/local
安装就此结束,使用方式有两种,一种是命令执行,另一种是自定义配置文件
- 命令执行运行一个简单的logstash:进入解压后的文件夹输入下方命令
bin/logstash -e 'input { stdin { } } output { stdout {} }'
在控制台输入数据
显示结果如下:
[2020-09-22T22:45:41,317][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
wangbiao
{
"@timestamp" => 2020-09-23T02:46:04.732Z,
"@version" => "1",
"host" => "wangibao",
"message" => "wangbiao"
}
- 定义配置文件方式启动
因为是解压文件的方式安装,配置文件都在解压文件夹的config下,其中logstash-simple是文件夹自带的,有做整合es,需要先启动es,不然会报错
这里写一个简单的自己的配置文件启动,在config文件夹下
vim logstash-my.conf
里面添加内容如下:
input {
stdin { }
}
output {
stdout {
codec => rubydebug {}
}
}
最基本的配置文件定义,必须包含input和output,还有一个可选的filter,input就是读取数据源,而output则是输出,将事件发送到特定目标
这样一来最简单的配置文件就配置好了,后期可以继续添加其余内容
启动方式为:
cd /usr/local/logstash-7.9.1
进入解压文件夹后输入命令
bin/logstash -f config/logstash-my.conf
也可以在任意位置输入命令
/usr/local/logstash-7.9.1/bin/logstash -f /usr/local/logstash-7.9.1/config/logstash-my.conf
以上完成就说明logstash配置完成了,测试往控制台随意输入内容,如果控制台有输出说明成功。
- 整合配置logstash和es
如果要做整合,主要关注的就是logstash-my.conf定义的配置文件。
input {
stdin { }
}
output {
elasticsearch {
hosts => "192.168.42.128:9200"
index => "logstash-test"
}
stdout {
codec => rubydebug {}
}
}
内容和刚才差不多,只是添加了一个es的内容,这只是一个测试,如果想要添加其他内容都可以,事件源可以是从stdin屏幕输入读取,可以从file指定的文件,也可以从es,filebeat,kafka,redis等读取。stdin就是键盘控制台输入,stdout就是控制台输出,elasticsearch中的hosts是配置的es的ip和端口,index是访问的名字。
在开启了es和logstash时,在windows打开浏览器,访问地址:192.168.42.128:9200/logstash-test/_search
控制台输入的内容,会在浏览器中显示,输入后,刷新就会出,如果想配置其他内容,可以看参考网站中的配置详解和介绍。
kibana安装
安装过程非常简单,依旧是在官网上下载的gz压缩包,注意版本号要一致
通过XFTP把压缩包传入Linux中,解压压缩包
tar -zxvf gz压缩包的名字
再把解压后的文件夹移动到usr下的local中集中管理
mv 文件夹名称 /usr/local
打开文件夹下config中的kibana.yml文件
设置 server.host : "0.0.0.0" 可以让所有人访问
设置 server.name : kibana-test ,给服务起个名字
设置 elasticsearch.hosts : ["http://172.29.12.35:9200"] ,ip和端口填入你的es启动的ip和端口
配置内容就此结束,启动kibana,需要其他人也访问,可以开放端口号,关闭防火墙
cd /usr/local/kibana-7.9.1
bin/kibana
root用户启动:bin/kibana --allow-root
Filebate安装
推荐参考网站:
https://www.cnblogs.com/zsql/p/13137833.html
安装过程非常非常简单,依旧是在官网上下载的gz压缩包,注意版本号要一致
通过XFTP把压缩包传入Linux中,解压压缩包
tar -zxvf gz压缩包的名字
再把解压后的文件夹移动到usr下的local中集中管理
mv 文件夹名称 /usr/local
打开文件夹下config中的filebate.yml文件,修改input和output
#=========================== Filebeat inputs =============================
filebeat.inputs:
- type: log
enabled: true #启动该配置
paths: #配置多个日志路径
- /var/logs/es_aaa_index_search_slowlog.log
- /var/logs/es_bbb_index_search_slowlog.log
- /var/logs/es_ccc_index_search_slowlog.log
- /var/logs/es_ddd_index_search_slowlog.log
- /var/logs/*.log
#================================ Outputs =====================================
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts #配多个logstash使用负载均衡机制
hosts: ["192.168.110.130:5044","192.168.110.131:5044","192.168.110.132:5044","192.168.110.133:5044"]
loadbalance: true #使用了负载均衡
配置结束后,启动使用
./filebeat -e -c filebeat.yml