统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合

这篇具有很好参考价值的文章主要介绍了统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

原创/朱季谦

最近在做一个将分布式系统的日志数据通过logstash传到kafka的功能,做完之后决定业余搭一个ELK日志分析系统,将logstash采集到的日志传给Elasticsearch。经过一番捣鼓,也把这个过程给走通了,于是写了这篇总结,可按照以下步骤搭建logstash采集spring日志数据并传输给Elasticsearch。

首先,logstash是一个开源的数据收集引擎,能够同时从多个来源采集到数据,并将数据转发到想存储的“库”中。例如,logstash可以采集数据转发存储到Elasticsearch,也可以转发到kafka等消息中间件里。logstash拥有强大的插件生态,包括基本的http、tcp、udp、file以及kafa、redis等等。这些插件,在logstash5.x版本以上的,是已经自带了,不需要额外安装。

在基于ssm的开发过程中,运行Spring项目时,可以在控制台上看到log的日志打印信息,我们可以把这些日志信息的ERROR日志进行监听和转发存储。

如何实现logstash来监听Spring项目的日志并将ERROR数据进行转发存储呢?

部署架构图:

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

本地验证环境:win10,Spring+Mybatis+logback.xml

可以按照以下流程来实现:

1.下载logstash。

根据以下地址来网盘获取logstash-5.5.2版本的:

链接:https://pan.baidu.com/s/1h7xo65P7_O76Azt0-I-2-A

提取码:95vg

还可以官网下载:Download Logstash Free | Get Started Now | Elastic

2.安装logstash

直接把压缩包压缩到本地某个盘里就可以了,不需要做额外操作了,5.x以上版本的logstash是不需要安装其他插件,已经自带大部分插件。

3.验证是否安装成功

运行cmd,进入logstash的bin目录下,运行指令:logstash -e 'input{stdin{}} output{stdout{}}'

运行成功的截图如下,即为安装并启动成功:

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

启动以后,在光标处输入:hellowrold

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

正常情况下,会显示以下信息,证明logstash可以正常使用了。

在这个过程里,涉及到几个概念,logstash是一个管道,里面有两个input和output的必选元素,即输入与输出,之间还可以有一个可选的过滤器filter过滤器。input插件从源头获取到数据,过滤器会根据条件来进行修改,最后通过ouput插件将数据传输,可输出给Elasticsearch、kafka、file

等。

处理过程模型图如下:

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

Logstash 提供了一个 shell 脚本叫 logstash,支持以下运行参数:

执行命令: -e 执行-e后面的参数:logstash -e 'input{stdin{}} output{stdout{}}'

执行文件: --config 或 -f 执行-f后面的conf文件:logstash -f logstash.conf

输入插件:input{ … }

过滤插件:filter{ … }

输出插件:output{ … }

测试配置文件是否正确,然后退出:-t

在这篇文章里,主要用到以上这些命令,其余读者若感兴趣可以自行去研究探索。

4.配置一个文件**.conf

可以在bin目录或者config目录或者其他目录下,新建一个**.conf文件,我选择的是bin目录下,新建文件logstash.conf,截图如下:

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

在logstash.conf文件里配置信息:

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

 1 input { stdin { } }#该行可有可无,写来打印测试而已
 2 input {
 3     #开启tcp插件的监听
 4     tcp {
 5     #这个需要配置成本机IP,不然logstash无法启动
 6     host => "127.0.0.1"
 7     #端口号
 8     port => 9600
 9     #将日志以json格式输入
10     codec => json_lines
11   }
12 }
13 
14 output {
15    #输出打印
16     stdout { codec => rubydebug } 
17 }

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

配置好,就可以先启动进行监听了,启动命令:先cd进到存放logstash.conf的目录下,我的目录在bin里,所以进入的是bin目录,执行:logstash -f logstash.conf。

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

5.在spring进行logstash配置的maven依赖引入

我在项目里用到的开源日志组件是logback它是log4j的改良,主要分为以下三个模块:

logback-classic:log4j的一个改良版本,完整实现了slf4j API,可以方便更换成其它日志系统如log4j或JDK14 Logging。

logback-access:访问模块与Servlet容器集成提供通过Http来访问日志的功能。

logback-core:是其它两个模块的基础模块。

logback需要在maven里引用到的依赖:

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.3</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-access</artifactId>
    <version>1.2.3</version>
</dependency>
<dependency>
    <groupId>net.logstash.log4j</groupId>
    <artifactId>jsonevent-layout</artifactId>
    <version>1.6</version>
</dependency>
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>5.0</version>
</dependency>

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

如果引用到的ch.qos.logback依赖版本太低的话,可能会出现以下错误:java.lang.NoSuchMethodError: ch.qos.logback.core.util.Loader.getResourceOccurrenceCount(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set;

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

可以根据项目需求来选择合适的版本,经过测试,以上的1.2.3版本是可以符合要求的。配置完成依赖后,就可以开始进行下一步配置。

6.在spring的logback.xml里进行logstash配置(省略logback其余无关该流程的部分)

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

 1 <!--开启tcp格式的logstash传输,通过TCP协议连接Logstash-->
 2 <appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
 3     <destination>127.0.0.1:9600</destination>
 4 
 5     <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
 6         <jsonFactoryDecorator class="net.logstash.logback.decorate.CharacterEscapesJsonFactoryDecorator">
 7             <escape>
 8                 <targetCharacterCode>10</targetCharacterCode>
 9                 <escapeSequence>\u2028</escapeSequence>
10             </escape>
11         </jsonFactoryDecorator>
12         <providers>
13             <pattern>
14                 <pattern>
15                     {
16                     "timestamp":"%date{ISO8601}",
17                     "user":"test",
18                     "message":"[%d{yyyy-MM-dd HH:mm:ss.SSS}][%p][%t][%l{80}|%L]%m"}%n
19                     }
20                 </pattern>
21             </pattern>
22         </providers>
23     </encoder>
24     <keepAliveDuration>5 minutes</keepAliveDuration>
25 </appender>
26 
27 <root level="INFO">
28     <appender-ref ref="STASH"/>
29 </root>

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

配置说明:

encoder:配置的规范;

LoggingEventCompositeJsonEncoder:json格式的编码器,即将日志数据转换成json格式;

jsonFactoryDecorator:解决中文转码的问题;

providers:json格式提供者,对json进行一个定制化设置,比如,timestamp,message,thread_name等,其他的自定义的字段的值可以通过MDC设置进来,格式就是%date{xx},

注意:按照上面的设置,logstash才可以正常接收到日志数据,否则是无法接收到的。

destination定义的ip与端口与logstash里的logstash.conf需一直,logstash.conf里的tcp会一直监听这个ip的端口:

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

配置完成后,启动spring项目,这时原来监听tcp的logstash就可以实时监听接收到了数据,logstash的控制台显示打印如下:

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

若要监听到的是ERROR级别的日志,在logback.xml里的logstash配置里的appender里添加一行以下代码即可:

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
    <level>ERROR</level>
</filter>

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

在日志级别修改为以下即可:
1  <root level="INFO">
2     <appender-ref ref="STASH"/>
3     <appender-ref ref="ERROR"/>
4  </root>

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

 7.到这一步,就完成了通过logstash收集spring的logback日志的功能,在这个基础上,可以再进一步扩展,扩展将logstash采集到的数据输出到Elasticsearch。

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

 1  input { stdin { } }#该行可有可无
 2  input {
 3      #开启tcp模式的监听
 4      tcp {
 5      #这个需要配置成本机IP,不然logstash无法启动
 6      host => "127.0.0.1"
 7      #端口号
 8      port => 9600
 9      #将日志以json格式输入
10      codec => json_lines
11     }
12 }
13  
14 output {
15     #输出打印
16     stdout { codec => rubydebug } 
17     elasticsearch { hosts => ["127.0.0.1:9200"] }
18 }

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

 打开已经本地安装的Elasticsearch:http://127.0.0.1:9100/,可以看到,ES可以接受到logstash接收到的数据了:

统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合,ELK,spring,logback,elasticsearch

 同理,可根据以上方案在分布式架构环境当中,集成各个模块的日志,统一推送到Elasticsearch里。文章来源地址https://www.toymoban.com/news/detail-768004.html

到了这里,关于统一日志管理方案:Spring项目logback日志与logstash和Elasticsearch整合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch系列组件:Logstash强大的日志管理和数据分析工具

    Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎,设计用于云计算环境中,能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性,可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个全文搜索引擎,它还提供了分布

    2024年02月08日
    浏览(47)
  • 使用logstash将项目的日志存储到Elasticsearch中(详细!新手避坑点!)

    1.环境准备 我这里默认你们这个logstash和Elasticsearch已经安装好了。 我使用的是logstash版本7.4.0 Elasticsearch版本7.4.0。 使用其他版本 注意版本一定要一致,版本不一致大概率会出现logstash启动报Failed to install template.异常 ,已经踩坑了。 logstash的配置文件: 接下来 以配置文件启

    2024年02月04日
    浏览(88)
  • logback 自定义log字段(MDC)推送到logstash(spring boot + logback+ logstash)

    直接上代码: 1.创建FIlter,往 MDC 里面追加内容 2.logback配置: includeMdcKeyName 标签 追加 mdc中的key

    2024年02月15日
    浏览(51)
  • 如何在 Ubuntu 14.04 上使用 Rsyslog、Logstash 和 Elasticsearch 实现日志集中管理

    Elastic 的一篇文章 理解组织生成的数百万条日志行可能是一个艰巨的挑战。一方面,这些日志行提供了对应用程序性能、服务器性能指标和安全性的视图。另一方面,日志管理和分析可能非常耗时,这可能会阻碍对这些日益必要的服务的采用。 开源软件,如 rsyslog、Elasticse

    2024年04月11日
    浏览(48)
  • 史上最全从零搭建ELKB(Elasticsearch、Logstash、Kibana、Beat)分布式日志管理可视化平台之一

    ELKB(Elasticsearch、Logstash、Kibana、Beat的组合)是一套开源的分布式日志管理方案。凭借其闭环的日志处理流程、高效的检索性能、线性的扩展能力、较低的运维成本等特点,ELKB在最近几年迅速崛起,成为实时日志处理开源领域的首要选择。(https://cloud.tencent.com/developer/article/1143

    2024年01月19日
    浏览(82)
  • java 分布式微服务配置统一的日志输出包括logstash

    在springcloud分布式微服务中,每个微服务都要配置一个日志输出文件,当微服务多起来的时候,日志输出有变动就要一个一个微服务去修改,这样使工作量增加,变得很麻烦,还有可能出现错误。 对日志文件进行统一的配置处理是个不错的选择。 首先在微服务中有一个基础的

    2024年02月12日
    浏览(49)
  • spring整合logBack日志框架:

    SLF4J(Simple Logging Facade for Java)是一种日志规范,类似于JDBC,我们常用的日志log4j、logback等都实现了这个规范,所以我们可以直接使用SLF4J的规范来使用日志。 它们是同一个作者开发的,logback是重新编写的内核,在一些关键执行的路径上提升了10倍以上。它也支持了一些新的

    2024年02月12日
    浏览(42)
  • Elasticsearch + Logstash + Kibana 日志分析系统搭建

    Elasticsearch、Logstash 和 Kibana 组成了一个开源的日志分析系统简称 ELK Stack。 Elasticsearch: 一个基于 Lucene 的搜索引擎,可以快速存储、检索和分析大量数据 Logstash: 一个日志收集和处理工具,可以将来自不同来源的数据收集到 Elasticsearch 中 Kibana: 一个数据可视化平台,可以实时地

    2024年02月08日
    浏览(44)
  • 日志系统一(elasticsearch+filebeat+logstash+kibana)

    目录 一、es集群部署 安装java环境 部署es集群 安装IK分词器插件 二、filebeat安装(docker方式) 三、logstash部署 四、kibana部署 背景:因业务需求需要将nginx、java、ingress日志进行收集。 架构:filebeat+logstash+es+kibana 服务器规划: 192.168.7.250(es) 192.168.6.216(filebeat,es) 192.168.7

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包