Springboot中集成ELK进行日志分析

世上唯一不能复制的是时间,唯一不能重演的是人生,唯一不劳而获的是年龄。该怎么走,过什么样的生活,全凭自己的选择和努力。人生很贵,请别浪费!与智者为伍,与良善者同行。Springboot中集成ELK进行日志分析,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

引言

ELK(ElasticSearch分布式搜索引擎、Logstash数据收集处理引擎和Kibana可视化化平台)是在大型后端架构中,一个标准的数据采集方案。

Kibana

Elasticsearch

Logstash

Log Sources

Logs

Logs

Logs

Filter, Parse

Transform

Store, Search

Visualize, Dashboard

Users

Kibana

Parse and Enrich Data

Elasticsearch

Logstash

Application 1

Application 2

Application 3

  • Log Sources:表示各种应用程序(Application 1、Application 2、Application 3)生成的日志数据。
  • Logstash:负责收集、过滤和解析来自各个日志源的数据,然后将其传输到Elasticsearch进行存储和索引。
  • Elasticsearch:作为中央存储和搜索引擎,接收Logstash处理后的日志数据,并提供高效的存储和检索能力。
  • Kibana:可视化和分析工具,用于创建仪表盘、图表和报表,并帮助用户对日志数据进行查询和探索。

其中springboot应用的角色就是Log Sources,进行日志分析集成主要是对接Logstash。主要使用到的是依赖logstash-logback-encoder

集成

Springboot集成

  • 修改maven的依赖配置。
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>7.4</version>
</dependency>
<!-- Your project must also directly depend on either logback-classic or logback-access. For example: -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.3.7</version>
</dependency>

运行时出现 ClassNotFoundException/NoClassDefFoundError/NoSuchMethodError 这些异常可能需要降低logstash-logback-encoder的版本。

  • 修改logback.xml配置文件。
    <appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>127.0.0.1:5044</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"host":"${HOSTNAME}", "appname":"bigdata-air"}</customFields>
        </encoder>
    </appender>

    <root level="INFO">
        <!-- stash输出 -->
        <appender-ref ref="stash" />
    </root>

修改Logstash的pipeline

修改Logstash的管道配置,增加tcp和json解析。

vi logstash/pipeline/logstash.conf

## 增加配置
input {
    tcp {
        port => 5044
        codec => json_lines
    }
}

output {
  elasticsearch {
     hosts => ["http://elasticsearch:9200"]
     index => "app-%{[appname]}-%{+YYYY.MM.dd}"
     user => "test"
     password => "123qazwww.."
  }
  stdout {
  }
}

通过kibana查看日志

  • 选择Management>Kinaba>Index Patterns 菜单
  • 然后Create index pattern
    • index pattern 输入 app-bigdata-air
    • Time Filter field name 选择 currentDateTime
  • 选择Discover菜单即可查看

参考

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/221976.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!