专栏首页JavaJourney整活 | 海量日志收集利器之ELK!SpringBoot + ELK走起!

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

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

1安装Logstash

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

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家目录,我们来配置一下环境变量:

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,修改其内容为:

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:

logstash -f $LOGSTASH_HOME/config/logstash-app-search.conf

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

2安装Kibana

依然很easy:

# 下载
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配置文件的下面几项:

# Logstash端口
server.port: 5601
# Logstash的IP地址
server.host: "192.168.242.120"
# ES实例URL
elasticsearch.hosts: ["http://192.168.242.120:9200"]

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

kibana

Kibana启动日志

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

Kibana首页

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

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

<?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。

根据报错信息可以看到,

Could not find an appender named [CONSOLE]

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

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

<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收集的日志:

舒服了!

本次导航结束,休息!

文章分享自微信公众号:
行百里er

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

作者:行百里er
原始发表时间:2021-05-22
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • SpringBoot+Kafka+ELK 完成海量日志收集

    用以获取log中的[%X{hostName}]、[%X{ip}]、[%X{applicationName}]三个字段值

    邓愉悦
  • SpringBoot + Kafka + ELK 完成海量日志收集(超详细)

    用以获取log中的[%X{hostName}]、[%X{ip}]、[%X{applicationName}]三个字段值

    良月柒
  • SpringBoot+Kafka+ELK 完成海量日志收集(超详细)!

    用以获取log中的[%X{hostName}]、[%X{ip}]、[%X{applicationName}]三个字段值

    终码一生
  • SpringBoot 使用 ELK 日志收集之 Kibana 安装

    本文环境是在腾讯云服务器CentOS7.2搭建的,JDK1.8,kibana-5.4.2。

    IT技术小咖
  • SpringBoot 使用 ELK 日志收集之 Logstash 安装

    本文环境是在腾讯云服务器CentOS7.2搭建的,JDK1.8,Logstash-5.4.2。

    IT技术小咖
  • SpringBoot 使用 ELK 日志收集之 Elasticsearch 安装

    本文环境是在腾讯云服务器CentOS7.2搭建的,JDK1.8,elasticsearch-5.4.2。

    IT技术小咖
  • ELK日志分析方案

    1.在微服务服务器上部署Logstash,作为Shipper的角色,对微服务日志文件数据进行数据采集,将采集到的数据输出到Redis消息队列。

    IT技术小咖
  • 漫谈ELK在大数据运维中的应用

    圈子里关于大数据、云计算相关文章和讨论是越来越多,愈演愈烈。行业内企业也争前恐后,群雄逐鹿。而在大数据时代的运维挑站问题也就日渐突出,任重而道远了。本文旨在针对...

    CSDN技术头条
  • 项目实战|史上最简单的springboot 整合elk教程,实现日志收集

    总有测试小姐姐教你紧急刹车,回头做(改)人(bug):AI大师,你这不行啊!(吃瓜群众排排坐,笑歪了嘴)

    AI码师
  • ELK 处理 Spring Boot 日志,妙!

    松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程

    江南一点雨
  • 微服务架构中进行日志采集以及统一处理

    微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈...

    aoho求索
  • 死磕 Elasticsearch 方法论:普通程序员高效精进的 10 大狠招!

    人工智能、大数据快速发展的今天,对于 TB 甚至 PB 级大数据的快速检索已然成为刚需。Elasticsearch 作为开源领域的后起之秀,从2010年至今得到...

    CSDN技术头条
  • 互联网后台开发需要掌握什么?

    互联网后台开发,通常意味着分布式、大数据,涉及到高性能、系统容灾、数据容灾、高可用性、数据一致性等。自从2008年Hadoop在华夏大地蓬勃发展,开源如火山爆...

    一见
  • 大点干!早点散----------ELK企业日志分析系统理论+实战!

    ELK日志分析系统是Logstash、Elasticsearch、Kibana开源软件的集合,对外是作为一个日志管理系统的开源方案,它可以从任何来源、任何格式进...

    不吃小白菜
  • 基于Elastic Stack的海量日志分析平台实践

    随着58集团业务的飞速发展,日志数量也呈现指数级增长。传统的日志处理方案,已不再适用,此时急需一套功能强大、稳定可靠的日志处理系统。

    Spark学习技巧
  • 日志收集组件—Flume、Logstash、Filebeat对比

    数据的价值在于把数据变成行动。这里一个非常重要的过程是数据分析。提到数据分析,大部分人首先想到的都是Hadoop、流计算、机器学习等数据加工的方式。从整个过程来...

    数据社
  • 小记 | 从 0 到 1,看我玩弄千万日志于股掌

    3. 调试程序,和控制台的作用类似,但是控制台中的内容并不会保存到文件中,而日志可以长期保存。

    程序员鱼皮

扫码关注腾讯云开发者

领取腾讯云代金券