skywalking 鏈路追蹤組件使用


 之前鏈路追蹤的時候簡單的有sleuth, 可以實現每個請求加一個traceId 和 spanId。其只是簡單的對請求鏈路進行追蹤,也基於slf4j的MDC 實現了日志增加輸出鏈路信息,排錯誤的時候可以看到一些路由信息。

  skywalking 比較全面,基於javaagent 探針技術,可以監測的信息比較多,比如鏈路信息、實例信息、數據庫、vm、k8s 等都支持。並且也實現了日志采集以及日志分析。 簡單研究下其使用。

  參考: https://skywalking.apache.org/

1. 下載解壓

我下載的版本是apache-skywalking-apm-bin-es7, 下載解壓后目錄如下:

 2. 修改配置

  修改存儲采用mysql, 在自己的mysql 服務器上創建swtest 數據庫。

  修改%skywalking%/config/application.yml 配置文件。 修改數據源采用mysql: 大概112 行左右, 修改默認數據源采用mysql

storage:
  selector: ${SW_STORAGE:mysql}

修改172 行左右mysql 相關配置(主要是賬號密碼相關)

  mysql:
    properties:
      jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest"}
      dataSource.user: ${SW_DATA_SOURCE_USER:root}
      dataSource.password: ${SW_DATA_SOURCE_PASSWORD:123456}
      dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
      dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
      dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
      dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
    metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
    maxSizeOfArrayColumn: ${SW_STORAGE_MAX_SIZE_OF_ARRAY_COLUMN:20}
    numOfSearchableValuesPerTag: ${SW_STORAGE_NUM_OF_SEARCHABLE_VALUES_PER_TAG:2}

3. 啟動應用

%skywalking%/bin/startup.bat  啟動應用

點擊后可以看到啟動兩個窗口,一個Collector, 一個Webapp

1. Collector

2. Webapp 相關jar 包以及配置在%skywalking%/webapp 目錄下面, 其中的配置可以用於修改web 服務啟動的端口相關信息

訪問8080 端口測試如下:

 4. 應用程序接入sky

  應用程序接入的時候是通過javaagent 代理的時候接入的。 

(1) 網關服務接入

-javaagent:D:\study\skywalking\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar -Dskywalking.agent.service_name=gateway -Dskywalking.collector.backend_service=127.0.0.1:11800 

-javaagent:指定skywalking中的agent中的skywalking-agent.jar的路徑

-Dskywalking.agent.service_name:指定在skywalking中的服務名稱,一般是微服務的spring.application.name

-Dskywalking.collector.backend_service:指定oap服務綁定的地址,我這里是本地,並且oap服務默認的端口是11800,因此只需要配置為127.0.0.1:11800

(2) producer 服務接入

-javaagent:D:\study\skywalking\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar -Dskywalking.agent.service_name=sky-producer -Dskywalking.collector.backend_service=127.0.0.1:11800 

(3) consumer 接入

-javaagent:D:\study\skywalking\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar -Dskywalking.agent.service_name=sky-producer -Dskywalking.collector.backend_service=127.0.0.1:11800 

5. 啟動后訪問后端一些請求查看sky

(1) 查看拓撲圖

 (2) 追蹤: 可以看到一些請求的鏈路信息

 (3) 另外sky 也能追蹤一些Feign 接口以及一些mysql 查詢相關,可以說非常的方便。 比如自己再加入兩個服務,一個payment 服務是調用數據庫查詢,另一個通過OpenFeign 調用該接口,查看追蹤信息如下

 繼續點擊mysql那一條記錄, 可以看到打出相關的mysql 執行的服務器以及語句如下

 (4) 查看儀表盤信息, 儀表盤有各個服務的信息,也有數據庫相關信息

 數據庫信息如下:

 6. 業務系統日志接入skywalking

  業務系統接入日志有兩種方式, 第一種是自己系統內部接入,只是給每個請求接入一個traceId, 想當於一個請求鏈有一個traceId, 但是日志不上報到skywalking 服務器; 第二種就是生成traceId 的同時將日志傳輸到skywalking。

第一種:控制台日志和文件日志加入tid, 便於鏈路追蹤查看日志

1》 pom 文件加入

        <!--skywalking 日志相關-->
        <dependency>
            <groupId>org.apache.skywalking</groupId>
            <artifactId>apm-toolkit-logback-1.x</artifactId>
            <version>8.5.0</version>
        </dependency>

2》 兩個jvm 參數開啟日志插件

producer:

-javaagent:D:\study\skywalking\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar -Dskywalking.agent.service_name=sky-producer -Dskywalking.collector.backend_service=127.0.0.1:11800 -Dskywalking.plugin.toolkit.log.grpc.reporter.server_host=127.0.0.1 -Dskywalking.plugin.toolkit.log.grpc.reporter.server_port=11800

consumer:

-javaagent:D:\study\skywalking\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar -Dskywalking.agent.service_name=sky-consumer -Dskywalking.collector.backend_service=127.0.0.1:11800 -Dskywalking.plugin.toolkit.log.grpc.reporter.server_host=127.0.0.1 -Dskywalking.plugin.toolkit.log.grpc.reporter.server_port=11800

3》 增加logback-spring.xml, 配置如下

producer:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="LOG_HOME" value="d:/logs/"/>
    <property name="APP_NAME" value="sky-producer"/>
    <property name="LOG_FILE_EXPIRE_TIME" value="180"/>
    <property name="LOG_PATTERN"
              value="%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%tid) | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${LOG_PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}${APP_NAME}.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>${LOG_FILE_EXPIRE_TIME}</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${LOG_PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>

</configuration>
View Code

consumer:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <property name="LOG_HOME" value="d:/logs/"/>
    <property name="APP_NAME" value="sky-consumer"/>
    <property name="LOG_FILE_EXPIRE_TIME" value="180"/>
    <property name="LOG_PATTERN"
              value="%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%tid) | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${LOG_PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}${APP_NAME}.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>${LOG_FILE_EXPIRE_TIME}</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <pattern>${LOG_PATTERN}</pattern>
            </layout>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
    </root>

</configuration>
View Code

4》 測試代碼:

sky-producer 服務接口:

package cn.qz.controller;

import cn.qz.cloud.utils.JSONResultUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration;

@RestController
@RequestMapping("/sky-producer")
@Slf4j
public class SkyProducerController {

    @Value("${server.port}")
    private String port;

    @GetMapping("/port")
    public JSONResultUtil<String> port(ServletRequest servletRequest) {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        Enumeration<String> headerNames = request.getHeaderNames();
        while (headerNames.hasMoreElements()) {
            String s = headerNames.nextElement();
            log.info("header: {}, value: {}", s, request.getHeader(s));
        }
        log.info("port: {}", port);
        return JSONResultUtil.successWithData(port);
    }
}

sky-consumer 服務代碼: 通過restTemplate 調用producer 服務

package cn.qz.cloud.controller;

import cn.qz.cloud.utils.JSONResultUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;


@RestController
@RequestMapping("/sky-consumer")
@Slf4j
public class SkyConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @Value("${server.port}")
    private String port;

    @GetMapping("/port")
    public JSONResultUtil<String> port() {
        log.info("port: {}", port);
        return JSONResultUtil.successWithData(port);
    }

    @GetMapping("/producer-port")
    public JSONResultUtil<String> producerPort() {
        JSONResultUtil result = restTemplate.getForObject("http://cloud-skywalking-producer/sky-producer/port", JSONResultUtil.class);
        log.info("producer-port: {}", result.getData());
        return result;
    }
}

5》 測試: 訪問兩次

XXX@XXX-NC01 MINGW64 /e/ideaspace/imc (dev)
$ curl http://localhost:6062/sky-consumer/producer-port
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    52    0    52    0     0   1733      0 --:--:-- --:--:-- --:--:--  1793{"success":true,"code":"200","msg":"","data":"6061"}

XXX@XXX-NC01 MINGW64 /e/ideaspace/imc (dev)
$ curl http://localhost:6062/sky-consumer/producer-port
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    52    0    52    0     0   1793      0 --:--:-- --:--:-- --:--:--  1793{"success":true,"code":"200","msg":"","data":"6061"}

6》 查看日志: 可以看到兩次請求生成的TID 不同

consumer:

2021-12-10 10:59:51 | INFO  | TID:864ed656592848f8802017f8d40db60e.60.16391051914600001 | http-nio-6062-exec-5 | cn.qz.cloud.controller.SkyConsumerController | producer-port: 6061
2021-12-10 11:01:18 | INFO  | TID:864ed656592848f8802017f8d40db60e.58.16391052783780001 | http-nio-6062-exec-3 | cn.qz.cloud.controller.SkyConsumerController | producer-port: 6061

producer:

2021-12-10 10:59:51 | INFO  | TID:864ed656592848f8802017f8d40db60e.60.16391051914600001 | http-nio-6061-exec-2 | cn.qz.controller.SkyProducerController | header: sw8, value: 1-ODY0ZWQ2NTY1OTI4NDhmODgwMjAxN2Y4ZDQwZGI2MGUuNjAuMTYzOTEwNTE5MTQ2MDAwMDE=-ODY0ZWQ2NTY1OTI4NDhmODgwMjAxN2Y4ZDQwZGI2MGUuNjAuMTYzOTEwNTE5MTQ2MDAwMDA=-1-c2t5LWNvbnN1bWVy-NzVjYmIxZDZhYzFiNDIzNGIzNmFjNmMzMWIxN2E4MjlAMTkyLjE2OC45OS4x-e0dFVH0vc2t5LWNvbnN1bWVyL3Byb2R1Y2VyLXBvcnQ=-Y2xvdWQtc2t5d2Fsa2luZy1wcm9kdWNlcjo4MA==
2021-12-10 10:59:51 | INFO  | TID:864ed656592848f8802017f8d40db60e.60.16391051914600001 | http-nio-6061-exec-2 | cn.qz.controller.SkyProducerController | header: sw8-correlation, value: 
2021-12-10 10:59:51 | INFO  | TID:864ed656592848f8802017f8d40db60e.60.16391051914600001 | http-nio-6061-exec-2 | cn.qz.controller.SkyProducerController | header: sw8-x, value: 0-
2021-12-10 10:59:51 | INFO  | TID:864ed656592848f8802017f8d40db60e.60.16391051914600001 | http-nio-6061-exec-2 | cn.qz.controller.SkyProducerController | header: accept, value: application/json, application/*+json
2021-12-10 10:59:51 | INFO  | TID:864ed656592848f8802017f8d40db60e.60.16391051914600001 | http-nio-6061-exec-2 | cn.qz.controller.SkyProducerController | header: user-agent, value: Java/1.8.0_291
2021-12-10 10:59:51 | INFO  | TID:864ed656592848f8802017f8d40db60e.60.16391051914600001 | http-nio-6061-exec-2 | cn.qz.controller.SkyProducerController | header: host, value: localhost:6061
2021-12-10 10:59:51 | INFO  | TID:864ed656592848f8802017f8d40db60e.60.16391051914600001 | http-nio-6061-exec-2 | cn.qz.controller.SkyProducerController | header: connection, value: keep-alive
2021-12-10 10:59:51 | INFO  | TID:864ed656592848f8802017f8d40db60e.60.16391051914600001 | http-nio-6061-exec-2 | cn.qz.controller.SkyProducerController | port: 6061
2021-12-10 11:01:18 | INFO  | TID:864ed656592848f8802017f8d40db60e.58.16391052783780001 | http-nio-6061-exec-4 | cn.qz.controller.SkyProducerController | header: sw8, value: 1-ODY0ZWQ2NTY1OTI4NDhmODgwMjAxN2Y4ZDQwZGI2MGUuNTguMTYzOTEwNTI3ODM3ODAwMDE=-ODY0ZWQ2NTY1OTI4NDhmODgwMjAxN2Y4ZDQwZGI2MGUuNTguMTYzOTEwNTI3ODM3ODAwMDA=-1-c2t5LWNvbnN1bWVy-NzVjYmIxZDZhYzFiNDIzNGIzNmFjNmMzMWIxN2E4MjlAMTkyLjE2OC45OS4x-e0dFVH0vc2t5LWNvbnN1bWVyL3Byb2R1Y2VyLXBvcnQ=-Y2xvdWQtc2t5d2Fsa2luZy1wcm9kdWNlcjo4MA==
2021-12-10 11:01:18 | INFO  | TID:864ed656592848f8802017f8d40db60e.58.16391052783780001 | http-nio-6061-exec-4 | cn.qz.controller.SkyProducerController | header: sw8-correlation, value: 
2021-12-10 11:01:18 | INFO  | TID:864ed656592848f8802017f8d40db60e.58.16391052783780001 | http-nio-6061-exec-4 | cn.qz.controller.SkyProducerController | header: sw8-x, value: 0-
2021-12-10 11:01:18 | INFO  | TID:864ed656592848f8802017f8d40db60e.58.16391052783780001 | http-nio-6061-exec-4 | cn.qz.controller.SkyProducerController | header: accept, value: application/json, application/*+json
2021-12-10 11:01:18 | INFO  | TID:864ed656592848f8802017f8d40db60e.58.16391052783780001 | http-nio-6061-exec-4 | cn.qz.controller.SkyProducerController | header: user-agent, value: Java/1.8.0_291
2021-12-10 11:01:18 | INFO  | TID:864ed656592848f8802017f8d40db60e.58.16391052783780001 | http-nio-6061-exec-4 | cn.qz.controller.SkyProducerController | header: host, value: localhost:6061
2021-12-10 11:01:18 | INFO  | TID:864ed656592848f8802017f8d40db60e.58.16391052783780001 | http-nio-6061-exec-4 | cn.qz.controller.SkyProducerController | header: connection, value: keep-alive
2021-12-10 11:01:18 | INFO  | TID:864ed656592848f8802017f8d40db60e.58.16391052783780001 | http-nio-6061-exec-4 | cn.qz.controller.SkyProducerController | port: 6061

7》 查看文件

  查看本地日志文件可以看到和上面一樣, 有TID相關信息

8》 小結

org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout 源碼:

package org.apache.skywalking.apm.toolkit.log.logback.v1.x;

import ch.qos.logback.classic.PatternLayout;

public class TraceIdPatternLogbackLayout extends PatternLayout {
    public TraceIdPatternLogbackLayout() {
    }

    static {
        defaultConverterMap.put("tid", LogbackPatternConverter.class.getName());
    }
}
View Code

ch.qos.logback.classic.PatternLayout 源碼 可以看到一些默認的配置信息

/**
 * Logback: the reliable, generic, fast and flexible logging framework.
 * Copyright (C) 1999-2015, QOS.ch. All rights reserved.
 *
 * This program and the accompanying materials are dual-licensed under
 * either the terms of the Eclipse Public License v1.0 as published by
 * the Eclipse Foundation
 *
 *   or (per the licensee's choosing)
 *
 * under the terms of the GNU Lesser General Public License version 2.1
 * as published by the Free Software Foundation.
 */
package ch.qos.logback.classic;

import java.util.HashMap;
import java.util.Map;

import ch.qos.logback.classic.pattern.*;
import ch.qos.logback.classic.pattern.color.HighlightingCompositeConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.CoreConstants;
import ch.qos.logback.core.pattern.PatternLayoutBase;
import ch.qos.logback.core.pattern.color.*;
import ch.qos.logback.core.pattern.parser.Parser;

/**
 * <p>
 * A flexible layout configurable with pattern string. The goal of this class is
 * to {@link #format format} a {@link ILoggingEvent} and return the results in a
 * {#link String}. The format of the result depends on the
 * <em>conversion pattern</em>.
 * <p>
 * For more information about this layout, please refer to the online manual at
 * http://logback.qos.ch/manual/layouts.html#PatternLayout
 * 
 */

public class PatternLayout extends PatternLayoutBase<ILoggingEvent> {

    public static final Map<String, String> defaultConverterMap = new HashMap<String, String>();
    public static final String HEADER_PREFIX = "#logback.classic pattern: ";

    static {
        defaultConverterMap.putAll(Parser.DEFAULT_COMPOSITE_CONVERTER_MAP);

        defaultConverterMap.put("d", DateConverter.class.getName());
        defaultConverterMap.put("date", DateConverter.class.getName());

        defaultConverterMap.put("r", RelativeTimeConverter.class.getName());
        defaultConverterMap.put("relative", RelativeTimeConverter.class.getName());

        defaultConverterMap.put("level", LevelConverter.class.getName());
        defaultConverterMap.put("le", LevelConverter.class.getName());
        defaultConverterMap.put("p", LevelConverter.class.getName());

        defaultConverterMap.put("t", ThreadConverter.class.getName());
        defaultConverterMap.put("thread", ThreadConverter.class.getName());

        defaultConverterMap.put("lo", LoggerConverter.class.getName());
        defaultConverterMap.put("logger", LoggerConverter.class.getName());
        defaultConverterMap.put("c", LoggerConverter.class.getName());

        defaultConverterMap.put("m", MessageConverter.class.getName());
        defaultConverterMap.put("msg", MessageConverter.class.getName());
        defaultConverterMap.put("message", MessageConverter.class.getName());

        defaultConverterMap.put("C", ClassOfCallerConverter.class.getName());
        defaultConverterMap.put("class", ClassOfCallerConverter.class.getName());

        defaultConverterMap.put("M", MethodOfCallerConverter.class.getName());
        defaultConverterMap.put("method", MethodOfCallerConverter.class.getName());

        defaultConverterMap.put("L", LineOfCallerConverter.class.getName());
        defaultConverterMap.put("line", LineOfCallerConverter.class.getName());

        defaultConverterMap.put("F", FileOfCallerConverter.class.getName());
        defaultConverterMap.put("file", FileOfCallerConverter.class.getName());

        defaultConverterMap.put("X", MDCConverter.class.getName());
        defaultConverterMap.put("mdc", MDCConverter.class.getName());

        defaultConverterMap.put("ex", ThrowableProxyConverter.class.getName());
        defaultConverterMap.put("exception", ThrowableProxyConverter.class.getName());
        defaultConverterMap.put("rEx", RootCauseFirstThrowableProxyConverter.class.getName());
        defaultConverterMap.put("rootException", RootCauseFirstThrowableProxyConverter.class.getName());
        defaultConverterMap.put("throwable", ThrowableProxyConverter.class.getName());

        defaultConverterMap.put("xEx", ExtendedThrowableProxyConverter.class.getName());
        defaultConverterMap.put("xException", ExtendedThrowableProxyConverter.class.getName());
        defaultConverterMap.put("xThrowable", ExtendedThrowableProxyConverter.class.getName());

        defaultConverterMap.put("nopex", NopThrowableInformationConverter.class.getName());
        defaultConverterMap.put("nopexception", NopThrowableInformationConverter.class.getName());

        defaultConverterMap.put("cn", ContextNameConverter.class.getName());
        defaultConverterMap.put("contextName", ContextNameConverter.class.getName());

        defaultConverterMap.put("caller", CallerDataConverter.class.getName());

        defaultConverterMap.put("marker", MarkerConverter.class.getName());

        defaultConverterMap.put("property", PropertyConverter.class.getName());

        defaultConverterMap.put("n", LineSeparatorConverter.class.getName());

        defaultConverterMap.put("black", BlackCompositeConverter.class.getName());
        defaultConverterMap.put("red", RedCompositeConverter.class.getName());
        defaultConverterMap.put("green", GreenCompositeConverter.class.getName());
        defaultConverterMap.put("yellow", YellowCompositeConverter.class.getName());
        defaultConverterMap.put("blue", BlueCompositeConverter.class.getName());
        defaultConverterMap.put("magenta", MagentaCompositeConverter.class.getName());
        defaultConverterMap.put("cyan", CyanCompositeConverter.class.getName());
        defaultConverterMap.put("white", WhiteCompositeConverter.class.getName());
        defaultConverterMap.put("gray", GrayCompositeConverter.class.getName());
        defaultConverterMap.put("boldRed", BoldRedCompositeConverter.class.getName());
        defaultConverterMap.put("boldGreen", BoldGreenCompositeConverter.class.getName());
        defaultConverterMap.put("boldYellow", BoldYellowCompositeConverter.class.getName());
        defaultConverterMap.put("boldBlue", BoldBlueCompositeConverter.class.getName());
        defaultConverterMap.put("boldMagenta", BoldMagentaCompositeConverter.class.getName());
        defaultConverterMap.put("boldCyan", BoldCyanCompositeConverter.class.getName());
        defaultConverterMap.put("boldWhite", BoldWhiteCompositeConverter.class.getName());
        defaultConverterMap.put("highlight", HighlightingCompositeConverter.class.getName());

        defaultConverterMap.put("lsn", LocalSequenceNumberConverter.class.getName());

    }

    public PatternLayout() {
        this.postCompileProcessor = new EnsureExceptionHandling();
    }

    public Map<String, String> getDefaultConverterMap() {
        return defaultConverterMap;
    }

    public String doLayout(ILoggingEvent event) {
        if (!isStarted()) {
            return CoreConstants.EMPTY_STRING;
        }
        return writeLoopOnConverters(event);
    }

    @Override
    protected String getPresentationHeaderPrefix() {
        return HEADER_PREFIX;
    }
}
View Code

第二種:增加配置, 日志傳輸到skywalking

1》兩個服務 logback-spring.xml 增加配置

    <!--收集到skywalking-->
    <appender name="SKYWALKING" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss} | %-5level | %tid | %thread | %logger | %msg%n
            </pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="SKYWALKING"/>
    </root>

 2》 測試后查看skywalking

 3》 點擊查看日志: 可以看到把本次鏈路的所有日志都搜集到一起了

 4》 查看第一行詳細日志

 5》 到日志頁面根據追蹤ID 進行搜索 (相當於從所有日志中根據TRACEID 進行全局搜索)

6》 mysql 數據表查看

查看mysql 的數據表發現, 日志存在log 表。 比如我們根據traceId 去查詢數據

select  * from log where trace_id = 'cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001'

 

結果如下:

   可以看到里面用的uuid 作為id 和unique_id, 並且有trace_id 和 span_id, 類似於zipkin 的TraceId 和 SpanId。 查看skywalking的依賴包里面也有zipkin 相關的包。

為了驗證數據,我們界面根據traceId 進行搜索,

請求地址為:

http://localhost:8080/graphql

請求參數:

{
  "query": "query queryLogs($condition: LogQueryCondition) {\n    queryLogs(condition: $condition) {\n        logs {\n          serviceName\n          serviceId\n          serviceInstanceName\n          serviceInstanceId\n          endpointName\n          endpointId\n          traceId\n          timestamp\n          contentType\n          content\n          tags {\n            key\n            value\n          }\n        }\n        total\n    }}",
  "variables": {
    "condition": {
      "relatedTrace": {
        "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001"
      },
      "tags": [],
      "paging": {
        "pageNum": 1,
        "pageSize": 22,
        "needTotal": true
      }
    }
  }
}

其返回值如下:

{
    "data": {
        "queryLogs": {
            "logs": [
                {
                    "serviceName": "sky-consumer",
                    "serviceId": "c2t5LWNvbnN1bWVy.1",
                    "serviceInstanceName": "cda0187abe0142159ab6528741af7b80@192.168.99.1",
                    "serviceInstanceId": "c2t5LWNvbnN1bWVy.1_Y2RhMDE4N2FiZTAxNDIxNTlhYjY1Mjg3NDFhZjdiODBAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105963125,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:43 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6062-exec-1 | cn.qz.cloud.controller.SkyConsumerController | producer-port: 6061\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "cn.qz.cloud.controller.SkyConsumerController"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6062-exec-1"
                        }
                    ]
                },
                {
                    "serviceName": "sky-producer",
                    "serviceId": "c2t5LXByb2R1Y2Vy.1",
                    "serviceInstanceName": "a1b1d248c83746d983e90be505350a96@192.168.99.1",
                    "serviceInstanceId": "c2t5LXByb2R1Y2Vy.1_YTFiMWQyNDhjODM3NDZkOTgzZTkwYmU1MDUzNTBhOTZAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962968,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6061-exec-6 | cn.qz.controller.SkyProducerController | port: 6061\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "cn.qz.controller.SkyProducerController"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6061-exec-6"
                        }
                    ]
                },
                {
                    "serviceName": "sky-producer",
                    "serviceId": "c2t5LXByb2R1Y2Vy.1",
                    "serviceInstanceName": "a1b1d248c83746d983e90be505350a96@192.168.99.1",
                    "serviceInstanceId": "c2t5LXByb2R1Y2Vy.1_YTFiMWQyNDhjODM3NDZkOTgzZTkwYmU1MDUzNTBhOTZAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962966,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6061-exec-6 | cn.qz.controller.SkyProducerController | header: connection, value: keep-alive\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "cn.qz.controller.SkyProducerController"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6061-exec-6"
                        }
                    ]
                },
                {
                    "serviceName": "sky-producer",
                    "serviceId": "c2t5LXByb2R1Y2Vy.1",
                    "serviceInstanceName": "a1b1d248c83746d983e90be505350a96@192.168.99.1",
                    "serviceInstanceId": "c2t5LXByb2R1Y2Vy.1_YTFiMWQyNDhjODM3NDZkOTgzZTkwYmU1MDUzNTBhOTZAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962965,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6061-exec-6 | cn.qz.controller.SkyProducerController | header: accept, value: application/json, application/*+json\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "cn.qz.controller.SkyProducerController"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6061-exec-6"
                        }
                    ]
                },
                {
                    "serviceName": "sky-producer",
                    "serviceId": "c2t5LXByb2R1Y2Vy.1",
                    "serviceInstanceName": "a1b1d248c83746d983e90be505350a96@192.168.99.1",
                    "serviceInstanceId": "c2t5LXByb2R1Y2Vy.1_YTFiMWQyNDhjODM3NDZkOTgzZTkwYmU1MDUzNTBhOTZAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962965,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6061-exec-6 | cn.qz.controller.SkyProducerController | header: host, value: localhost:6061\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "cn.qz.controller.SkyProducerController"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6061-exec-6"
                        }
                    ]
                },
                {
                    "serviceName": "sky-producer",
                    "serviceId": "c2t5LXByb2R1Y2Vy.1",
                    "serviceInstanceName": "a1b1d248c83746d983e90be505350a96@192.168.99.1",
                    "serviceInstanceId": "c2t5LXByb2R1Y2Vy.1_YTFiMWQyNDhjODM3NDZkOTgzZTkwYmU1MDUzNTBhOTZAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962965,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6061-exec-6 | cn.qz.controller.SkyProducerController | header: user-agent, value: Java/1.8.0_291\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "cn.qz.controller.SkyProducerController"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6061-exec-6"
                        }
                    ]
                },
                {
                    "serviceName": "sky-producer",
                    "serviceId": "c2t5LXByb2R1Y2Vy.1",
                    "serviceInstanceName": "a1b1d248c83746d983e90be505350a96@192.168.99.1",
                    "serviceInstanceId": "c2t5LXByb2R1Y2Vy.1_YTFiMWQyNDhjODM3NDZkOTgzZTkwYmU1MDUzNTBhOTZAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962964,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6061-exec-6 | cn.qz.controller.SkyProducerController | header: sw8-x, value: 0-\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "cn.qz.controller.SkyProducerController"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6061-exec-6"
                        }
                    ]
                },
                {
                    "serviceName": "sky-producer",
                    "serviceId": "c2t5LXByb2R1Y2Vy.1",
                    "serviceInstanceName": "a1b1d248c83746d983e90be505350a96@192.168.99.1",
                    "serviceInstanceId": "c2t5LXByb2R1Y2Vy.1_YTFiMWQyNDhjODM3NDZkOTgzZTkwYmU1MDUzNTBhOTZAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962963,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6061-exec-6 | cn.qz.controller.SkyProducerController | header: sw8, value: 1-Y2I4NmE5ZTRkOGUxNDRiNmJmMDA1ZTMxMGUwYjJhZjQuNTYuMTYzOTEwNTk2MTYwODAwMDE=-Y2I4NmE5ZTRkOGUxNDRiNmJmMDA1ZTMxMGUwYjJhZjQuNTYuMTYzOTEwNTk2MTYwODAwMDA=-1-c2t5LWNvbnN1bWVy-Y2RhMDE4N2FiZTAxNDIxNTlhYjY1Mjg3NDFhZjdiODBAMTkyLjE2OC45OS4x-e0dFVH0vc2t5LWNvbnN1bWVyL3Byb2R1Y2VyLXBvcnQ=-Y2xvdWQtc2t5d2Fsa2luZy1wcm9kdWNlcjo4MA==\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "cn.qz.controller.SkyProducerController"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6061-exec-6"
                        }
                    ]
                },
                {
                    "serviceName": "sky-producer",
                    "serviceId": "c2t5LXByb2R1Y2Vy.1",
                    "serviceInstanceName": "a1b1d248c83746d983e90be505350a96@192.168.99.1",
                    "serviceInstanceId": "c2t5LXByb2R1Y2Vy.1_YTFiMWQyNDhjODM3NDZkOTgzZTkwYmU1MDUzNTBhOTZAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962963,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6061-exec-6 | cn.qz.controller.SkyProducerController | header: sw8-correlation, value: \r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "cn.qz.controller.SkyProducerController"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6061-exec-6"
                        }
                    ]
                },
                {
                    "serviceName": "sky-producer",
                    "serviceId": "c2t5LXByb2R1Y2Vy.1",
                    "serviceInstanceName": "a1b1d248c83746d983e90be505350a96@192.168.99.1",
                    "serviceInstanceId": "c2t5LXByb2R1Y2Vy.1_YTFiMWQyNDhjODM3NDZkOTgzZTkwYmU1MDUzNTBhOTZAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962757,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6061-exec-6 | org.springframework.web.servlet.DispatcherServlet | Completed initialization in 28 ms\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "org.springframework.web.servlet.DispatcherServlet"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6061-exec-6"
                        }
                    ]
                },
                {
                    "serviceName": "sky-producer",
                    "serviceId": "c2t5LXByb2R1Y2Vy.1",
                    "serviceInstanceName": "a1b1d248c83746d983e90be505350a96@192.168.99.1",
                    "serviceInstanceId": "c2t5LXByb2R1Y2Vy.1_YTFiMWQyNDhjODM3NDZkOTgzZTkwYmU1MDUzNTBhOTZAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962729,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6061-exec-6 | org.springframework.web.servlet.DispatcherServlet | Initializing Servlet 'dispatcherServlet'\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "org.springframework.web.servlet.DispatcherServlet"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6061-exec-6"
                        }
                    ]
                },
                {
                    "serviceName": "sky-producer",
                    "serviceId": "c2t5LXByb2R1Y2Vy.1",
                    "serviceInstanceName": "a1b1d248c83746d983e90be505350a96@192.168.99.1",
                    "serviceInstanceId": "c2t5LXByb2R1Y2Vy.1_YTFiMWQyNDhjODM3NDZkOTgzZTkwYmU1MDUzNTBhOTZAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962725,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6061-exec-6 | org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] | Initializing Spring DispatcherServlet 'dispatcherServlet'\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6061-exec-6"
                        }
                    ]
                },
                {
                    "serviceName": "sky-consumer",
                    "serviceId": "c2t5LWNvbnN1bWVy.1",
                    "serviceInstanceName": "cda0187abe0142159ab6528741af7b80@192.168.99.1",
                    "serviceInstanceId": "c2t5LWNvbnN1bWVy.1_Y2RhMDE4N2FiZTAxNDIxNTlhYjY1Mjg3NDFhZjdiODBAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962466,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6062-exec-1 | com.netflix.loadbalancer.DynamicServerListLoadBalancer | DynamicServerListLoadBalancer for client cloud-skywalking-producer initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=cloud-skywalking-producer,current list of Servers=[localhost:6061],Load balancer stats=Zone stats: {defaultzone=[Zone:defaultzone;\tInstance count:1;\tActive connections count: 0;\tCircuit breaker tripped count: 0;\tActive connections per server: 0.0;]\n},Server stats: [[Server:localhost:6061;\tZone:defaultZone;\tTotal Requests:0;\tSuccessive connection failure:0;\tTotal blackout seconds:0;\tLast connection made:Thu Jan 01 08:00:00 CST 1970;\tFirst connection made: Thu Jan 01 08:00:00 CST 1970;\tActive Connections:0;\ttotal failure count in last (1000) msecs:0;\taverage resp time:0.0;\t90 percentile resp time:0.0;\t95 percentile resp time:0.0;\tmin resp time:0.0;\tmax resp time:0.0;\tstddev resp time:0.0]\n]}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@59d1ae\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "com.netflix.loadbalancer.DynamicServerListLoadBalancer"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6062-exec-1"
                        }
                    ]
                },
                {
                    "serviceName": "sky-consumer",
                    "serviceId": "c2t5LWNvbnN1bWVy.1",
                    "serviceInstanceName": "cda0187abe0142159ab6528741af7b80@192.168.99.1",
                    "serviceInstanceId": "c2t5LWNvbnN1bWVy.1_Y2RhMDE4N2FiZTAxNDIxNTlhYjY1Mjg3NDFhZjdiODBAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962463,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6062-exec-1 | com.netflix.config.ChainedDynamicProperty | Flipping property: cloud-skywalking-producer.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "com.netflix.config.ChainedDynamicProperty"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6062-exec-1"
                        }
                    ]
                },
                {
                    "serviceName": "sky-consumer",
                    "serviceId": "c2t5LWNvbnN1bWVy.1",
                    "serviceInstanceName": "cda0187abe0142159ab6528741af7b80@192.168.99.1",
                    "serviceInstanceId": "c2t5LWNvbnN1bWVy.1_Y2RhMDE4N2FiZTAxNDIxNTlhYjY1Mjg3NDFhZjdiODBAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962404,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6062-exec-1 | com.netflix.loadbalancer.DynamicServerListLoadBalancer | Using serverListUpdater PollingServerListUpdater\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "com.netflix.loadbalancer.DynamicServerListLoadBalancer"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6062-exec-1"
                        }
                    ]
                },
                {
                    "serviceName": "sky-consumer",
                    "serviceId": "c2t5LWNvbnN1bWVy.1",
                    "serviceInstanceName": "cda0187abe0142159ab6528741af7b80@192.168.99.1",
                    "serviceInstanceId": "c2t5LWNvbnN1bWVy.1_Y2RhMDE4N2FiZTAxNDIxNTlhYjY1Mjg3NDFhZjdiODBAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962386,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6062-exec-1 | com.netflix.util.concurrent.ShutdownEnabledTimer | Shutdown hook installed for: NFLoadBalancer-PingTimer-cloud-skywalking-producer\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "com.netflix.util.concurrent.ShutdownEnabledTimer"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6062-exec-1"
                        }
                    ]
                },
                {
                    "serviceName": "sky-consumer",
                    "serviceId": "c2t5LWNvbnN1bWVy.1",
                    "serviceInstanceName": "cda0187abe0142159ab6528741af7b80@192.168.99.1",
                    "serviceInstanceId": "c2t5LWNvbnN1bWVy.1_Y2RhMDE4N2FiZTAxNDIxNTlhYjY1Mjg3NDFhZjdiODBAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962386,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6062-exec-1 | com.netflix.loadbalancer.BaseLoadBalancer | Client: cloud-skywalking-producer instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=cloud-skywalking-producer,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "com.netflix.loadbalancer.BaseLoadBalancer"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6062-exec-1"
                        }
                    ]
                },
                {
                    "serviceName": "sky-consumer",
                    "serviceId": "c2t5LWNvbnN1bWVy.1",
                    "serviceInstanceName": "cda0187abe0142159ab6528741af7b80@192.168.99.1",
                    "serviceInstanceId": "c2t5LWNvbnN1bWVy.1_Y2RhMDE4N2FiZTAxNDIxNTlhYjY1Mjg3NDFhZjdiODBAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105962283,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:42 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6062-exec-1 | com.netflix.config.ChainedDynamicProperty | Flipping property: cloud-skywalking-producer.ribbon.ActiveConnectionsLimit to use NEXT property: niws.loadbalancer.availabilityFilteringRule.activeConnectionsLimit = 2147483647\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "com.netflix.config.ChainedDynamicProperty"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6062-exec-1"
                        }
                    ]
                },
                {
                    "serviceName": "sky-consumer",
                    "serviceId": "c2t5LWNvbnN1bWVy.1",
                    "serviceInstanceName": "cda0187abe0142159ab6528741af7b80@192.168.99.1",
                    "serviceInstanceId": "c2t5LWNvbnN1bWVy.1_Y2RhMDE4N2FiZTAxNDIxNTlhYjY1Mjg3NDFhZjdiODBAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105961657,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:41 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6062-exec-1 | org.springframework.web.servlet.DispatcherServlet | Completed initialization in 21 ms\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "org.springframework.web.servlet.DispatcherServlet"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6062-exec-1"
                        }
                    ]
                },
                {
                    "serviceName": "sky-consumer",
                    "serviceId": "c2t5LWNvbnN1bWVy.1",
                    "serviceInstanceName": "cda0187abe0142159ab6528741af7b80@192.168.99.1",
                    "serviceInstanceId": "c2t5LWNvbnN1bWVy.1_Y2RhMDE4N2FiZTAxNDIxNTlhYjY1Mjg3NDFhZjdiODBAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105961635,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:41 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6062-exec-1 | org.springframework.web.servlet.DispatcherServlet | Initializing Servlet 'dispatcherServlet'\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "org.springframework.web.servlet.DispatcherServlet"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6062-exec-1"
                        }
                    ]
                },
                {
                    "serviceName": "sky-consumer",
                    "serviceId": "c2t5LWNvbnN1bWVy.1",
                    "serviceInstanceName": "cda0187abe0142159ab6528741af7b80@192.168.99.1",
                    "serviceInstanceId": "c2t5LWNvbnN1bWVy.1_Y2RhMDE4N2FiZTAxNDIxNTlhYjY1Mjg3NDFhZjdiODBAMTkyLjE2OC45OS4x",
                    "traceId": "cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001",
                    "timestamp": 1639105961632,
                    "contentType": "TEXT",
                    "content": "2021-12-10 11:12:41 | INFO  | TID:cb86a9e4d8e144b6bf005e310e0b2af4.56.16391059616080001 | http-nio-6062-exec-1 | org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] | Initializing Spring DispatcherServlet 'dispatcherServlet'\r\n",
                    "tags": [
                        {
                            "key": "level",
                            "value": "INFO"
                        },
                        {
                            "key": "logger",
                            "value": "org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]"
                        },
                        {
                            "key": "thread",
                            "value": "http-nio-6062-exec-1"
                        }
                    ]
                }
            ],
            "total": 21
        }
    }
}
View Code

 

  至此完成了skywalking的簡單使用,個人理解如果是日志什么的,還是用ES 做存儲引擎比較好。上面只是學習所以用mysql做的存儲。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM