ELK分布式日志集群在本地虚拟机部署(可应用于生产环境),后台服务基于RuoYi项目———全网最详细

注:本次以2台服务器为例,生产环境中按照此步骤部署若干个服务器也适用。

目录

1.安装虚拟机

2.虚拟机克隆

3.ssh免密登录设置

4.ELK集群部署

                4.1配置jdk

                4.2 elasticsearch安装

                4.3 elasticsearch-head-master安装

                4.4 Kibana安装

                4.5 logstash安装

5.以RuoYi-Cloud-Oracle项目进行集成


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 

 部署思路:

    1. 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可以看到启动的日志:

 

 

 

 

 

 

 

 原创不易,多多打赏!跪了。。。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值