ELK学习笔记(二)

ELK学习笔记(二)

上一篇简单介绍了ELK是什么东西以及简单跑了一个ELK,和写了一个Springboot的demo测试成功。

这一篇将着重介绍一下ELK中Kibana的基本使用方法

spring cloud sleuth

在此先介绍一个本期主题之外的东西。spring cloud sleuth,为什么要介绍这个呢?因为我使用ELK期间发现。我一个请求方法内打印多条日志时候,有时候很难区分这多条日志是不是属于同一次api调用产生。于是就发现了spring cloud sleuthspring cloud sleuthSpring Cloud 生态 中的一个分布式链路追踪组件。它的作用是为 Spring Boot 应用 添加 分布式追踪功能,帮助开发者追踪一次请求在多个微服务之间的调用路径,并提供 日志关联,方便分析问题、优化性能。他可以为你的请求生成TraceId 表示标识整个请求链路。所以我在上期的demo引入尝试了一下由于我用的是Springboot3以上的版本需要引入以下依赖(springboot 2.x 的版本可以网上搜索如何使用)

  • pom文件引入依赖
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-sleuth</artifactId>
			<version>3.1.9</version>
		</dependency>
		<dependency>
			<groupId>io.micrometer</groupId>
			<artifactId>micrometer-tracing</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-actuator-autoconfigure</artifactId>
		</dependency>
		<dependency>
			<groupId>io.micrometer</groupId>
			<artifactId>micrometer-tracing-bridge-brave</artifactId>
		</dependency>
  • 修改上一篇中的logback,定义了日志的打印格式,打印出traceId
<configuration>
    <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>localhost:5044</destination> <!-- Logstash 地址 -->
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <customFields>{"application":"my-service"}</customFields> <!-- 自定义字段 -->
        </encoder>
    </appender>

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [%X{traceId:-}] [%X{spanId:-}] %msg%n
            </pattern>
        </encoder>
    </appender>

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

  • 写一个service多个方法调用来测试日志打印
@Service
@Slf4j
public class TestService {

    public void play1() {
        log.info("play1调用成功");
        play2();
    }


    public void play2() {
        log.info("play2调用成功");
    }

    public void play3() {
        log.info("play3调用成功");
    }
}
  • 在controller里面调用
@RestController
@RequestMapping("/test")
@Slf4j
public class TestController {


    @Resource
    private TestService testService;

    @RequestMapping("test1")
    public Object test1() {
        testService.play1();
        log.info("test1方法调用成功");
        testService.play3();
        return "调用成功";
    }
}
  • 调用测试接口然后查看我们控制台和kibana创建的视图

在这里插入图片描述

可以发现我们同一次调用打印的日志都会有一个相同的traceId,这样我们就可以通过我们的kibana数据视图来快速查询出某次api调用的全过程日志

在这里插入图片描述

在这里插入图片描述

Kibana基本使用

kibana的使用这里主要介绍以下日志的可视化功能,查询,以及统计分析。

  • Available fields:读取的是Elasticsearch的索引,这里我们可以通过kibana直接针对这些索引进行搜索。我们先观察一下我们的kibana界面左侧和实际内容对应的这些Available fields,看哪些fields能够被我们作为统计或者查询来使用,这些索引是可以由我们自己配置的。这个在后续在做介绍

比如level我们可以用来查看各个时间段产生的error日志数量,然后监控到我们系统在哪个时间段产生了错误。及时处理。如下:

我们先写一个在上次的springboot的demo写一个方法打印error日志并调用

@RequestMapping("/test2")
public Object test2() {
    log.error("test2方法调用成功");
    return "SUCCESS";
}

在这里插入图片描述

  • Dashboards:kibana提供的一个可自定义的数据可视化和分析的工具。比如像我们上面说的可能需要统计时间段level为error级别的日志。来分析系统出现错误的分布。或者通过采集其他比如nginx日志,统计接口某个接口,某个模块的接口请求量,来分析用户行为,喜好等。

例:统计时间段level为error的日志数量。1、进入dashboard。2、创建一个dashboard。3、创建visualization。4、选择visualization type kibana提供了很多可视化统计分析类型供我们选择,比如柱状图/条形图,饼图/环形图, 热力图,区域图 等等这些类型的可供我们自定义选择去统计。

1、选择对应的visualization type

在这里插入图片描述

2、设置水平轴数据

在这里插入图片描述

3、设置垂直轴数据,并设置过滤条件。然后保存

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
ELK学习笔记(一)(简单介绍了ELK是什么,做什么的,以及使用docker简单部署一套环境)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值