前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >整活 | 海量日志收集利器之ELK!SpringBoot + ELK走起!

整活 | 海量日志收集利器之ELK!SpringBoot + ELK走起!

作者头像
行百里er
发布2021-06-10 01:33:41
1.3K0
发布2021-06-10 01:33:41
举报
文章被收录于专栏:JavaJourneyJavaJourney

ELK(Elasticsearch,Logstash,Kibana),用来收集日志还有进行日志分析,最后通过可视化UI进行展示。在大量日志产生的项目场景中,ELK是收集、分析日志的利器! 在 这些Elasticsearch 7.10部署的问题,你遇到过吗 这篇文章中,我已经部署过Elasticsearch了,本次导航将完成Logstash和Kibana的部署,并写一个SpringBoot小项目演示ELK的日志收集。

1安装Logstash

ELK三大组件的安装都很简单,几行命令就能搞定:

代码语言:javascript
复制
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.10.2-linux-x86_64.tar.gz

tar -zxvf logstash-7.10.2-linux-x86_64.tar.gz

前面我们安装的Elasticsearch版本是7.10.2,所以Logstash和接下来要安装的Kibana都要安装7.10.2这个版本。

解压完成以后,为了启动时不每次进入到Logstash家目录,我们来配置一下环境变量:

代码语言:javascript
复制
vi ~/.bash_profile
# 在后面添加
export LOGSTASH_HOME=/home/elastic/logstash-7.10.2
export PATH=$PATH:$LOGSTASH_HOME/bin

关于版本问题,ELK令我感觉很爽的一点就是Elastic Stack中的Elasticsearch、Logstash、Kibana这些版本号都是一致的,这其实省去了很多麻烦。 还有下载的时候,如果想下载其他版本,直接在链接上改版本号就可以下载到对应版本的文件。

拷贝一份$LOGSTASH_HOME/config/logstash-sample.conf配置文件,命名为logstash-app-search.conf,修改其内容为:

代码语言:javascript
复制
input {
  tcp {
    # Logstash 作为服务
    mode => "server"
    host => "192.168.242.120"
    # 开放9001端口进行采集日志
    port => 9001
    # 编解码器
    codec => json_lines
  }
}

output {
  elasticsearch {
    # 配置ES的地址
    hosts => ["http://192.168.242.120:9200"]
    # 在ES里产生的index的名称
    index => "app-search-log-collection-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
  stdout {
    codec => rubydebug
  }
}

启动Logstash:

代码语言:javascript
复制
logstash -f $LOGSTASH_HOME/config/logstash-app-search.conf

# 后台启动
# nohup logstash -f $LOGSTASH_HOME/config/logstash-app-search.conf &

2安装Kibana

依然很easy:

代码语言:javascript
复制
# 下载
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.10.2-linux-x86_64.tar.gz

# 解压
tar -zxvf kibana-7.10.2-linux-x86_64.tar.gz

# 重命名
mv kibana-7.10.2-linux-x86_64.tar.gz kibana-7.10.2

# 配置环境变量
# 编辑 ~/.bash_profile
# 最终ELK的环境变量配置
export ES_HOME=/home/elastic/elasticsearch-7.10.2
export KIBANA_HOME=/home/elastic/kibana-7.10.2
export LOGSTASH_HOME=/home/elastic/logstash-7.10.2
export PATH=$PATH:$ES_HOME/bin:$KIBANA_HOME/bin:$LOGSTASH_HOME/bin
# 使之生效
source ~/.bash_profile

先修改$KIBANA_HOME/config/kibana.yml配置文件的下面几项:

代码语言:javascript
复制
# Logstash端口
server.port: 5601
# Logstash的IP地址
server.host: "192.168.242.120"
# ES实例URL
elasticsearch.hosts: ["http://192.168.242.120:9200"]

直接使用如下命令(配置了环境变量的前提下)启动:

代码语言:javascript
复制
kibana

Kibana启动日志

启动成功,访问http://192.168.242.120:5601

Kibana首页

3使用ELK收集SpringBoot项目的Logback日志

主要看一下SpringBoot的日志配置文件logback-spring.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <!-- 在logstash启动文件logstash-app-search.conf中配置的IP地址和端口 -->
        <destination>192.168.242.120:9001</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>

    <root level="INFO">
        <appender-ref ref="LOGSTASH" />
        <appender-ref ref="CONSOLE" />
    </root>
</configuration>

这个配置我是直接从logstash-logback-encoder这个项目的GitHub上拷贝过来的,改了其中的IP地址和端口。

GitHub地址: https://github.com/logstash/logstash-logback-encoder

启动SpringBoot服务:

有错误信息,没有启动成功,这时候我们猜想一下,Logstash的日志中应该会显示这段错误日志,看一下:

Ok,有了,但是这样看还不如直接看SpringBoot的日志呢,没有起到ELK应有的快感,结合Kibana看,先到Index管理页面:

这里看到了已经有在Logstash配置文件配置为index名称了。

创建一个Index Pattern:

这时就能在Discover面板看到日志了:

现在我们根据这个报错信息修复一下,重新启动SpringBoot。

根据报错信息可以看到,

代码语言:javascript
复制
Could not find an appender named [CONSOLE]

原因是logback-spring.xml配置文件中没有配置CONSOLE的appender,补上就行了,或者不需要控制台输出的话删掉<appender-ref ref="CONSOLE" />这一句。

这里为了方便在控制台看,和ELK对比,我们把输出到控制台的也加上:

代码语言:javascript
复制
<property name="pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg %n"/>
<!-- 输出到CONSOLE控制台 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <pattern>${pattern}</pattern>
    </encoder>
</appender>

启动SpringBoot,通过Kibana查看Logstash收集的日志:

舒服了!

本次导航结束,休息!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 行百里er 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1安装Logstash
  • 2安装Kibana
  • 3使用ELK收集SpringBoot项目的Logback日志
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档