Elk日志系统使用

 

一、我们遇到的问题?

  • 程序运行避免不了出错,测试环境时我们可以通过打断点定位问题。但是上线之后的项目出bug,进行定位时就需要查看日志。但是如果日志量太大,传统的方式效率太过低下了。
  • 咱们的项目是一个分布式的架构,如果上线不同的服务模块部署在不同的服务器,出现问题时,不好定位问题,日志缺少一个统一的管理。

二、Elk是什么?

 ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。是目前主流的一种日志系统。

ELK是由三个工具整合的日志系统(elasticsearch、logstash、kibana)

  • Elasticsearch:是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能,能够快速根据不同的条件找到我们想看到的日志。
  • Logstash:起到的作用是日志收集,各个微服务将日志关联到logstash。
  • kibana:起到的作用是可视化UI界面。查看日志总归是有个图形化界面比较好看实用。

65b99b8c80ea53d7ea4253baa0d47dd5.png

三、ELK怎么在项目中使用

1.添加依赖

<!--ELK的logstash-->
<dependency>       
    <groupId>net.logstash.logback</groupId>       
    <artifactId>logstash-logback-encoder</artifactId>       
    <version>6.2</version>
</dependency>

2.修改配置(在logback.xml中添加以下配置)

<!-- 为logstash输出的JSON格式的Appender -->
    <appender name="logstash"
              class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>localhost:5044</destination>
        <!-- 日志输出编码 -->
        <encoder
                class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <timestamp>
                    <timeZone>UTC</timeZone>
                </timestamp>
                <pattern>
                    <pattern>
                        {
                        "severity": "%level",
                        "service": "${springAppName:-}",
                        "trace": "%X{X-B3-TraceId:-}",
                        "span": "%X{X-B3-SpanId:-}",
                        "exportable": "%X{X-Span-Export:-}",
                        "pid": "${PID:-}",
                        "thread": "%thread",
                        "class": "%logger{40}",
                        "rest": "%message"
                        }
                    </pattern>
                </pattern>
            </providers>
        </encoder>
    </appender>

    <!-- 日志输出级别 -->
    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="logstash" />
        <appender-ref ref="file" />
    </root>

四、服务器端应该做什么操作呢?

4.1修改logstash目录下,conf文件夹中的logstash.conf

添加以下内容

input {#输入
    # Logstash收集TCP/UDP日志
    tcp {
        port => 5044
        #编码
        codec => json_lines
    }
}

output {#输出
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "springboot-elk"
    }
    stdout {#标准输出
        # 将采用Ruby Awsome Print库来解析日志(
通过rubydebug输出键值对)
        codec => rubydebug
    }
}

4.2修改kibana目录下,conf文件夹中的kibana.yml,添加以下配置

elasticsearch.hosts: ["http://localhost:9200"]

五、查看效果

输入kibana控制台访问地址进行效果查看:

  http://localhost:5601/app/kibana

posted @ 2020-11-10 15:19  Fire♪一度  阅读(288)  评论(0编辑  收藏  举报