tencent cloud

文档反馈

通过 SkyWalking-Go 接入 Go 应用

最后更新时间:2024-06-19 16:31:30
    SkyWalking Go 是 SkyWalking 社区为 Go 应用提供的性能监控方案,可以在不需要修改业务代码的情况下,将 Go 应用接入应用性能监控 APM。关于 SkyWalking Go 的更多信息,请参考 项目文档。SkyWalking Go 对 Go 系常用依赖库和框架,包括 Gin、GORM、gRPC 等,提供了自动埋点,其他支持自动埋点的依赖库和框架请参考 SkyWalking 社区提供的 完整列表

    示例 Demo 应用

    通过如下 Demo 代码,可以启动一个最简单的 HTTP 服务:
    package main
    
    import (
    "net/http"
    )
    func main() {
    http.HandleFunc("/hello", func(writer http.ResponseWriter, request *http.Request) {
    writer.Write([]byte("Hello World from skywalking-go-agent"))
    })
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
    panic(err)
    }
    }

    前置步骤:获取接入点和 Token

    1. 登录 腾讯云可观测平台 控制台。
    2. 在左侧菜单栏中选择应用性能监控 > 应用监控,单击应用列表 > 接入应用
    3. 在右侧弹出的数据接入抽屉框中,单击 Go 语言。
    4. 接入 Go 应用页面,选择您所要接入的地域以及业务系统
    5. 选择接入协议类型SkyWalking
    6. 上报方式选择您所想要的上报方式,获取您的接入点Token
    说明:
    内网上报:使用此上报方式,您的服务需运行在腾讯云 VPC。通过 VPC 直接联通,在避免外网通信的安全风险同时,可以节省上报流量开销。
    外网上报:当您的服务部署在本地或非腾讯云 VPC 内,可以通过此方式上报数据。请注意外网通信存在安全风险,同时也会造成一定上报流量费用。

    接入 Go 应用

    步骤1:下载 Agent

    前往 SkyWalking 下载页,在 Go Agent 栏目,点击 Distribution,下载 tar 格式的 Agent 包,文件名后缀为 tgz
    解包后,得到 bin 目录下的二进制文件,根据当前操作系统选择对应的二进制文件,即为 Agent 文件。例如在 Linux 系统,Agent 文件为 skywalking-go-agent-0.4.0-linux-amd64

    步骤2:安装 Agent

    SkyWalking Go 提供了2种方式安装 Agent,可以选择任一种方式安装:

    Agent 注入方式

    如果您不需要在代码中自定义埋点,可以选择 Agent 注入方式。执行命令如下:
    /path/to/agent -inject /path/to/your/project [-all]
    其中,/path/to/agent 为步骤1中得到的 Agent 文件,/path/to/your/project 为 Go 项目主目录。

    代码依赖方式

    执行如下命令,获得需要的依赖:
    go get github.com/apache/skywalking-go
    在 main 中引入依赖:
    import _ "github.com/apache/skywalking-go"

    步骤3:修改接入 APM 的配置

    从社区的 默认配置文件 获取配置文件模板,保存为文本文件,可以命名为 config.yaml
    修改配置文件,至少需要配置如下3项:
    agent:
    service_name: "<serviceName>" # <serviceName>替换为应用名
    reporter:
    grpc:
    backend_service: "<endpoint>" # <endpoint>替换为上报地址
    authentication: "<token>" # <token>替换为业务系统Token
    对应的字段说明如下:
    <serviceName> :应用名,多个使用相同 serviceName 接入的应用进程,在 APM 中会表现为相同应用下的多个实例。应用名最长63个字符,只能包含小写字母、数字及分隔符“ - ”,且必须以小写字母开头,数字或小写字母结尾。
    <token> :前置步骤中拿到业务系统 Token。
    <endpoint> :前置步骤中拿到的接入点。

    步骤4:基于 SkyWalking-Go 编译项目

    在编译 Go 项目的时候,添加如下参数:
    -toolexec="/path/to/agent" -config /path/to/config.yaml -a
    其中,/path/to/agent 为步骤1中得到的 Agent 文件,/path/to/config.yaml 为步骤3得到的配置文件。
    假设编译的产出物为 test,完整命令为:
    go build -toolexec='/path/to/agent -config /path/to/config.yaml' -a -o test .

    接入验证

    启动 Go 应用后,通过8080端口访问对应的接口,例如 https://localhost:8080/hello,应用就会向 APM 上报处理 HTTP 请求相关的链路数据。在有正常流量的情况下,应用性能监控 > 应用监控 > 应用列表 中将展示接入的应用,应用性能监控 > 应用监控 > 应用详情 > 实例监控中将展示接入的应用实例。由于可观测数据的处理存在一定延时,如果接入后在控制台没有查询到应用或实例,请等待30秒左右。

    自定义链路埋点

    当自动埋点不满足您的场景或者需要增加业务层埋点时,请参考社区的 Tracing API 文档,在代码中添加自定义链路埋点。
    
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持