文档首页> 函数工作流 FunctionGraph> API参考> 扩展及遥测API> 扩展API> 如何通过扩展完成SkyWalking的对接
更新时间:2023-05-06 GMT+08:00

如何通过扩展完成SkyWalking的对接

通过以下对接SkyWalking的示例帮助您理解如何通过扩展API将函数与监控、可观察性、安全性和监管等工具集成。

当用已编译的语言实现扩展时,在本地编译生成二进制文件;使用非编译的语言实现扩展时,需要把对接第三方平台需要的依赖一起打包上传,且需要函数的运行时兼容。

将skywalking agent直接嵌入到扩展代码中,即可通过扩展完成对函数请求的监控。

示例代码:skywalking-go.zip

func startSkywalkingAgent() {
    r, err := reporter.NewGRPCReporter("10.174.242.117:11800", reporter.WithCDS(100))
    if err != nil {
        log.Fatalf("new reporter error %v \n", err)
        return
    }
    defer r.Close()
    tracer, err := go2sky.NewTracer("testservice", go2sky.WithReporter(r))
    if err != nil {
        log.Fatalf("create tracer error %v \n", err)
        return
    }
    go2sky.SetGlobalTracer(tracer)
    sm, err := httpPlugin.NewServerMiddleware(go2sky.GetGlobalTracer())
    if err != nil {
        log.Fatalf("create server middleware error %v \n", err)
        return
    }
    http.HandleFunc(invokeURL, sm(RequestHandler{}).ServeHTTP)
    http.ListenAndServe(currentExtensionAddr, nil)
}

其中10.174.242.117:11800 用户可以根据自己部署的是sykwalking collector的地址即可,testservice 用户可以根据自己项目服务进行命名。

在本地编译生成二进制文件,将二进制文件和以extension为前缀的.sh文件类型的脚本文件打包上传依赖。扩展依赖包的文件结构如下:

extension -

​ extensionDemo.sh

​Extension # 编译后的二进制文件

成功对接后Service界面如下:

Endpoint界面如下: