Go 探针接入

如果你的服务涉及到 Go,可以参考该文档。本文以 Go gin应用为例讲解如何将 Gin 的endpoints 接入到分布式链路追踪。

前置条件

依赖包与环境安装

  • 环境 go 1.15.4

  • Go agent包可以通过一下方式安装:

go get -u github.com/SkyAPM/go2sky

本文档示例中其他库安装:

//go2sky的gin插件
go get -u github.com/SkyAPM/go2sky-plugins/gin/v3
go get -u github.com/gin-gonic/gin

探针接入

package main

import (
    "log"
    "github.com/SkyAPM/go2sky"
    v3 "github.com/SkyAPM/go2sky-plugins/gin/v3"
    "github.com/SkyAPM/go2sky/reporter"
    "github.com/gin-gonic/gin"
)

func main() {
    /*
    参数说明:
    @serverAddr:SkyWalking 后端收集器地址
    */
    re, err := reporter.NewGRPCReporter("172.16.200.201:11800")
    if err != nil {
        log.Fatalf("new reporter error %v \n", err)
    }
    defer re.Close()
    /*
    参数说明:
    @service 服务名字, 规则:租户Code::namespace(K8S)::服务名,通过 :: 链接。
    @opts 固定格式,一个Reporter的实例
    */
    tracer, err := go2sky.NewTracer("devTenant::dmp-t::go-gin-test", go2sky.WithReporter(re))
    if err != nil {
        log.Fatalf("create tracer error %v \n", err)
    }
    gin.SetMode(gin.ReleaseMode)
    r := gin.New()

    //gin加载go2sky的中间件(插件)实现路径追踪
    r.Use(v3.Middleware(r, tracer))
    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "hi gin",
        })
    })
    r.Run()
}

其他已经实现的插件:

  1. http server & client
  2. gear
  3. go-resty
  4. go-micro
  5. go-restful

配合go agent的插件,使用以上go web框架开发的endpoints可以自动接入到分布式链路追踪。

Copyright © www.daocloud.io 2019 all right reserved,powered by Gitbook修订时间: 2021-01-20 07:03:45

results matching ""

    No results matching ""