注:本次以2台服务器为例,生产环境中按照此步骤部署若干个服务器也适用。
目录
4.3 elasticsearch-head-master安装
1.安装虚拟机
1.采用VM 16版本,下载地址:
链接:https://pan.baidu.com/s/11fRtflD0TZ-dNIB6tG9_qQ?pwd=rr4k提取码:rr4k
2.采用CentOS 7版本映像:
链接:https://pan.baidu.com/s/1Vl7XXtW8tAFelZ_zXF_APg?pwd=u9b8 提取码:u9b8
3.下面是安装虚拟机详细步骤:
一直下一步,直到这里:
继续下一步,直到这里:
注:上面的CentOS 7 000 和文件夹位置都是自己选择并且创建的。
继续下一步:
直到这里:
点击完成:
把声音和打印机移除:
选择已经下载的映像文件:
开启虚拟机:
按上下箭头选择红框里面的:
点击继续按钮:
选择时区,为shanghai,点击Done:
选择红框里面的,点进去之后继续点击Done:
选择红框里面的,点进去之后继续点击Done:
点击红框里面的按钮:
记住红框里面的ip地址(后面要用):
点击红框里面的按钮:
设置用户密码,建议用户密码都设置成root:
等待加载:
点击红箭头里的重启按钮:
登录进去后按照以下命令进行对防火墙的设置:
关闭并禁用防火墙:
systemctl stop firewalld
systemctl disable firewalld
关闭并禁用网络管理服务:
systemctl stop NetworkManager
systemctl disable NetworkManager
输入命令 vi /etc/sysconfig/network-scripts/ifcfg-ens33,根据下列红框里的进行修改,ip地址为之前记住的ip地址。
编辑完退出,输入systemctl restart network 重新启动网络。
此时ping百度可以ping通。
在MobaXterm或者Xshell上进行连接,可以连接成功。
以上就是一个虚拟机的配置成功,集群部署需要两个及以上的虚拟机才行。
2.虚拟机克隆
下面进行虚拟机的克隆处理。
关闭之前的虚拟机(CentOS 7 000),对其进行克隆处理:
修改克隆虚拟机的名称,存储位置。点击完成。
开启虚拟机,进行登录:
输入命令 vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改ip地址,将原来的192.168.230.131改为192.168.230.132,其他保持不变。
编辑完退出,输入systemctl restart network 重新启动网络。
Ping百度也能ping通。
在MobaXterm或者Xshell上进行连接,可以连接成功。
以上就是对虚拟机的克隆处理。
3.ssh免密登录设置
下面进行SSH免密登录配置。
安装vim包:
将131和132虚拟机进行改名:
重启后,可以看到改名成功:
下面进行ssh免密登录的配置(跟着步骤来就行了),先在131虚拟机配置:
注:输入ssh-keygen -t rsa后要连续按三下回键
先对自己进行免密配置:
注:输入ssh ip 是检验是否配置成功的,CTRL+D是退出登录(不要忘记退出登录!)
接着对132虚拟机进行免密配置:
接着在132虚拟机进行配置:
配置成功进行测试(按照下面的步骤进行):
下面可以看到最终配置后的效果:
4.ELK集群部署
需要下载的软件:
下载地址:https://pan.baidu.com/s/1_IBI2ZGu4CSz2VigNbEadQ?pwd=kwtn
部署思路:
-
- ip
安装软件
192.168.230.131
jdk>=8、elasticsearch、logstash、kibana、elasticsearch -head-master、node
192.168.230.132
jdk>=8、elasticsearch、logstash
4.1配置jdk
在131和132虚拟机/opt/目录下上传jdk、node安装包(132不需要上传node安装包,只需要上传jdk安装包即可),并解压:
在131配置jdk和node的环境变量:
export JAVA_HOME=/opt/jdk1.8.0_371
export NODE_HOME=/opt/node-v8.9.1-linux-x64
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$NODE_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib
export NODE_PATH=$NODE_HOME/lib/node_modules
在132上配置jdk环境变量:
export JAVA_HOME=/opt/jdk1.8.0_371
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
查看是否配置成功:
4.2 elasticsearch安装
在131虚拟机/opt/目录下上传elasticsearch和elasticsearch-head-master,并解压;在132虚拟机/opt/目录下上传elasticsearch,并解压。
同理在131和132解压elasticsearch:
下面在131解压elasticsearch-head-master,由于是zip文件,所以下载unzip解压工具:
分别配置131和132里的elasticsearch.yml文件:
在131配置内容如下:
在132配置内容和上面一样,只需要把23行改成node.name: elk2即可(注意空一格),其它不变!
配置虚拟机内存大小(131和132一样配置):
在limits.conf文件末尾加:
* hard nofile 65536
* soft nofile 65536
在sysctl.conf文件末尾加:
vm.max_map_count=262144
之后输入:sysctl -p 重新加载配置
分别为131和132创建es用户,用来启动elasticsearch(root用户启动不了)
启动131和132的elasticsearch:
启动命令:bash /opt/elasticsearch-7.10.2/bin/elasticsearch -d
查看elasticsearch是否配置成功:
浏览器输入192.168.230.131:9200,
查看集群是否健康,输入192.168.230.131:9200/_cluster/health?pretty
已经配置成功!
4.3 elasticsearch-head-master安装
解释:elasticsearch-head-master 是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等。
进行如下配置:
在elasticsearch-head-master目录下进行安装:
若出现报错,则用:npm install -g
启动elasticsearch-head-master:
启动命令:npm run start &
在浏览器查看是否启动成功:
配置完成!
4.4 Kibana安装
在131虚拟机/opt/目录下上传Kibana并解压
配置kibana.yml文件:
对kibana赋es用户权限:
启动kibana:
启动命令:/opt/kibana-7.10.2-linux-x86_64/bin/kibana &
启动成功:
4.5 logstash安装
在131和132虚拟机/opt/目录下上传logstash并解压:
对131里的logstash-sample.conf配置:
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
# beats
input {
tcp {
port => 5044
# 输入为json数据
codec => json_lines
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["http://192.168.230.131:9200","http://192.168.230.132:9200"]
# index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
# index => "logstash-%{[server_name]}-%{+YYYY.MM.dd}"
index => "%{[spring.application.name]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
filter {
date {
match => ["PARAM_date", "yyyy.MM.dd.HH.mm","UNIX_MS"]
target => "@timestamp"
}
ruby {
code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
}
ruby {
code => "event.set('@timestamp',event.get('timestamp'))"
}
mutate {
remove_field => ["timestamp"]
}
}
对132里的logstash-sample.conf配置:
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
# beats
input {
tcp {
port => 5044
# 输入为json数据
codec => json_lines
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["http://192.168.230.131:9200","http://192.168.230.132:9200"]
# index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
# index => "logstash-%{[server_name]}-%{+YYYY.MM.dd}"
index => "%{[spring.application.name]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
filter {
date {
match => ["PARAM_date", "yyyy.MM.dd.HH.mm","UNIX_MS"]
target => "@timestamp"
}
ruby {
code => "event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)"
}
ruby {
code => "event.set('@timestamp',event.get('timestamp'))"
}
mutate {
remove_field => ["timestamp"]
}
}
可以发现这两个配置是一样的。都全部写在上面了!
启动logstash(131和132都要启动),在root用户下启动。
出现图示则启动成功。
至此,ELK集群已经完成部署!接下来我将以RuoYi项目为例子进行项目集成。
5.以RuoYi-Cloud-Oracle项目进行集成
项目地址:https://github.com/yangzongzhuan/RuoYi-Cloud-Oracle
假设前提项目已经配置好了
找到ruoyi-gateway这一模块:
配置logstash依赖
<!-- logstash -->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>7.1.1</version>
</dependency>
Logback.xml的源码:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 -->
<property name="log.path" value="logs/ruoyi-gateway" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
<springProperty scope="context" name="appName" source="spring.application.name"/>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!--输出到logstash的appender-->
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--可以访问的logstash日志收集端口-->
<destination>192.168.230.128:5044</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"spring.application.name":"${appName}"}</customFields>
</encoder>
</appender>
<!-- 系统模块日志级别控制 -->
<logger name="com.ruoyi" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" />
<root level="info">
<appender-ref ref="console" />
</root>
<!--系统操作日志-->
<root level="info">
<!-- <appender-ref ref="file_info" />-->
<!-- <appender-ref ref="file_error" />-->
<appender-ref ref="logstash"/>
</root>
</configuration>
找到ruoyi-ayth这一模块:
启动这两个模块。
可以看到在elasticsearch-head-master插件中看到了日志索引:
在kibana可以看到启动的日志:
原创不易,多多打赏!跪了。。。