SpringBoot接入轻量级分布式日志框架GrayLog

点击上方“芋道源码”,选择“设为星标”

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 
  • 原创 | Java 2021 超神之路,很肝~

  • 中文详细注释的开源项目

  • RPC 框架 Dubbo 源码解析

  • 网络应用框架 Netty 源码解析

  • 消息中间件 RocketMQ 源码解析

  • 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析

  • 作业调度中间件 Elastic-Job 源码解析

  • 分布式事务中间件 TCC-Transaction 源码解析

  • Eureka 和 Hystrix 源码解析

  • Java 并发源码

来源:blog.csdn.net/m0_71777195/

article/details/127278513

  • 部署Graylog

  • Spring Boot 集成GrayLog

SpringBoot接入轻量级分布式日志框架GrayLog_第1张图片


在微服务架构中,一个服务通常都会有多个实例,而这些服务实例可能会被部署到不同的机器或虚拟容器上。此时对于日志数据的查看和分析就会变得困难起来,因为这些服务的日志数据都散落在各自实例所在的机器或容器上。例如,我现在要在订单服务里查找一个订单id为1的日志,而订单服务有10个实例并且部署在10台不同的机器上,那么我就得一台台的去找这个日志数据。所以这时候我们就需要有一个可以实现日志聚合的工具,将所有实例的日志数据都聚合在一个地方,那么我们就不需要到每个实例去找日志了,而本文将使用的日志聚合工具为Graylog

部署Graylog

老样子,直接上docker-compose,如果一直跟着我的步伐,应该对着不陌生了。docker-compose.yml 的内容其实我也是抄官网的,这里还是贴下吧(就不用你们翻了)

version: '3'
services:
    mongo:
      image: mongo:4.2
      networks:
        - graylog
    elasticsearch:
      image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
      environment:
        - http.host=0.0.0.0
        - transport.host=localhost
        - network.host=0.0.0.0
        - "ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true -Xms512m -Xmx512m"
      ulimits:
        memlock:
          soft: -1
          hard: -1
      deploy:
        resources:
          limits:
            memory: 1g
      networks:
        - graylog
    graylog:
      image: graylog/graylog:4.2
      environment:
        - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
        - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
        - GRAYLOG_HTTP_EXTERNAL_URI=http://ip:9009/ # 这里注意要改ip
      entrypoint: /usr/bin/tini -- wait-for-it elasticsearch:9200 --  /docker-entrypoint.sh
      networks:
        - graylog
      restart: always
      depends_on:
        - mongo
        - elasticsearch
      ports:
        - 9009:9000
        - 1514:1514
        - 1514:1514/udp
        - 12201:12201
        - 12201:12201/udp
networks:
    graylog:
      driver: bridg

这个文件里唯一需要改动的就是 ip (本来的端口是 9000 的,我由于已经占用了 9000 端口了,所以我这里把端口改成了 9009 ,你们可以随意)

嗯,写完 docker-compose.yml 文件,直接 docker-compose up -d 它就启动起来咯。

启动以后,我们就可以通过 ip:port 访问对应的Graylog后台地址了,默认的账号和密码是 admin/admin

SpringBoot接入轻量级分布式日志框架GrayLog_第2张图片

随后,我们配置下 inputs 的配置,找到 GELF UDP ,然后点击 Launch new input ,只需要填写 Title 字段,保存就完事了(其他不用动)。

SpringBoot接入轻量级分布式日志框架GrayLog_第3张图片

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

Spring Boot 集成GrayLog

首先创建一个SpringBoot项目,SpringBoot默认自带的日志框架是Logback,我们可以到 Graylog组件市场查找Logback相应的组件。

添加依赖如下:


  de.siegmar
  logback-gelf
  3.0.0

接着在项目的resources目录下,新建一个logback.xml文件,编辑文件内容如下:


  
  ip
  
  12201
  
  508
  
  true
  
    
    false
    true
    true
    false
    false
    
    true
    
      %m%nopex
    
    
      %d - [%thread] %-5level %logger{35} - %msg%n
    

    
    app_name:austin
  

在这个配置信息里,唯一要改的也只是 ip 的地址,到这里接入就完毕了,我们再打开控制台,就能看到日志的信息啦。

SpringBoot接入轻量级分布式日志框架GrayLog_第4张图片

配置完成后启动项目,启动完成后正常情况下可以在Graylog的Search界面中查看日志信息:

SpringBoot接入轻量级分布式日志框架GrayLog_第5张图片

点击一条日志信息会展开详细的字段:

SpringBoot接入轻量级分布式日志框架GrayLog_第6张图片

以上是最简单的日志配置,如果希望对更多配置项进行自定义的话,可以参考该组件的GitHub文档,上面有具体的配置项说明

现在我们已经成功将项目的日志数据发送到了Graylog服务,如果我们想在Graylog上检索日志也很简单,只需要使用一些简单的语法即可,例如我要查询包含Mapping的日志信息:

SpringBoot接入轻量级分布式日志框架GrayLog_第7张图片

还可以使用一些条件表达式,例如我要查询message字段包含http,并且日志级别为INFO的日志信息:

SpringBoot接入轻量级分布式日志框架GrayLog_第8张图片

常用的日志搜索语法如下:

  • 模糊查询:直接输入要查询的内容,例如:orderid

  • 精确查询:要查询的内容加上引号,例如:"orderid: 11"

  • 指定字段查询:message:http 或 message:"http"

  • 多字段查询:message:(base-service base-web)

  • 多条件查询:message:http AND level_name:ERROR OR source:192.168.0.4



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

SpringBoot接入轻量级分布式日志框架GrayLog_第9张图片

已在知识星球更新源码解析如下:

SpringBoot接入轻量级分布式日志框架GrayLog_第10张图片

SpringBoot接入轻量级分布式日志框架GrayLog_第11张图片

SpringBoot接入轻量级分布式日志框架GrayLog_第12张图片

SpringBoot接入轻量级分布式日志框架GrayLog_第13张图片

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)

你可能感兴趣的:(中间件,分布式,java,mysql,数据库)