elk+rabbitmq+springboot快速搭建日志系统

elk+rabbitmq+springboot日志系统搭建说明

一、环境部署

1、使用工具(xshell等)远程连接到110服务器,首先部署好 elk (ElasticSearch,logstash,kibana) 和 rabbitmq

elk和rabbitmq我先前已经在110服务器用docker部署好了,具体部署步骤自行查阅资料。(110服务器只是我当时使用的服务器地址,不用在意。)

2、进入logstash进行配置

如果创建logstash容器时使用 -v 绑定了某个卷,则不需要进入logstash容器内部。

  • 使用命令进入容器 (“logstash”是创建该容器时自定义的容器名字)
docker exec -it logstash bash
  • 成功进入后,进入config内查看 pipelines.yml 文件(7.0以下的旧版配置不在这里,建议使用新版)

在这里插入图片描述

  • pipelines.yml文件中告诉了我们它启动是根据哪个路径的配置文件运行,我们找到对应的这个路径。

在这里插入图片描述

  • 进入后我们看到其中有个默认的启动配置文件 logstash.conf(我已经给它加了个.backup后缀)

在这里插入图片描述

  • 我们添加自己需要的配置,我这里已经添加好了 (logstash-mq.conf)
#日志信息会在项目中发送到mq中(下面会有在项目中的配置),我们要从mq中拿到日志信息
input {
   
   #普通操作日志在下面配置的队列
   rabbitmq {
   
       type =>"operation"
       durable => true
       exchange => "log.exchange.direct"
       exchange_type => "direct"
       key => "log_operation"
       host => "172.17.0.1"
       port => 5672
       user => "superadmin"
       password => "admin2020"
       queue => "QUEUE_LOG_OPERATION"
       auto_delete => false
  }
 #上送指令的日志存在了下面配置的队列
 rabbitmq {
   
       type =>"upmsg"
       durable => true
       exchange => "log.exchange.direct"
       exchange_type => "direct"
       key => "log_up_msg"
       host => "172.17.0.1"
       port => 5672
       user => "superadmin"
       password => "admin2020"
       queue => "QUEUE_LOG_UP_MSG"
       auto_delete => false
  }
 #下发指令的日志存在了下面配置的队列
 rabbitmq {
   
       type =>"downmsg"
       durable => true
       exchange => "log.exchange.direct"
       exchange_type => "direct"
       key => "log_down_msg"
       host => "172.17.0.1"
       port => 5672
       user => "superadmin"
       password => "admin2020"
       queue => "QUEUE_LOG_DOWN_MSG"
       auto_delete => false
  }
}

#我们要输出到es,把日志信息存在es中,不同日志发到不同的索引中
output {
   
    #下发指令
    if "downMsg" in [message]{
   
        elasticsearch {
   
                hosts => ["172.17.0.1:9200"]
                index => "downmsg-log-%{+YYYY.MM.dd}"
        }
    }
    #上送指令
    else if "upMsg" in [message] {
   
         elasticsearch {
   
                hosts => ["172.17.0.1:9200"]
                index => "upmsg-log-%{+YYYY.MM.dd}"
         }
    }
    #普通操作指令
    else {
   
        elasticsearch {
   
                hosts => ["172.17.0.1:9200"]
                index => "operation-log-%{+YYYY.MM.dd}"
         }
    }
}

【说明】

  1. input就是logstash是配置好的队列的消费者,从队列拿到数据后 output 输出到es中,它会把数据放到动态生成的索引中,你可以把索引当成数据库。logstash可以用来过滤数据, input -> filter -> output,当然我这里没有配置,以后有空我会写个更加详细的说明,更多花里胡哨的操作可以阅读logstash官方文档。

  2. 这里的 ip地址 172.17.0.1 你可以当作 110服务器中的docker容器之间沟通的地址,你也可以配成可以访问的ip加端口。

  3. 【message】字段存放的就是推送到mq中具体的日志信息,这个 “upMsg” in [message]就是判断这个字段中有没有“upMsg”字符串,后面我会说这个字符串哪里来的,通过这个我们将不同类型的日志放到不同索引中;”%{+YYYY.MM.dd}"这个很明显就是获取当天的日期了。每天的日志存在一个索引中。

    (ps:你可能想说,这个判断能不能缩小范围,这样写好像重复了挺多代码,答案是不能,原因我还未找到。你还想说,这个“upmsg”索引名不是驼峰命名,那就注意了:es中的索引名只能小写。)

  4. 更多详细配置后续需要可以自行更改,例如 output 那里可以配置数据到了多少条批量输出到es。

  • 之后我们使用exit命令退出容器并重启容器(restart),进入mq的管理界面,队列、交换机等都会自动生成给我们,当然你自己事先添加也可以。当数据量够了,就会在es中找到或者生成我们配置的索引并存放数据。

二、集成到SpringBoot项目

【添加配置】

1、logback依赖,在maven项目中引入下面这个依赖就会帮我们引入logback相关依赖,具体可以点进入去搜索一下。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.2.RELEASE</version>
</parent>

2、现在我们已经搭建好了基础环境,我们现在要把项目中的日志信息发送到mq中,我们需要添加一个配置

文件 logback-spring.xml,该文件在项目中的 common-web 模块的resource下(这只是我当时编写时的地方,不用在意),下面是日志写入mq的具体配置,这里的 appender 配置项要和刚才 input 中的配置信息相同。

<?xml version="1.0" encoding="UTF-8"?>
<!--
    scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true
    scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位默认单位是毫秒,当scan为true时此属性生效,默认时间间隔为1分钟
    日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出
    debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration debug="true" scan="true" scanPeriod="30 seconds" packagingData="true">
<!--    <include resource="org/springframework/boot/logging/logback/base.xml" />-->
   
    <conversionRule conversionWord="localConfig" converterClass="org.zxsg.common.config.LocalConfig"/>
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <statusListener class
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值