如何通过扩展完成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界面如下: