0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_ro2CN3Fa 来源:CSDN 作者:CSDN 2022-10-27 10:29 次阅读


在微服务架构中,一个服务通常都会有多个实例,而这些服务实例可能会被部署到不同的机器或虚拟容器上。此时对于日志数据的查看和分析就会变得困难起来,因为这些服务的日志数据都散落在各自实例所在的机器或容器上。例如,我现在要在订单服务里查找一个订单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-itelasticsearch: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

c21aeee2-559e-11ed-a3b6-dac502259ad0.jpg

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

c24bf01e-559e-11ed-a3b6-dac502259ad0.jpg

基于 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相应的组件。

添加依赖如下:

<dependency>
<groupId>de.siegmargroupId>
<artifactId>logback-gelfartifactId>
<version>3.0.0version>
dependency>

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

<appendername="GELF"class="de.siegmar.logbackgelf.GelfUdpAppender">

<graylogHost>ipgraylogHost>

<graylogPort>12201graylogPort>

<maxChunkSize>508maxChunkSize>

<useCompression>trueuseCompression>
<encoderclass="de.siegmar.logbackgelf.GelfEncoder">

<includeRawMessage>falseincludeRawMessage>
<includeMarker>trueincludeMarker>
<includeMdcData>trueincludeMdcData>
<includeCallerData>falseincludeCallerData>
<includeRootCauseData>falseincludeRootCauseData>

<includeLevelName>trueincludeLevelName>
<shortPatternLayoutclass="ch.qos.logback.classic.PatternLayout">
<pattern>%m%nopexpattern>
shortPatternLayout>
<fullPatternLayoutclass="ch.qos.logback.classic.PatternLayout">
<pattern>%d-[%thread]%-5level%logger{35}-%msg%npattern>
fullPatternLayout>


<staticField>app_name:austinstaticField>
encoder>
appender>

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

c25d5674-559e-11ed-a3b6-dac502259ad0.jpg

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

c2734b32-559e-11ed-a3b6-dac502259ad0.jpg

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

c29f074a-559e-11ed-a3b6-dac502259ad0.jpg

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

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

c2be869c-559e-11ed-a3b6-dac502259ad0.jpg

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

c2df12f4-559e-11ed-a3b6-dac502259ad0.jpg

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

  • 模糊查询:直接输入要查询的内容,例如:orderid
  • 精确查询:要查询的内容加上引号,例如:"orderid: 11"
  • 指定字段查询:message:http 或 message:"http"
  • 多字段查询:message:(base-service base-web)
  • 多条件查询:message:http AND level_name:ERROR OR source:192.168.0.4

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 框架
    +关注

    关注

    0

    文章

    398

    浏览量

    17415
  • spring
    +关注

    关注

    0

    文章

    338

    浏览量

    14299
  • 日志
    +关注

    关注

    0

    文章

    138

    浏览量

    10628
  • SpringBoot
    +关注

    关注

    0

    文章

    173

    浏览量

    164

原文标题:SpringBoot接入轻量级分布式日志框架GrayLog

文章出处:【微信号:芋道源码,微信公众号:芋道源码】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    轻量级多级菜单控制框架

    轻量级菜单框架(C语言) 作为嵌入软件开发,可能经常会使用命令行或者显示屏等设备实现人机交互的功能,功能中通常情况都包含 UI 菜单设计;很多开发人员都会有自己的菜单框架模块,防止重
    发表于 10-12 09:36

    屋顶分布式光伏并网点如何监测电能质量

    分布式光伏参考标准: 安科瑞 邹玉丽 136-3648-3643 根据国家电网Q/GDW1480-2015 《分布式电源接入电网技术规定》:分布式电源并网电压等级可根据各 并网点装机容
    的头像 发表于 09-13 10:30 233次阅读
    屋顶<b class='flag-5'>分布式</b>光伏并网点如何监测电能质量

    基于Openharmony轻量级操作系统的分布式数据管理开发案例

    实验内容本例程演示如何在小凌派-RK2206开发板上使用OpenHarmony轻量级操作系统进行KvStore(即分布式数据管理)数据读写。例程:(1)创建两个线程,一个负责写入KvStore存储
    的头像 发表于 08-07 08:23 818次阅读
    基于Openharmony<b class='flag-5'>轻量级</b>操作系统的<b class='flag-5'>分布式</b>数据管理开发案例

    基于Openharmony轻量级操作系统的分布式数据管理开发案例

    实验内容 本例程演示如何在小凌派-RK2206开发板上使用OpenHarmony轻量级操作系统进行KvStore(即分布式数据管理)数据读写。 例程: (1)创建两个线程,一个负责写入KvStore
    发表于 08-06 11:56

    日志框架简介-Slf4j+Logback入门实践

    前言 随着互联网和大数据的迅猛发展,分布式日志系统和日志分析系统已广泛应用,几乎所有应用程序都使用各种日志框架记录程序运行信息。因此,作为工
    的头像 发表于 07-30 10:00 1045次阅读
    <b class='flag-5'>日志</b><b class='flag-5'>框架</b>简介-Slf4j+Logback入门实践

    安科瑞分布式光伏系统在某重工企业18MW分布式光伏中应用

    ,江苏省分布式光伏有2228万千瓦新增接入空间! 表:江苏省分布式光伏接入能力规划 根据国家能源局统计数据,截止2023年底,江苏省分布式
    的头像 发表于 07-19 11:30 466次阅读
    安科瑞<b class='flag-5'>分布式</b>光伏系统在某重工企业18MW<b class='flag-5'>分布式</b>光伏中应用

    深度详解嵌入系统专用轻量级框架设计

    MR 框架是专为嵌入系统设计的轻量级框架。充分考虑了嵌入系统在资源和性能方面的需求。通过提供标准化的设备管理接口,极大简化了嵌入
    发表于 04-27 02:32 921次阅读
    深度详解嵌入<b class='flag-5'>式</b>系统专用<b class='flag-5'>轻量级</b><b class='flag-5'>框架</b>设计

    鸿蒙OS 分布式任务调度

    鸿蒙OS 分布式任务调度概述 在 HarmonyO S中,分布式任务调度平台对搭载 HarmonyOS 的多设备构筑的“超级虚拟终端”提供统一的组件管理能力,为应用定义统一的能力基线、接口
    的头像 发表于 01-29 16:50 445次阅读

    什么是分布式架构?

    分布式架构是指将一个系统或应用拆分成多个独立的节点,这些节点通过网络连接进行通信和协作,以实现共同完成任务的一种架构模式。这种架构模式旨在提高系统的可扩展性、可靠性和性能表现。 一、分布式架构的特点
    的头像 发表于 01-12 15:04 1139次阅读
    什么是<b class='flag-5'>分布式</b>架构?

    分布式系统硬件资源池原理和接入实践

    /distributedhardware_distributed_hardware_fwk/blob/master/common/utils/include/device_type.h Step2:实现分布式硬件框架定义的南向接入
    发表于 12-06 10:02

    zookeeper分布式原理

    Zookeeper是一个开源的分布式协调服务,可以用于构建高可用、高性能的分布式系统。它提供了一个简单且高效的层次命名空间,可以用来存储配置信息、状态信息、命名服务等。Zookeeper的设计目标
    的头像 发表于 12-03 16:33 602次阅读

    【AIOps】一种全新的日志异常检测评估框架:LightAD,相关成果已被软工顶会ICSE 2024录用

    需要更长的时间来进行日志预处理、模型训练和模型推断,从而阻碍了它们在需要快速部署日志异常检测服务的在线分布式云系统中的采用。 本文对现有的基于经典机器学习和深度学习方法的日志异常检测方
    的头像 发表于 11-29 17:40 581次阅读

    嵌入框架Zorb Framework状态机的实现

    Zorb Framework是一个基于面向对象的思想来搭建一个轻量级的嵌入框架
    的头像 发表于 11-29 09:33 1073次阅读
    嵌入<b class='flag-5'>式</b><b class='flag-5'>框架</b>Zorb Framework状态机的实现

    分布式通信是什么 分布式网络搭建

    上的任务分配。 分布式通信 什么叫分布式? 机器人功能是由各种节点组成的,这些节点可能位于不同的计算机中,这种结构可以将原本资源消耗较多的任务,分配到不同的平台上,减轻计算压力,这就是分布式通信
    的头像 发表于 11-27 15:49 731次阅读
    <b class='flag-5'>分布式</b>通信是什么 <b class='flag-5'>分布式</b>网络搭建

    Java手写分布式锁的实现

    随着互联网业务的发展,原本单机部署的系统演化成如今的分布式集群系统后,由于分布式系统多线程
    的头像 发表于 11-17 15:51 538次阅读
    Java手写<b class='flag-5'>分布式</b>锁的实现