news 2026/7/3 19:32:11

SpringBoot一键集成GrayLog,那叫一个丝滑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot一键集成GrayLog,那叫一个丝滑

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

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

Spring Boot 集成GrayLog

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

添加依赖如下:

<dependency> <groupId>de.siegmar</groupId> <artifactId>logback-gelf</artifactId> <version>3.0.0</version> </dependency>

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

<appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender"> <!-- Graylog服务的地址 --> <graylogHost>ip</graylogHost> <!-- UDP Input端口 --> <graylogPort>12201</graylogPort> <!-- 最大GELF数据块大小(单位:字节),508为建议最小值,最大值为65467 --> <maxChunkSize>508</maxChunkSize> <!-- 是否使用压缩 --> <useCompression>true</useCompression> <encoder class="de.siegmar.logbackgelf.GelfEncoder"> <!-- 是否发送原生的日志信息 --> <includeRawMessage>false</includeRawMessage> <includeMarker>true</includeMarker> <includeMdcData>true</includeMdcData> <includeCallerData>false</includeCallerData> <includeRootCauseData>false</includeRootCauseData> <!-- 是否发送日志级别的名称,否则默认以数字代表日志级别 --> <includeLevelName>true</includeLevelName> <shortPatternLayout class="ch.qos.logback.classic.PatternLayout"> <pattern>%m%nopex</pattern> </shortPatternLayout> <fullPatternLayout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d - [%thread] %-5level %logger{35} - %msg%n</pattern> </fullPatternLayout> <!-- 配置应用名称(服务名称),通过staticField标签可以自定义一些固定的日志字段 --> <staticField>app_name:austin</staticField> </encoder> </appender>

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

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

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

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

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

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

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

  • 模糊查询:直接输入要查询的内容,例如:orderid
  • 精确查询:要查询的内容加上引号,例如:"orderid: 11"
  • 指定字段查询:message:http 或 message:"http"
  • 多字段查询:message:(base-service base-web)
  • 多条件查询:message:http AND level_name:ERROR OR source:192.168.0.4
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 0:50:44

寒假集训7——STL

P3370 【模板】字符串哈希 题目描述 如题&#xff0c;给定 N 个字符串&#xff08;第 i 个字符串长度为 Mi​&#xff0c;字符串内包含数字、大小写字母&#xff0c;大小写敏感&#xff09;&#xff0c;请求出 N 个字符串中共有多少个不同的字符串。 友情提醒&#xff1a;如…

作者头像 李华
网站建设 2026/6/28 22:39:17

智能火灾报警系统的设计

智能火灾报警系统的设计 第一章 绪论 传统火灾报警系统多依赖单一烟雾传感器&#xff0c;存在响应滞后、误报率高、无法精准定位等问题&#xff0c;难以满足现代建筑对火灾预警的及时性与可靠性需求。智能火灾报警系统融合多传感器协同、智能识别、无线通信技术&#xff0c;构建…

作者头像 李华
网站建设 2026/7/2 9:19:09

Java源码:道路救援与同城货运一体化平台

以下是一套基于Java技术栈的道路救援与同城货运一体化平台源码方案&#xff0c;涵盖系统架构、核心功能、技术实现与代码示例&#xff1a; 一、系统架构 采用微服务架构设计&#xff0c;基于Spring Boot 2.7 Spring Cloud Alibaba构建&#xff0c;将系统拆分为用户服务、订单…

作者头像 李华
网站建设 2026/6/29 9:09:36

谢菲尔德大学突破:印尼多步推理问答揭示AI文化理解偏见

这项由英国谢菲尔德大学计算机科学学院主导、与印尼日惹国立发展大学信息学系合作完成的研究&#xff0c;发表于2026年计算语言学会议论文集&#xff08;论文编号&#xff1a;arXiv:2602.03709v1&#xff09;&#xff0c;有兴趣深入了解的读者可以通过该编号查询完整论文。要真…

作者头像 李华
网站建设 2026/7/1 22:41:04

基于深度学习的小麦病虫害检测系统[python]-计算机毕业设计源码+LW文档

摘要&#xff1a;小麦作为全球重要的粮食作物之一&#xff0c;其产量和质量受到病虫害的严重威胁。准确、及时地检测小麦病虫害对于采取有效的防治措施、保障小麦产量至关重要。本文研究了基于深度学习的小麦病虫害检测系统&#xff0c;阐述了深度学习技术在图像识别中的应用原…

作者头像 李华
网站建设 2026/7/2 2:11:50

如何让高度近视的脚步慢一点,家长们使用了“浑身解数”

如今&#xff0c;走在校园里不难发现&#xff0c;越来越多的孩子鼻梁上架起了厚重的眼镜&#xff0c;有的镜片厚如瓶底&#xff0c;眼神里藏着与年龄不符的疲惫。儿童青少年近视率居高不下&#xff0c;高度近视的低龄化趋势&#xff0c;成了压在无数家长心头的巨石。为了拦住高…

作者头像 李华