本文演示如何将Kitex应用接入链路追踪。

前提条件

已开通链路追踪

背景信息

CloudWeGo-Kitex是字节跳动开源的Golang微服务RPC框架,具有高性能、强可扩展的主要特点。其默认支持Thrift、Kitex Protobuf和gRPC消息协议,且支持丰富服务治理能力及扩展能力。

步骤一:接入Kitex

在您的Kitex应用中,添加如下代码。


import (
    "github.com/kitex-contrib/obs-opentelemetry/provider"
    "github.com/kitex-contrib/obs-opentelemetry/tracing"
    // ...
)

func main() {
    // 省略部分初始化代码
    // **接入OpenTelemetry,默认从环境变量配置**
    p := provider.NewOpenTelemetryProvider(
        provider.WithServiceName(constants.NoteServiceName),
        provider.WithEnableMetrics(false),
    )
    defer p.Shutdown(context.Background())

    Init()
    svr := note.NewServer(new(NoteServiceImpl),
        server.WithServerBasicInfo(&rpcinfo.EndpointBasicInfo{ServiceName: constants.NoteServiceName}), // server name
        // ...
        // **注入tracing到server实例中**
        server.WithSuite(tracing.NewServerSuite()),
    )
    err = svr.Run()
    if err != nil {
        klog.Fatal(err)
    }
}

步骤二:获取接入点信息

  1. 登录ARMS控制台,在左侧导航栏选择应用监控 > 应用列表
  2. 应用列表页面顶部选择目标地域,然后单击目标链路追踪应用名称。
    说明 语言列显示Java图标图标的应用为接入应用监控的应用,显示-图标的应用为接入链路追踪的应用。
  3. 在弹出的页面中,单击左侧导航栏上方的返回图标图标,返回上一层。
  4. 在左侧导航栏单击集群配置,然后在右侧页面单击接入点信息页签。
  5. 在页面顶部选择需要接入的地域,然后在集群信息区域打开显示Token开关。
  6. 客户端采集工具区域单击OpenTelemetry
  7. 在下方表格的相关信息列中,获取接入点信息(Endpoint)和鉴权Token(Authentication)。
    Go应用的OT接入点信息

步骤三:部署应用

  1. 如果您使用的是ACK服务,可以在容器服务管理控制台目标集群的工作负载 > 无状态页面创建Deployment。具体操作,请参见创建无状态工作负载Deployment
  2. 根据上文步骤二获取的接入点信息配置如下环境变量,从而上报数据到链路追踪。
    Key 说明 示例值
    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT Trace上报的Endpoint。 http://tracing-analysis-dc-zb.aliyuncs.com:8090
    OTEL_EXPORTER_OTLP_TRACES_HEADERS OTEL上报会带上的Header,用于鉴权。 authentication=cx0xxxxx@285xxxxx_cx0xxxxx@53xxxxx

验证

启动应用并引入流量。

登录ARMS控制台后,在应用监控 > 应用列表页面选择目标应用,查看链路数据。
说明 语言列显示Java图标图标的应用为接入应用监控的应用,显示-图标的应用为接入链路追踪的应用。