SkyWalking自定義鏈路追蹤實現


第一步:POM文件依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>vnacos</artifactId>
        <groupId>com.nacos</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>order</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>

        <!-- ali 連接池 -->
        <druid.version>1.1.9</druid.version>
        <java.version>1.8</java.version>

        <!-- mybatis -->
        <mybatis-plus-boot-starter.version>3.0-RELEASE</mybatis-plus-boot-starter.version>
        <mybatis-spring-boot-starter.version>1.3.2</mybatis-spring-boot-starter.version>
        <mybatis.ehcache.version>1.1.0</mybatis.ehcache.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- ali 連接池依賴 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>

        <!-- mybatis 依賴 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${mybatis-spring-boot-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus-boot-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.caches</groupId>
            <artifactId>mybatis-ehcache</artifactId>
            <version>${mybatis.ehcache.version}</version>
        </dependency>

        <!-- mysql 依賴 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!--nacos-服務注冊發現-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

       <!-- SkyWalking 工具類, 跟服務版本一致 --> <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-trace</artifactId> <version>8.5.0</version> </dependency>

    </dependencies>

    <!--
    項目打包時會將java目錄中的*.xml文件也進行打包

    此處必須添加項目打包,不然會報錯:Invalid bound statement (not found): XXXXXXX
 -->
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>

</project>

第二部:邏輯業務代碼使用注釋

package com.order.service.Impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.order.entity.Emp;
import com.order.mapper.EmpMapper;
import com.order.service.EmpService;
import org.apache.skywalking.apm.toolkit.trace.Tag;
import org.apache.skywalking.apm.toolkit.trace.Tags;
import org.apache.skywalking.apm.toolkit.trace.Trace;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author vn
 * @version 1.0
 * @date 2022/3/17 20:53
 */

@Service
public class EmpServiceImpl extends ServiceImpl<EmpMapper,Emp> implements EmpService {

    @Autowired
    private EmpMapper empMapper;

    @Override
    @Trace @Tags({@Tag(key="selectEmpById",value="returnedObj"), @Tag(key="selectEmpById",value="arg[0]")}) public Emp selectEmpById(Integer id) {
        return empMapper.selectEmpById(id);
    }

    @Override
   @Trace @Tag(key="selectEmp",value="returnedObj") public List<Emp> selectEmp() {
        return empMapper.selectEmp();
    }
}
@Trace將方法加入追蹤鏈路 

如果一個業務方法想在ui界面的跟蹤鏈路上顯示出來,只需要在業務方法上加上@Trace注解即可 @Tags或@Tag 我們還可以為追蹤鏈路增加其他額外的信息,比如記錄參數和返回信息。實現方式:在方法上增加@Tag或者@Tag; @Tag 注解中 key
= 方法名 ; value = returnedObj 返回值 arg[0] 參數

 

 

 


免責聲明!

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



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