• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

为你的SpringBoot服务赋高大上的线上日志系统ELK

武飞扬头像
ProgramLife2016
帮助1

前言

日志是一个完整系统必不可少的组件,你会将日志输出到什么地方呢?控制台 or 文件?这些都是比较简单直接的方式,但恐怕都不是好的办法。因为日志数据量巨大,后期问题排查就要抓耳挠腮了。还有,每次抓取日志都远程要到服务器上,既不方便也不符合码农极客精神的追求。所以我们需要的是一个既可以高效搜索又可以随时随地抓取的日志系统,目前业界比较流行的方案是 ELK(Elasticsearch Logstash Kibana)。

ELK搭建

以下 ELK 安装部署都是采用 Docker 容器的方式,不了解 Docker 的朋友需要先去熟悉一下!

ELK镜像拉取

docker pull elasticsearch
docker pull logstash
docker pull kibana

此命令会从 Docker 仓库拉取 ELK 的最新镜像,目前版本是 7.10.2

ELK容器创建

1、Elasticsearch 容器创建运行

docker run --name elasticsearch \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \ # 单节点模式
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ # 初始内存和最大内存
-d elasticsearch

2、Kibana 容器创建运行

docker run --name kibana \
-p 5601:5601 \
-e ELASTICSEARCH_HOSTS=http://部署ES服务IP地址:9200 \
-d kibana

3、Logstash 容器创建运行

创建 /usr/local/docker/logstash/logstash.conf 配置文件,内容为

input {
  tcp {
    mode => "server"
    host => "0.0.0.0"
    port => 4560
  }
}
output {
  elasticsearch {
    hosts => ["部署ES服务IP地址:9200"]
    action => "index"
    codec => json
    index => "today-log-%{ YYYY.MM.dd}"
  }
}
docker run --name logstash \
-p 4560:4560 \
-v /usr/local/docker/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \ # 挂载logstash的配置文件
-d logstash

至此,ELK 的安装部署已经全部完成,看看它们的运行情况吧

docker ps

学新通技术网

SpringBoot输出日志

1、Logstash 依赖

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>5.3</version>
</dependency>

2、创建 src/main/resource/logback-spring.xml 输出日志到 Logstash

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>
<configuration>
    <!--引用默认日志配置-->
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <!--使用默认的控制台日志输出实现-->
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
​
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>部署Logstash服务的IP地址:4560</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <!--自定义日志输出格式-->
                <pattern>
                    <pattern>
                        {
                        "project": "today",
                        "level": "%level",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger",
                        "message": "%message",
                        "stack_trace": "%exception{20}"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>
    
    <root level="INFO">
        <appender-ref ref="LOGSTASH"/>
    </root>
    
</configuration>

访问 Kibana 查看日志

启动 SpringBoot 服务后浏览器访问 Kibana

http://部署Kibana服务IP:5601

学新通技术网

学新通技术网

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanggcafg
系列文章
更多 icon
同类精品
更多 icon
继续加载