
# 如何通过扩展完成SkyWalking的对接
通过以下对接SkyWalking的示例帮助您理解如何通过扩展API将函数与监控、可观察性、安全性和监管等工具集成。
![](https://support.huaweicloud.com/api-functiongraph/public_sys-resources/note_3.0-zh-cn.png)
当用已编译的语言实现扩展时，在本地编译生成二进制文件；使用非编译的语言实现扩展时，需要把对接第三方平台需要的依赖一起打包上传，且需要函数的运行时兼容。
将skywalking agent直接嵌入到扩展代码中，即可通过扩展完成对函数请求的监控。
示例代码：[skywalking-go.zip](https://function-community.obs.cn-north-1.myhuaweicloud.com/sample/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界面如下：
![](https://support.huaweicloud.com/api-functiongraph/zh-cn_image_0000001582005777.png)
Endpoint界面如下：
![](https://support.huaweicloud.com/api-functiongraph/zh-cn_image_0000001531485630.png)
